五部門關(guān)于開展2024年新能源汽車下鄉(xiāng)活動(dòng)的通知
單片機(jī) I2C和SPI通信的不同
單片機(jī) I2C和SPI通信的不同I2C和SPI是兩種不同的通信協(xié)議。聽到協(xié)議,似乎高不可攀,其實(shí)協(xié)議就是人們定義的一個(gè)標(biāo)準(zhǔn)而已,我們只要遵照這個(gè)標(biāo)準(zhǔn)去做事,就可以。比如公司規(guī)定早上
I2C和SPI是兩種不同的通信協(xié)議。
聽到協(xié)議,似乎高不可攀,其實(shí)協(xié)議就是人們定義的一個(gè)標(biāo)準(zhǔn)而已,我們只要遵照這個(gè)標(biāo)準(zhǔn)去做事,就可以。比如公司規(guī)定早上9點(diǎn)上班,我們就9點(diǎn)上班,不然就會(huì)扣薪水,這就是個(gè)協(xié)議。
用I2C通信的芯片常用的就是EEPROM芯片,如Atmel的AT24CXX系列,此外,還有一些其它功能的芯片。用SPI通信的芯片有外置FLASH芯片,同樣,還有其他功能的一些芯片。
I2C通信需要用到兩個(gè)引腳:SDA SCL。SCL是時(shí)鐘引腳,SDA是數(shù)據(jù)引腳。
(這是EEPROM芯片)(這是時(shí)鐘芯片)SPI通信需要3個(gè)引腳或者4個(gè)引腳:CS SCK MOSI MISO。SPI通信芯片的引腳名稱不一定都是這幾個(gè)名稱,可能還有會(huì)別的名稱,但是意思是一樣的,例如MOSI引腳的意思是“主機(jī)輸出從機(jī)輸入”,某個(gè)SPI接口的芯片就有可能會(huì)寫成SDI,因?yàn)檫@個(gè)SPI器件是作為從機(jī)的,所以它的SDI的意思就是“從機(jī)數(shù)據(jù)輸入引腳”。
SPI通信過程為:把CS引腳拉低,然后SCK輸出時(shí)鐘,然后就可以在MOSI引腳上輸出數(shù)據(jù),同時(shí)可以在MISO上獲得數(shù)據(jù)了。
(這是一個(gè)SPI FLASH芯片,DO是MISO,DI是MOSI,CLK是SCK,功能一樣,叫法不一樣而已)(這是一個(gè)SPI接口的ADC芯片,Dout是MISO,DCLOCK就是SCK,這個(gè)芯片有3個(gè)SPI引腳)大部分單片機(jī)上面都會(huì)帶有I2C口和SPI口,有可能還會(huì)有好幾個(gè)I2C口和SPI口。不過,不帶I2C口和SPI口的單片機(jī),也可以通過普通引腳的模擬他們的時(shí)序來(lái)進(jìn)行通信。
而且,如果是初學(xué)者的話,一定要學(xué)習(xí)一下用普通引腳模擬,對(duì)他們的通信本質(zhì)理解更深刻。
通信全程,其實(shí)就是控制引腳高低電平和檢測(cè)引腳高低電平的過程,話說(shuō),控制單片機(jī)的引腳高低電平和檢測(cè)引腳的高低電平,天學(xué)單片機(jī)就會(huì)了,所以,I2C通信和SPI通信也沒什么難的地方。
給大家講一個(gè)簡(jiǎn)單的通信過程,例如我們稱下面的通信名稱為KJLWT,名字是不是看起來(lái)很吊,其實(shí)是“科技老頑童”的拼音首字母,因?yàn)榻酉聛?lái)的協(xié)議是我剛剛發(fā)明的,所以以此命名^_^。主要是讓大家理解,名稱就是用來(lái)嚇唬人的。
我們用兩條線來(lái)通信,一條時(shí)鐘線,一條數(shù)據(jù)線。時(shí)鐘線,其實(shí)就是用來(lái)產(chǎn)生一個(gè)脈沖波形,再說(shuō)的直接一點(diǎn),就是把引腳變高變低的信號(hào),如下圖:
(這就是個(gè)時(shí)鐘信號(hào))例如我們規(guī)定,在時(shí)鐘引腳為高電平的時(shí)候,讀取數(shù)據(jù)引腳的電平,連續(xù)8個(gè)時(shí)鐘,就可以讀到一個(gè)字節(jié)了。那給數(shù)據(jù)的那一端,要怎么給數(shù)據(jù)呢?也很簡(jiǎn)單,給數(shù)據(jù)的那一端,在檢測(cè)到低電平的時(shí)候,就把要發(fā)送的數(shù)據(jù)按照位體現(xiàn)在數(shù)據(jù)引腳上面。例如一個(gè)數(shù)據(jù):0x88,寫成二進(jìn)制以后就是1000 1000。我們來(lái)看一下傳輸這個(gè)數(shù)據(jù)的過程:從機(jī)檢測(cè)時(shí)鐘引腳,檢測(cè)到一個(gè)下降沿(就是從高電平落到了低電平),就把要發(fā)送的數(shù)據(jù)的bit7體現(xiàn)在數(shù)據(jù)引腳上,例如1000 1000的bit7是1,就把數(shù)據(jù)引腳變高電平,主機(jī)在時(shí)鐘引腳的高電平,檢測(cè)這個(gè)數(shù)據(jù)引腳,把這個(gè)位記錄下來(lái),從機(jī)再次發(fā)現(xiàn)時(shí)鐘引腳的下降沿后,再把數(shù)據(jù)的bit6體現(xiàn)在數(shù)據(jù)引腳上,由于1000 1000 的bit6是0,所以從機(jī)把數(shù)據(jù)引腳拉低,然后當(dāng)時(shí)鐘引腳為高電平的時(shí)候,主機(jī)檢測(cè)數(shù)據(jù)引腳的高低電平,再把bit6記錄下來(lái),……以此8次,就可以把一個(gè)字節(jié)由從機(jī)傳輸?shù)街鳈C(jī)了。是不是很簡(jiǎn)單呢?
時(shí)鐘的速率,就是傳輸數(shù)據(jù)的快慢,以上面講的為例,如果脈沖的周期為1秒鐘,也就是1Hz,那么傳輸一個(gè)字節(jié)就需要8秒鐘;如果脈沖的周期為1毫秒,也就是1KHz,那么輸出一個(gè)字節(jié)只需要8毫秒。這下你就理解通信的速率是什么意思了吧?
I2C通信,SPI通信,只不過是在我剛才講的例子上面,又多了一些協(xié)議內(nèi)容。具體的協(xié)議,你們隨便找一個(gè)I2C和SPI通信接口的芯片看一下時(shí)序圖就可以了。我們要做的,就是用單片機(jī)的引腳,把它的時(shí)序做出來(lái)。
-
在 20 米銅纜通信鏈路中使用均衡器和電纜組件2023-03-28
-
三態(tài)開關(guān)接口使用一個(gè)微控制器引腳2023-03-25
-
采用通用串行總線USB技術(shù)的高速數(shù)據(jù)采集卡的設(shè)計(jì)方案2023-03-25
-
使用一個(gè)微控制器輸入引腳讀取多個(gè)開關(guān)和電位器設(shè)置2023-03-25
-
從 PC 的串行端口實(shí)現(xiàn)簡(jiǎn)單的 IR 數(shù)據(jù)傳輸2023-03-24
-
適用于具有 5V 至 36V 輸入的 12V 系統(tǒng)的基于電解電容器的數(shù)據(jù)備份電源解決方案2023-03-23
-
移動(dòng)通信天線中使用變壓器常見3個(gè)難題及解決方案2023-03-16
-
智己數(shù)據(jù)“摻水”,是替行業(yè)潛規(guī)則背了鍋2023-03-15
-
使用外部 PLL 改善 FPGA 通信接口時(shí)鐘抖動(dòng)2023-03-14
-
數(shù)據(jù)存儲(chǔ)在非易失性存儲(chǔ)器中2023-03-07
-
確保電池供電的物聯(lián)網(wǎng)傳感器節(jié)點(diǎn)中的故障安全數(shù)據(jù)存儲(chǔ)2023-03-02
-
電源集成:智能真無(wú)線耳機(jī)設(shè)計(jì)中的通信接口2023-03-01
-
TI - 實(shí)時(shí)控制和通信領(lǐng)域的 IT/OT 融合如何推動(dòng)工業(yè)自動(dòng)化2023-02-27
-
一月社融數(shù)據(jù)公布,報(bào)復(fù)性消費(fèi)沒有如約而至2023-02-14
-
織好智能汽車數(shù)據(jù)安全防護(hù)網(wǎng),任重道遠(yuǎn)2023-01-03