欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
關(guān)于stm32外設(shè)通信協(xié)議的一些總結(jié)(高手繞道)
[打印本頁(yè)]
作者:
電子黑
時(shí)間:
2016-6-29 20:27
標(biāo)題:
關(guān)于stm32外設(shè)通信協(xié)議的一些總結(jié)(高手繞道)
是時(shí)候總結(jié)一下最近所學(xué)的協(xié)議了,就stm32的片內(nèi)外設(shè)資源來(lái)說(shuō),stm32有3個(gè)是關(guān)于通信的:usart、spi 、iic
通過(guò)這次的學(xué)習(xí)和以前學(xué)習(xí)對(duì)比,我發(fā)現(xiàn)一個(gè)極大而又特別讓人忽視的特點(diǎn):那就是“時(shí)序”,因?yàn)橥S多初學(xué)者,對(duì)所謂的時(shí)序表示困惑,不得不承認(rèn) 我也困惑過(guò),甚至不能理解,往往如常人所說(shuō)的腦洞大開(kāi),一個(gè)質(zhì)的飛躍,讓我對(duì)所謂的通信協(xié)議一通百通。在我看來(lái)任何數(shù)字芯片都需要時(shí)序,既然有時(shí)序,那就有時(shí)鐘信號(hào)。所以接下來(lái)要說(shuō)的是關(guān)于stm32的時(shí)序通信(在這里 我僅代表個(gè)人理解成時(shí)序協(xié)議)。
我先說(shuō)說(shuō)
Usart:所謂的同步異步收發(fā)器,通常需要3根線,rx、tx、和GND,有人提出疑問(wèn)了,明明沒(méi)有時(shí)鐘信號(hào)還敢瞎說(shuō),說(shuō)錯(cuò)時(shí)序協(xié)議,又或許嘲笑我?晌覀儾坏貌怀姓J(rèn)一個(gè)事實(shí),在我們配置串口的時(shí)候,波特率的配置其實(shí)就是所謂的時(shí)鐘信號(hào),每秒發(fā)送多少位(或字節(jié)),這就是時(shí)鐘信號(hào).。有人又要問(wèn)了那為什么不把時(shí)鐘信號(hào)單獨(dú)做成時(shí)鐘總線給其他通信設(shè)備,這是我們千萬(wàn)不能被這種死腦筋的人給問(wèn)蒙了,串口通信還要拉出一條時(shí)鐘總線給通信的另一端么?怎么可能需要??通信的另一端也是單片機(jī),要想收到正確的數(shù)據(jù),必須是相同的波特率,這就好像有種無(wú)形的時(shí)鐘總線,只不過(guò)波特率雙方都一樣罷了。還有要說(shuō)的是,在我看來(lái)usart通信協(xié)議最簡(jiǎn)單的時(shí)序,那就是雙方波特率調(diào)成一致、你只要敢發(fā)數(shù)據(jù)我就能收數(shù)據(jù),至于我要不要回答你,我說(shuō)了算,這也就是為啥自定義協(xié)議要用串口通信(如modbus通信協(xié)議),我相信時(shí)序越簡(jiǎn)單的設(shè)備,才會(huì)使用方便的協(xié)議。
再說(shuō)說(shuō)IIC
通常用于讀寫dataflash的一種協(xié)議,當(dāng)然也可以用作單片機(jī)之間的通信協(xié)議,IIC本身就是個(gè)時(shí)序稍微復(fù)雜的協(xié)議。I2C串行總線一般有兩根信號(hào)線,一根是雙向的數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。所有接到I2C總線設(shè)備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設(shè)備的時(shí)鐘線SCL接到總線的SCL上。大家可以看到SCL時(shí)鐘總線,這就是正兒八經(jīng)的時(shí)序協(xié)議,根據(jù)時(shí)鐘信號(hào),進(jìn)行數(shù)據(jù)讀寫,數(shù)據(jù)傳輸是根據(jù)高低電平來(lái)判斷的,所以它就是時(shí)序,在stm32中IIC也屬于外設(shè),不過(guò)我們也可以利用IO口來(lái)模擬IIC,個(gè)人覺(jué)得模擬IIC來(lái)的更好當(dāng)然前提是(你不需要連續(xù)讀取數(shù)據(jù),對(duì)IIC時(shí)序熟悉)。如果需要大量讀寫的flash的話,這是可以利用STM32的DMA通道,這里就不細(xì)講了。
最后來(lái)說(shuō)一說(shuō)
SPI又叫做串行外設(shè)接口,為何這樣說(shuō)呢?首先看過(guò)它的協(xié)議的人都知道,8位或16位數(shù)據(jù)傳輸時(shí)是根據(jù)時(shí)鐘總線高低跳變來(lái)傳輸,主設(shè)備在時(shí)鐘信號(hào)上升沿發(fā)送,而在下降沿接受數(shù)據(jù),SPI既可以全雙工雙向通信,又可以單向通信(此模式下只能主設(shè)備發(fā)送,不接受,而從設(shè)備接受不發(fā)送)。對(duì)于全雙工來(lái)說(shuō),屬于四線制,為啥呢?對(duì)于主設(shè)備,有發(fā)送,要有接受,還有使能,還有個(gè)時(shí)鐘總線(該時(shí)鐘總線只能是主設(shè)備給從設(shè)備,當(dāng)主從切換的時(shí)候也是一樣)。而單向數(shù)據(jù)傳輸只要2根線就可以解決了 我認(rèn)為,sck和SDO。那可以說(shuō)SPI的數(shù)據(jù)交換可就是玩玩全全按照時(shí)鐘信號(hào)的高低電平來(lái)傳輸了,這也就是為什么 我把它也看作是時(shí)序協(xié)議了。至于具體的還是要看時(shí)序協(xié)議。這里需要注意:
通過(guò)以上可以看出,這些協(xié)議都是和時(shí)序有著密不可分的關(guān)系,時(shí)鐘信號(hào)就相當(dāng)于一個(gè)載體。沒(méi)有它,就沒(méi)有數(shù)據(jù)傳輸。
最終我有個(gè)以前的想法得說(shuō)一下,在以前沒(méi)學(xué)過(guò)單片機(jī)通信的時(shí)候,不會(huì)用串口,更沒(méi)有聽(tīng)過(guò)IIC,那時(shí)我假想過(guò)兩個(gè)單片機(jī)的通信可不可以通過(guò)IO口設(shè)置高低電平來(lái)通信呢,其實(shí)我就是想得到一個(gè)標(biāo)志,無(wú)奈用單片機(jī)的IO口輸出高電平,而另一個(gè)單片機(jī)接受這個(gè)電平,如果能收到高電平,那我就任務(wù)這個(gè)標(biāo)志就出現(xiàn)了。其實(shí)現(xiàn)在想想 這并不好笑,這類方式就類似IIC,只不過(guò)高低信號(hào)沒(méi)時(shí)序罷了,我只需檢測(cè)這個(gè)高低信號(hào)就好,其實(shí)IIC也是基于這個(gè)想法而來(lái)的,只不過(guò)為了更規(guī)范,有時(shí)鐘總線,規(guī)定了更詳細(xì)的時(shí)序,這就好比,我們通信可以,必須按照規(guī)約通信。呵呵,基于這些天的突然開(kāi)竅,我覺(jué)得SCCB協(xié)議也是非常簡(jiǎn)單的了?偨Y(jié)完畢,這里再貼出外設(shè)地址 以便日后查詢:
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1