0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【有那么點(diǎn)詳細(xì)的CW32學(xué)習(xí)筆記】IIC接口-主機(jī)發(fā)送

CW32生態(tài)社區(qū) ? 來(lái)源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2024-01-11 09:53 ? 次閱讀

例程鏈接

https://pan.baidu.com/s/1s1XwqDFkO8fK4SRSTKsNhA?pwd=mshk

提取碼 :mshk


本章將介紹CW32的IIC接口,并最終點(diǎn)亮一塊OLED屏幕,如果你對(duì)如何編寫(xiě)各種模塊的驅(qū)動(dòng)代碼束手無(wú)策,那本系列教程的IIC章節(jié)或許能讓你受益匪淺。

Inter-Integrated Circuit Bus,集成電路總線,簡(jiǎn)稱IIC總線。這是一種半雙工同步總線協(xié)議,這個(gè)分類很好地概括了IIC總線的特點(diǎn):

1.作為總線協(xié)議,可以在一根“信息主干道”上接入多個(gè)通信節(jié)點(diǎn)(也就是通信設(shè)備);

2.同一時(shí)間只能有一個(gè)通信節(jié)點(diǎn)能夠在總線上講話;

3.同步傳輸意味著這種傳輸方式至少需要一根時(shí)鐘線;

IIC總線使用2根線來(lái)傳輸信號(hào):時(shí)鐘線和數(shù)據(jù)線,相比于其他的總線協(xié)議,這種傳輸方式更節(jié)省IO資源,由于多數(shù)情況下IIC僅用于同一塊集成電路板上不同模塊之間的通信,所以它并不能傳輸很長(zhǎng)的距離,速度也不是那么快,但硬件布線簡(jiǎn)單,且同一塊電路板都會(huì)使用同一個(gè)電源的正負(fù)極,因此IIC總線相當(dāng)實(shí)用。

本文不會(huì)詳細(xì)介紹IIC總線的時(shí)序,這里只對(duì)其通信流程進(jìn)行概括,并著重介紹數(shù)據(jù)鏈路層的相關(guān)內(nèi)容。從流程上看,IIC總線協(xié)議的通信過(guò)程大致如下。

假設(shè)有A、B兩個(gè)設(shè)備,他們使用IIC總線協(xié)議來(lái)傳遞信息,協(xié)議規(guī)定至少要有一個(gè)設(shè)備作為主機(jī),其他設(shè)備作為從機(jī),IIC是同步通信,協(xié)議規(guī)定主機(jī)來(lái)提供時(shí)鐘,因此只有主機(jī)可以主動(dòng)發(fā)起一次通信。假設(shè)現(xiàn)在A需要向B傳遞一個(gè)信息DATA,那過(guò)程就是這樣:

1.設(shè)備A發(fā)出消息“全體目光向我看齊,我宣布個(gè)事,我要開(kāi)始講話了”;

2.設(shè)備A發(fā)出的“公告”會(huì)被B看到,B作為從機(jī)就會(huì)聽(tīng)A接下來(lái)要說(shuō)什么,從A發(fā)出“公告”開(kāi)始,A就會(huì)占用總線,此時(shí)其他設(shè)備都無(wú)法在數(shù)據(jù)線上發(fā)出消息。

3.設(shè)備A需要繼續(xù)喊話,這第二次喊話,A就需要告知總線上的設(shè)備自己到底要找誰(shuí)發(fā)消息,是廣播給所有人(就像全校演講那樣),還是逮住某個(gè)設(shè)備“私聊”,IIC總線使用從機(jī)地址來(lái)區(qū)分廣播和“私聊”,如果第二次喊話的內(nèi)容是廣播模式專有的“地址碼”(0x00),總線上的所有從機(jī)都會(huì)接收后續(xù)發(fā)出的數(shù)據(jù);如果第二次喊話的內(nèi)容是設(shè)備B專有的“地址碼”(一個(gè)7bit大小的數(shù)字),那這次喊話就是針對(duì)設(shè)備B的,其他的設(shè)備會(huì)發(fā)現(xiàn)點(diǎn)名私聊沒(méi)找到自己,也就會(huì)放棄對(duì)后續(xù)數(shù)據(jù)的接收。

4.假設(shè)設(shè)備A用二次喊話找到設(shè)備B進(jìn)行私聊,待B回應(yīng)一個(gè)應(yīng)答信號(hào)(ACK)之后,A就可以開(kāi)始數(shù)據(jù)的傳輸,每當(dāng)B接收到A傳輸?shù)臄?shù)據(jù),B就會(huì)給A發(fā)出一個(gè)應(yīng)答信號(hào),這個(gè)過(guò)程會(huì)持續(xù)到A完成所有數(shù)據(jù)的傳輸并發(fā)出停止信號(hào)為止——“我的話講完了,你可以掛電話了“。

如果在A不斷向B傳輸數(shù)據(jù)的過(guò)程中,B覺(jué)得自己腦子要炸了,數(shù)據(jù)太多了,需要時(shí)間消化,B可以在回發(fā)應(yīng)答信號(hào)的時(shí)候發(fā)一個(gè)“我收不了了!“(NACK),A在接收到這個(gè)信號(hào)之后,就知道B已經(jīng)接收到極限了,A就不會(huì)再發(fā)數(shù)據(jù)。之后A可以選擇開(kāi)始新一輪的數(shù)據(jù)傳輸(回到過(guò)程1發(fā)起一個(gè)新的”喊話“)或者發(fā)出停止信號(hào)來(lái)直接關(guān)閉這次通信。

我們會(huì)發(fā)現(xiàn)上述過(guò)程存在很多分支選項(xiàng),整個(gè)過(guò)程就像上課一樣,“老師講課學(xué)生都聽(tīng)著“、”老師點(diǎn)名某個(gè)學(xué)生回答問(wèn)題“,下面我們就從具體的格式上來(lái)把上述的抽象過(guò)程給對(duì)應(yīng)上。

格式上看,任何一次完整的IIC通信需要傳輸?shù)臄?shù)據(jù)都是如下的結(jié)構(gòu):

起始信號(hào)+從機(jī)地址|讀寫(xiě)類型+ACK+數(shù)據(jù)0+ACK+數(shù)據(jù)1+ACK+數(shù)據(jù)2+……+數(shù)據(jù)N+ACK+停止信號(hào)

起始信號(hào)=我要開(kāi)始喊話了;

從機(jī)地址|讀寫(xiě)類型=我要找誰(shuí)講話|我要傳達(dá)or索要信息;

ACK=收到?。?/strong>

數(shù)據(jù)N=需要傳達(dá)or索要的信息;

停止信號(hào):我的話講完了;

肯定有小伙伴想問(wèn):“那IIC總線通過(guò)什么方式來(lái)表示這些信號(hào)呢?“,這些內(nèi)容屬于物理層,感興趣的小伙伴可以自行百度。

前半部分主要講解了IIC總線的過(guò)程,下面介紹具體到代碼上,單片機(jī)的IIC接口應(yīng)該如何去使用。

首先登場(chǎng)的還是喜聞樂(lè)見(jiàn)的IO和時(shí)鐘配置,需要注意的是,這里的IO輸出模式需要配置為開(kāi)漏輸出,因?yàn)镮IC接口需要從IO口收發(fā)數(shù)據(jù),讀寫(xiě)都在這一個(gè)IO上,開(kāi)漏輸出就能滿足同時(shí)讀寫(xiě)的需求。

圖片

圖片

對(duì)于IIC的配置其實(shí)相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,配置好波特率(公式在結(jié)構(gòu)體的注釋里面寫(xiě)好了),使能外設(shè),設(shè)置好應(yīng)答規(guī)則,最后開(kāi)啟IIC外設(shè)即可。

接著就是比較重要的部分了,IIC接口的收發(fā)并不是全自動(dòng)的,因?yàn)橐粋€(gè)完整的通信不僅包括發(fā)數(shù)據(jù)(地址、數(shù)據(jù)什么的),還包含收數(shù)據(jù)(啥也不干也得接收ACK信號(hào)),所以IIC通信的每個(gè)部分基本上都是收發(fā)易位的過(guò)程,IIC外設(shè)并不會(huì)自動(dòng)完成這個(gè)復(fù)雜的過(guò)程,每個(gè)部分的信號(hào)是否發(fā)送、以及發(fā)送的情況都需要開(kāi)發(fā)者自己去查看(開(kāi)發(fā)者:改為手動(dòng)操作,全部讓我來(lái)?。?/p>

編者寫(xiě)了幾個(gè)帶自檢功能的IIC函數(shù),這幾個(gè)簡(jiǎn)單的函數(shù)可以滿足驅(qū)動(dòng)OLED的需求。

圖片

編寫(xiě)這四個(gè)函數(shù)可以方便我們后續(xù)對(duì)OLED驅(qū)動(dòng)的開(kāi)發(fā),現(xiàn)在我要詳細(xì)說(shuō)明一下這四個(gè)函數(shù)的內(nèi)在邏輯。

圖片

首先是起始信號(hào),我們可以看到發(fā)起始信號(hào)的函數(shù)顯示打開(kāi)了一個(gè)開(kāi)關(guān),等待某個(gè)標(biāo)志成立之后又關(guān)掉了那個(gè)開(kāi)關(guān),這里結(jié)合手冊(cè)進(jìn)行說(shuō)明。IIC協(xié)議中,起始信號(hào)是“SCL維持高電平,SDA線電平拉低”這一現(xiàn)象,手冊(cè)中也有詳細(xì)描述:

圖片

又由于CW32的IIC接口并不會(huì)在起始信號(hào)發(fā)出之后自動(dòng)停發(fā)起始信號(hào),因此如果不在監(jiān)測(cè)到起始信號(hào)發(fā)出之后關(guān)閉起始信號(hào)的發(fā)送,那么數(shù)據(jù)傳輸就無(wú)法開(kāi)始,IIC設(shè)備會(huì)一直發(fā)送RESTART信號(hào)來(lái)占用總線,通信就會(huì)失敗。

對(duì)于總線的狀態(tài)——“我發(fā)的信號(hào)到底成功發(fā)出去沒(méi)有呢?”,CW32提供了IIC狀態(tài)碼來(lái)指示總線狀態(tài),根據(jù)IIC設(shè)備不同的工作模式,一共會(huì)有26種總線狀態(tài),我們并不會(huì)用到全部的狀態(tài),但可能用到的狀態(tài)都可以放到枚舉類型里面,就像這樣:

圖片

以起始信號(hào)發(fā)送函數(shù)為例,其返回值就是已發(fā)送起始信號(hào)的狀態(tài)碼(0x08),如果起始信號(hào)發(fā)送失敗,死循環(huán)就無(wú)法跳出,程序死機(jī)(雖然實(shí)際上不應(yīng)該這么寫(xiě),此處只做演示,編者就小小地偷一下懶)。

視線來(lái)到發(fā)送從機(jī)地址和讀寫(xiě)指令的函數(shù),就像本文前半部分講的一樣,喊話宣言之后需要指名道姓自己需要私聊的對(duì)象。從機(jī)地址本身只有7bit,占據(jù)整個(gè)字節(jié)的高7位,0號(hào)bit位表示這一次通信是為了傳達(dá)信息還是索取信息,0位為0則傳達(dá)(也就是寫(xiě)),為1則索取(也就是讀)。當(dāng)成功發(fā)送從機(jī)地址這一個(gè)字節(jié)之后,IIC狀態(tài)碼也會(huì)改變,對(duì)比狀態(tài)碼之后即可確認(rèn)從機(jī)地址字節(jié)發(fā)送成功并收到了從機(jī)的ACK信號(hào),這表示從機(jī)確認(rèn)收到了這個(gè)字節(jié)的消息。
圖片7.png

圖片8.png

發(fā)送數(shù)據(jù)的函數(shù)和發(fā)送從機(jī)地址的函數(shù)很相似,只不過(guò)整個(gè)字節(jié)都表示數(shù)據(jù),并沒(méi)有什么獨(dú)特的含義。

最后就是發(fā)送停止信號(hào)的函數(shù),與起始信號(hào)不同,停止信號(hào)成功發(fā)出之后,總線會(huì)進(jìn)入空閑狀態(tài),并且停止信號(hào)使能位會(huì)被硬件自動(dòng)清零。

圖片

捋清邏輯之后,我就要說(shuō)明一個(gè)非常重要的細(xì)節(jié),仔細(xì)觀察會(huì)發(fā)現(xiàn),所有的IIC信號(hào)發(fā)送函數(shù)都有一個(gè)清除中斷標(biāo)志的操作,這里明明不是中斷,為什么要寫(xiě)這個(gè)語(yǔ)句呢?因?yàn)?strong>CW32的IIC接口,其發(fā)送數(shù)據(jù)的觸發(fā)條件,就是中斷標(biāo)志位被清除。 根據(jù)手冊(cè)的描述,只要IIC狀態(tài)碼改變,中斷標(biāo)志位就會(huì)被硬件置位,在開(kāi)啟中斷的情況下,程序會(huì)進(jìn)入中斷服務(wù)函數(shù),如果不開(kāi)啟中斷,程序的執(zhí)行順序不會(huì)改變,這個(gè)標(biāo)志位也就只是一個(gè)發(fā)送開(kāi)關(guān)。

這個(gè)發(fā)送邏輯某種程度上很反直覺(jué),因?yàn)榇蟛糠值?a target="_blank">通信接口,都是拿“數(shù)據(jù)緩沖區(qū)被寫(xiě)入數(shù)據(jù)”來(lái)觸發(fā)發(fā)送行為的,而此處的send函數(shù),均不具備發(fā)送功能,與其叫send_data,不如叫set_data更合適,他們的作用只是把數(shù)據(jù)裝載到IIC的數(shù)據(jù)寄存器,因此如果想要發(fā)送,就需要在清除中斷標(biāo)志位之前將數(shù)據(jù)寫(xiě)入數(shù)據(jù)寄存器。手冊(cè)上也詳細(xì)描述了這一點(diǎn):

圖片

這樣一來(lái),IIC通信就具備基本的發(fā)送功能了,對(duì)于常見(jiàn)的EEPROM讀寫(xiě),CW32的IIC庫(kù)提供了連續(xù)讀寫(xiě)的函數(shù),開(kāi)發(fā)者可以直接使用:

圖片

個(gè)人評(píng)價(jià):大部分人在需要使用IIC的時(shí)候,都會(huì)直接移植軟件模擬的IIC接口,但是在更多的地方,我還是推薦使用硬件IIC,尤其是需要使用IIC大量讀寫(xiě)數(shù)據(jù)的場(chǎng)合。而CW32的IIC接口,在不考慮發(fā)送觸發(fā)與中斷綁定這一反直覺(jué)因素的情況下,其內(nèi)部的處理邏輯相比其他MCU的IIC接口,還是頗具優(yōu)勢(shì)的(讀者可以自行對(duì)比STM32的IIC接口,STM32的IIC讀寫(xiě)邏輯不能完全手動(dòng)操作,效率不夠高),尤其是每次發(fā)送之后,不必要立刻進(jìn)行下一個(gè)字節(jié)的發(fā)送,只要IIC總線還保持在建立狀態(tài),開(kāi)發(fā)者可以在之后一段時(shí)間內(nèi)的任意時(shí)刻發(fā)送下一個(gè)字節(jié),這直接省去了等待發(fā)送完成的時(shí)間(當(dāng)然本文并沒(méi)有采取這種寫(xiě)法),提高了程序整體的運(yùn)行效率。

篇幅有限,下一章將會(huì)介紹如何使用IIC接口編寫(xiě)一個(gè)簡(jiǎn)易的OLED驅(qū)動(dòng)程序。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8355

    瀏覽量

    150517
  • 主機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    970

    瀏覽量

    34963
  • IIC
    IIC
    +關(guān)注

    關(guān)注

    11

    文章

    293

    瀏覽量

    38206
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    172

    瀏覽量

    525
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】單片機(jī)啟動(dòng)\庫(kù)函數(shù)構(gòu)成

    此篇文章是CW32F030C8T6的參考資料,很詳細(xì),適合初學(xué)者。
    的頭像 發(fā)表于 08-10 11:13 ?1011次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】單片機(jī)啟動(dòng)\庫(kù)函數(shù)構(gòu)成

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】通用定時(shí)器——輸出比較

    本章以CW32通用定時(shí)器為例介紹單片機(jī)定時(shí)器的用法。 定時(shí)器是單片機(jī)中一個(gè)非常傳統(tǒng)且重要的外設(shè),定時(shí)器的 本質(zhì)其實(shí)就是一個(gè)計(jì)數(shù)器 ,只不過(guò)被計(jì)數(shù)的對(duì)象是定時(shí)器的時(shí)鐘源。定時(shí)器要正常工作,需要這幾
    的頭像 發(fā)表于 12-28 11:24 ?1236次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】通用定時(shí)器——輸出比較

    CW32移植Free-RTOS】CW32開(kāi)發(fā)者扶持計(jì)劃

    CW32配置Free-RTOS全過(guò)程,CW32開(kāi)發(fā)者扶持計(jì)劃
    的頭像 發(fā)表于 04-18 09:38 ?6016次閱讀
    【<b class='flag-5'>CW32</b>移植Free-RTOS】<b class='flag-5'>CW32</b>開(kāi)發(fā)者扶持計(jì)劃

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】看手冊(cè)配置時(shí)鐘樹(shù)

    本章針對(duì)CW32F030C8T6的時(shí)鐘樹(shù)進(jìn)行詳細(xì)解析,續(xù)第一章啟動(dòng)文件的相關(guān)講解。
    的頭像 發(fā)表于 08-17 14:54 ?887次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】看手冊(cè)配置時(shí)鐘樹(shù)

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】模數(shù)轉(zhuǎn)換器

    來(lái)說(shuō),想要判斷大小就需要有對(duì)比,因此該數(shù)字指示的電壓大小實(shí)際上是一個(gè)比較的結(jié)果。 ADC將需要測(cè)量的電壓信號(hào)Ut與已知電壓的信號(hào)U作比較,并最終輸出一個(gè)數(shù)字表示Ut相當(dāng)于多少比例的U。 接下來(lái)就可以看看CW32的ADC外設(shè)結(jié)構(gòu)框圖了,
    的頭像 發(fā)表于 02-29 09:41 ?681次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】模數(shù)轉(zhuǎn)換器

    【應(yīng)用筆記CW32 自舉程序中使用的 ISP 協(xié)議

    提供的 ISP 模式,通過(guò) UART 串口方便地實(shí)現(xiàn)對(duì) CW32 微控制器片上 FLASH主存儲(chǔ)器的擦除和燒寫(xiě)。本應(yīng)用筆記將介紹如何進(jìn)入 CW32 微控制器 ISP 模式,以及所使用的 ISP 協(xié)議,并
    發(fā)表于 06-06 13:26

    CW32飯盒派開(kāi)發(fā)板試用體驗(yàn)】+初識(shí)CW32飯盒派開(kāi)發(fā)板

    接口,幾乎涉及了我們?nèi)粘TO(shè)計(jì)中的常用模塊。是一款不可多得的開(kāi)發(fā)板。也方便我們調(diào)試其他芯片時(shí),只需要畫(huà)個(gè) 小藍(lán)板 就可以了。 4、吐點(diǎn)槽。 個(gè)人意見(jiàn),不要求大多數(shù)人同意。 CW32飯盒派開(kāi)發(fā)板的底板
    發(fā)表于 05-29 15:51

    應(yīng)用筆記(二)| 武漢芯源CW32自舉程序中使用的ISP協(xié)議

    對(duì)CW32微控制器片上FLASH主存儲(chǔ)器的擦除和燒寫(xiě)。本應(yīng)用筆記將介紹如何進(jìn)入CW32微控制器ISP模式,以及所使用的ISP協(xié)議,并詳細(xì)介紹支持的每個(gè)命令。01目標(biāo)芯片進(jìn)入ISP模式的
    的頭像 發(fā)表于 07-11 16:08 ?1309次閱讀
    應(yīng)用<b class='flag-5'>筆記</b>(二)| 武漢芯源<b class='flag-5'>CW32</b>自舉程序中使用的ISP協(xié)議

    cw32和gd32的區(qū)別

    cw32和gd32的區(qū)別 CW32和GD32是兩種不同的芯片系列,分別由WCH和GigaDevice公司推出,兩者很多不同之處,下面我們來(lái)詳細(xì)介紹。 首先從
    的頭像 發(fā)表于 08-16 11:15 ?1749次閱讀

    應(yīng)用筆記-CW32 自舉程序中使用的 ISP 協(xié)議

    ,通過(guò)UART串口方便地實(shí)現(xiàn)對(duì)CW32微控制器片上FLASH主存儲(chǔ)器的擦除和燒寫(xiě)。本應(yīng)用筆記將介紹如何進(jìn)入CW32微控制器ISP模式,以及所使用的ISP協(xié)議,并詳細(xì)介紹支持的每個(gè)命令。
    發(fā)表于 06-06 13:37 ?7次下載

    基于CW32的物聯(lián)網(wǎng)應(yīng)用

    CW32】基于CW32的物聯(lián)網(wǎng)應(yīng)用
    的頭像 發(fā)表于 11-02 15:55 ?664次閱讀
    基于<b class='flag-5'>CW32</b>的物聯(lián)網(wǎng)應(yīng)用

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】通用異步收發(fā)器—發(fā)送

    本章介紹CW32通用異步收發(fā)器的使用。 雖然大部分時(shí)候會(huì)被簡(jiǎn)單稱為“串口”,但實(shí)際上 用“串口”來(lái)指代UART并不正確 。串口對(duì)應(yīng)并口的概念,在串口通信中,數(shù)據(jù)被以二進(jìn)制形式發(fā)送,并且每次發(fā)送都只
    的頭像 發(fā)表于 11-17 17:30 ?675次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】通用異步收發(fā)器—<b class='flag-5'>發(fā)送</b>篇

    CW32學(xué)習(xí)筆記IIC接口-主機(jī)發(fā)送

    接著就是比較重要的部分了,IIC接口的收發(fā)并不是全自動(dòng)的,因?yàn)橐粋€(gè)完整的通信不僅包括發(fā)數(shù)據(jù)(地址、數(shù)據(jù)什么的),還包含收數(shù)據(jù)(啥也不干也得接收ACK信號(hào)),所以IIC通信的每個(gè)部分基本上都是收發(fā)易位的過(guò)程,
    的頭像 發(fā)表于 01-10 15:59 ?551次閱讀
    【<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】<b class='flag-5'>IIC</b><b class='flag-5'>接口</b>-<b class='flag-5'>主機(jī)</b><b class='flag-5'>發(fā)送</b>

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記IIC接口-OLED驅(qū)動(dòng)

    ,實(shí)際上就是密集LED點(diǎn)陣,所以必定有用于控制大量LED燈的驅(qū)動(dòng)器,本教學(xué)使用的OLED驅(qū)動(dòng)是SSD1306,該驅(qū)動(dòng)器多種通信接口,這里使用IIC接口(具體使用什么
    的頭像 發(fā)表于 01-11 09:49 ?621次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】<b class='flag-5'>IIC</b><b class='flag-5'>接口</b>-OLED驅(qū)動(dòng)

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】ADC“自動(dòng)模式”

    上個(gè)章節(jié)介紹了ADC的基本框架和用法,本章節(jié)會(huì)較為全面地講解如何靈活地使用ADC功能。 通常來(lái)說(shuō),外設(shè)執(zhí)行的各種命令都是由CPU發(fā)出的,比如我們需要進(jìn)行AD轉(zhuǎn)換,就通過(guò)某個(gè)寄存器標(biāo)志位啟動(dòng)ADC,隨后用判斷函數(shù)去檢測(cè)執(zhí)行情況,亦或是開(kāi)啟中斷功能,轉(zhuǎn)換完成之后會(huì)提示CPU,再由CPU判斷接下來(lái)該做什么。 這當(dāng)然沒(méi)問(wèn)題,不過(guò)有些時(shí)候,我們需要實(shí)現(xiàn)一些循環(huán)重復(fù)的功能,比如在做傅里葉分析的時(shí)候,需要按照固定間隔采集一定數(shù)量的數(shù)據(jù),比如采
    的頭像 發(fā)表于 03-04 18:09 ?823次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】ADC“自動(dòng)模式”