chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

UART/I2C/SPI/1-wire四大通信接口

GReq_mcu168 ? 來源:玩轉(zhuǎn)單片機(jī) ? 作者:玩轉(zhuǎn)單片機(jī) ? 2020-12-09 16:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、 裘千丈輕功水上漂之UART

射雕英雄傳中的裘千丈說,UART就是我的輕功水上漂過河。想從河上過(通信),提前布暗樁,行走時(shí)步伐按樁距固定(波特率提前確定),步幅太大或太小都會(huì)落水。為了不被二弟裘千仞識破,可以安排侍衛(wèi)在對岸監(jiān)視通知,沒風(fēng)險(xiǎn)才開始表演(流控)。為了保證踩點(diǎn)準(zhǔn)確,隔一段距離定個(gè)特殊標(biāo)記的粗木樁。UART 通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通信雙方接三根線,RX、TX和GND,TX用于發(fā)送數(shù)據(jù),RX用于接受數(shù)據(jù),雙方收發(fā)交叉對接,支持全雙工方式。

b6a64332-2e2b-11eb-a64d-12bb97331649.jpg

因?yàn)闆]有時(shí)鐘控制,什么時(shí)機(jī)開始發(fā)數(shù)據(jù),且保證對方正確接收?

b6eb420c-2e2b-11eb-a64d-12bb97331649.jpg

如A發(fā)數(shù)據(jù)到B,平時(shí)空閑時(shí)A.TX 和 B.RX.保持1,當(dāng)A.TX先發(fā)0作為起始位,告訴B請注意,我要發(fā)數(shù)據(jù)了。然后就開始發(fā)數(shù)據(jù),數(shù)據(jù)位可配置,通常是5位,6位,7位,8位,一幀數(shù)據(jù)發(fā)完后,A.TX給個(gè)高電平告訴B.RX我發(fā)完了一幀。如果開啟校驗(yàn)位,在發(fā)停止位之前發(fā)送個(gè)校驗(yàn)位,一般都不需要校驗(yàn)位了,短距離有線傳輸出錯(cuò)的概率非常小。如果還有數(shù)據(jù),則重復(fù)前面的操作。

一般軟件配置串口,有波特率,數(shù)據(jù)位、停止位、校驗(yàn)位、流控。分別表示傳輸速度,一幀數(shù)據(jù)的長度,以及發(fā)完告知停止,發(fā)完是否校驗(yàn),是否進(jìn)行發(fā)送控制。看起來參數(shù)很多,針對個(gè)人經(jīng)驗(yàn),一般都是固定8位數(shù)據(jù)位,1位停止位、無校驗(yàn)、無流控,只是配置波特率。

UART沒有時(shí)鐘控制數(shù)據(jù)捕獲時(shí)機(jī),依靠通信前就定義波特率,雙方按定義的頻率讀寫數(shù)據(jù)位,正如裘千丈的水上漂,一旦暗樁安裝固定,就得按固定的步長行走,否則就會(huì)出錯(cuò)落水。

UART在水上漂項(xiàng)目可以,但是傳輸效率有限,一般高到921600,如果再高可能出現(xiàn)誤碼,繼續(xù)加高,就是高空飛行,最后裘千丈就是期望在高空也行走自如,想攀上黃蓉乘坐的大雕逃命,不慎墜落,死于飛行事故。

2、叫你一聲你敢答應(yīng)嗎之I2C

作為太上老君看銀爐的童子,銀角大王最懂I2C,萬千人中我叫你一聲,你答應(yīng)了就倒霉(從機(jī)地址正確才能通信)。IIC(Inter Integrated Circuit)兩根線,一條時(shí)鐘線SCL和一條數(shù)據(jù)線SDA,所以是半雙工通信,主從模式,支持一對多,一個(gè)銀角大王可以對付一群猴子,每個(gè)猴子名字不同(從設(shè)備的I2C地址不同),點(diǎn)名叫到誰,誰就被紫金葫蘆帶走。

b7367f1a-2e2b-11eb-a64d-12bb97331649.png

假設(shè)主機(jī)A給從機(jī)B發(fā)數(shù)據(jù)(A.SCL接B.SCL,A.SDA接B.SDA),根據(jù)應(yīng)用,A可以同時(shí)接B,C,D??臻e時(shí)SDA和SCL上的電平都為高電平。

起始和停止起始條件S:當(dāng)SCL高電平時(shí),SDA由高電平向低電平轉(zhuǎn)換;停止條件P:當(dāng)SCL高電平時(shí),SDA由低電平向高電平轉(zhuǎn)換。起始和停止條件一般由主機(jī)產(chǎn)生,總線在起始條件后處于busy的狀態(tài),在停止條件的某段時(shí)間后,總線才再次處于空閑狀態(tài)。

b7775dc8-2e2b-11eb-a64d-12bb97331649.png

空閑時(shí)SDA和SCL上的電平都為高電平。A先把SDA拉低,等SDA變?yōu)榈碗娖胶笤侔裇CL拉低(以上兩個(gè)動(dòng)作構(gòu)成了I2C的起始位),此時(shí)SDA就可以發(fā)送數(shù)據(jù)了,與此同時(shí),SCL發(fā)送一定周期的脈沖,SDA發(fā)送數(shù)據(jù)和SCL發(fā)送脈沖的要符合的關(guān)系是:SDA必須在SCL是高電平時(shí)保持有效,在SCL是低電平時(shí)發(fā)送下一位(SCL會(huì)在上升沿對SDA進(jìn)行采樣)。

傳輸與響應(yīng)一次傳8位數(shù)據(jù),8位數(shù)據(jù)傳輸結(jié)束后A釋放SDA,SCL再發(fā)一個(gè)脈沖(這是第九個(gè)脈沖),觸發(fā)B將SDA置為低電平表示確認(rèn)(該低電平稱為ACK)。最后SCL先變?yōu)楦唠娖?,SDA再變?yōu)楦唠娖剑ㄒ陨蟽蓚€(gè)動(dòng)作稱為結(jié)束標(biāo)志),如果B沒有將SDA置為0 ,則A停止發(fā)送下一幀數(shù)據(jù).。

整體時(shí)序I2C總線上的每個(gè)設(shè)備都有唯一地址,數(shù)據(jù)包傳輸時(shí)先發(fā)送地址位,接著才是數(shù)據(jù)。一個(gè)地址字節(jié)由7個(gè)地址位(可以掛128個(gè)設(shè)備)和1個(gè)指示位組成(7位尋址模式),0表示寫,1表示讀。一般芯片手冊I2C地址都是7位地址,有些與某個(gè)引腳的電平相關(guān),主機(jī)控制最后讀寫位。

實(shí)際項(xiàng)目一般都是采用I2C庫,有的庫要求傳入的是8位的寫的地址,有的是7位,由接口函數(shù)再區(qū)分讀寫補(bǔ)位。當(dāng)然,最愚蠢的辦法是從0到255定時(shí)循環(huán)讀某個(gè)寄存器地址,讀到正確值時(shí)的地址就是正確的從機(jī)地址。

一般情況下使用I2C庫,除了配置從機(jī)地址,其他的起始、結(jié)束等時(shí)序等其實(shí)不太關(guān)注,只需要配置時(shí)鐘頻率,一般看從機(jī)最大支持多少,以及主機(jī)的系統(tǒng)時(shí)鐘,太高會(huì)偶爾出現(xiàn)錯(cuò)誤,再?zèng)]有時(shí)間要求的情況下,時(shí)鐘越低越穩(wěn)定。

3、慕容復(fù)斗轉(zhuǎn)星移之SPI

天龍八部的慕容復(fù):雖然我不如喬峰可以使出降龍十八掌,但是他對我出手,我也以彼之道還施彼身,對方輸出時(shí)也會(huì)被反噬,互相傷害,他停止時(shí)鐘我也無可奈何。正如SPI,主機(jī)開啟了時(shí)鐘發(fā)數(shù)據(jù),從機(jī)也在同時(shí)輸出,時(shí)鐘停,大家都收手。SPI 串行外設(shè)接口(Serial Peripheral Interface)主從模式,一種高速的,全雙工同步的通信總線。標(biāo)準(zhǔn)SPI是4條線。SDI(數(shù)據(jù)輸入)、SDO(數(shù)據(jù)輸出)、SCLK(時(shí)鐘)、CS(片選,有些也稱為SS)。

b82111d8-2e2b-11eb-a64d-12bb97331649.png

SDO/MOSI – 主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入 ,master output slave input;SDI/MISO – 主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出,master input slave output;SCLK – 時(shí)鐘信號,由主設(shè)備產(chǎn)生;CS/SS – 從設(shè)備使能信號,由主設(shè)備控制。當(dāng)有多個(gè)從設(shè)備的時(shí)候,主設(shè)備通過片選引腳選擇其中一個(gè)從設(shè)備進(jìn)行通信。(I2C是通過軟件協(xié)議實(shí)現(xiàn)多選一,SPI是通過硬件實(shí)現(xiàn))。

b8a12eae-2e2b-11eb-a64d-12bb97331649.png

當(dāng)主機(jī)控制CS,開啟時(shí)鐘閘門,主從雙方就可以開始放數(shù)據(jù)位或者取數(shù)據(jù)位進(jìn)行交互了,但是在什么時(shí)機(jī)開始,就有標(biāo)準(zhǔn)了。根據(jù)外設(shè)工作要求,其輸出串行同步時(shí)鐘極性和相位可以進(jìn)行配置。CPOL:時(shí)鐘極性選擇,為0時(shí)SPI總線空閑為低電平,為1時(shí)SPI總線空閑為高電平 CPHA:時(shí)鐘相位選擇,為0時(shí)在SCK第一個(gè)跳變沿采樣,為1時(shí)在SCK第二個(gè)跳變沿采樣

mode CPOL CPHA
0 0 0
1 0 1
2 1 0
3 1 1

這樣就有四種模式。以模式1為例,空閑時(shí)為低,第一次時(shí)鐘跳變采樣,也就是上升沿讀數(shù)采樣,對著下降沿放數(shù)據(jù)。如果實(shí)在分不清,還有愚蠢的辦法,四種模式全部嘗試一次,就可知道正確模式。

SPI傳輸數(shù)據(jù)沒有位數(shù)限制,只要定義收發(fā)高位在前還是低位在前,可以持續(xù)高速傳輸。

正如前面,若是喬峰收手,慕容復(fù)就沒法使出降龍十八掌的效果,但是他可以當(dāng)面罵喬峰是契丹狗,喬峰一怒之下就發(fā)功,慕容復(fù)就奸計(jì)得逞。這契丹狗三字翻譯為軟件術(shù)語就是觸發(fā)中斷,從機(jī)發(fā)中斷告知主機(jī)我有事來找我;主機(jī)定時(shí)查詢也可實(shí)現(xiàn),只是使用情況更少。

4、裘千尺的吐棗核絕技與1-wire

裘千丈的三妹裘千尺被囚地下,她以口噴射棗核釘打在棗樹,樹的搖晃就會(huì)掉下棗子充饑。這棗核釘是單向操作,用力過猛,棗核透過棗樹,用力太輕或者射偏了,棗樹沒有反應(yīng),這樣棗核用完了就悲劇了??梢娺@絕技,看起來簡便,實(shí)則背后隱藏了精確控制,對時(shí)機(jī)、位置控制要完美,如1-wire通信,單線控制,時(shí)鐘精準(zhǔn)。1-wire總線接口簡單,一根線就可以,一般內(nèi)部開漏輸出,外部硬件上拉。

b8f2294e-2e2b-11eb-a64d-12bb97331649.png

1-wire使用一條線來傳送的四種信令組成,包括復(fù)位脈沖和在線應(yīng)答脈沖的復(fù)位序列、寫 0 時(shí)隙、寫 1 時(shí)隙、讀時(shí)隙。除在線應(yīng)答脈沖以外,所有其它信號都由總線主機(jī)發(fā)出,并且發(fā)送的所有數(shù)據(jù)和命令都是字節(jié)的低位在前。主機(jī)與從機(jī)的數(shù)據(jù)通信是通過時(shí)隙完成的,在每個(gè)時(shí)隙只能傳送一位數(shù)據(jù)。通過寫時(shí)隙可把數(shù)據(jù)從主機(jī)傳送給從機(jī),通過讀時(shí)隙可把數(shù)據(jù)由從器件傳送給主機(jī),將完成一位傳輸?shù)臅r(shí)間稱為一個(gè)時(shí)隙。

一般操作流程參考外設(shè)芯片手冊,主要是不同平臺(tái)的延時(shí)處理,需要軟件實(shí)現(xiàn)1us延時(shí)的接口,否則數(shù)據(jù)通信異常。

5、秘籍功法

四種接口,每個(gè)都有合適的應(yīng)用場景,對硬件端口的占用、對軟件的控制要求、通信效率也不相同。尤其前3種屬于常用協(xié)議,一般都支持硬件接口,廠家也一般提供hal庫,對軟件開發(fā)人員的要求逐漸降低。這也導(dǎo)致代碼應(yīng)用很溜,實(shí)際底層原理略微欠缺,一旦通信異常或者有特殊需求就無從下手。如使用GPIO模擬出UART,使用SPI實(shí)現(xiàn)AT功能。

武林人士一般都追求失傳的武林秘籍,正如軟件開發(fā)人員,有問題總是寄希望與其他人的經(jīng)驗(yàn)總結(jié),或者廠家的技術(shù)支持或源碼,而不是創(chuàng)造新的功法。笑傲江湖的岳不群本是華山派掌門,精通紫霞神功,武功屬于一流,但是沒繼續(xù)專研自家內(nèi)功,為了辟邪劍譜自宮了,軟件開發(fā)人員想重蹈覆轍么?

不論劍宗、氣宗,先把功能跑通再反推代碼原理和實(shí)現(xiàn)流程,還是先理清時(shí)序和原理再編碼實(shí)現(xiàn)功能,短期內(nèi)劍宗效率高,加工資快;氣宗則可能被淘汰,尤其在勢利的小公司,不注重新人培養(yǎng)。如果合二為一,項(xiàng)目緊急則拿來就用,空閑時(shí)專研總結(jié),取長補(bǔ)短,則是完美開發(fā)人員的素質(zhì)。

軟件開發(fā)沒有秘笈功法,全靠個(gè)人學(xué)習(xí)總結(jié)。


責(zé)任編輯:lq

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

    關(guān)注

    28

    文章

    1543

    瀏覽量

    129780
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1286

    瀏覽量

    105511
  • 高電平
    +關(guān)注

    關(guān)注

    6

    文章

    224

    瀏覽量

    22528

原文標(biāo)題:神解釋:UART/I2C/SPI/1-wire四大通信接口

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    深入剖析I2C協(xié)議

    I2C是由Philips開發(fā)的簡單的雙向兩線總線,在深入淺出理解SPI協(xié)議中,我們區(qū)分了單工,半雙工,全雙工協(xié)議數(shù)據(jù)流向的區(qū)別,根據(jù)特征,I2C協(xié)議屬于半雙工協(xié)議(即同一時(shí)刻,數(shù)據(jù)單向流動(dòng))。此外
    的頭像 發(fā)表于 08-21 15:10 ?2731次閱讀
    深入剖析<b class='flag-5'>I2C</b>協(xié)議

    DS2475帶1-Wire主機(jī)的DeepCover ECDSA協(xié)處理器技術(shù)手冊

    處理器無需生成時(shí)間關(guān)鍵型1-Wire波形。DS2475直接與標(biāo)準(zhǔn)(最大值:100kHz)或快速(最大值:400kHz)I2C主機(jī)進(jìn)行接口。不使用時(shí),DS2475可以進(jìn)入功耗超低的睡眠模式。
    的頭像 發(fā)表于 05-14 11:17 ?529次閱讀
    DS2475帶<b class='flag-5'>1-Wire</b>主機(jī)的DeepCover ECDSA協(xié)處理器技術(shù)手冊

    簡單了解I2C接口

    在電子電路的復(fù)雜世界里,各種電路模塊設(shè)備需要相互通信才能協(xié)同工作 ,I2C接口就像是電路模塊設(shè)備間的溝通橋梁,今天就帶大家深入了解它。
    的頭像 發(fā)表于 05-08 14:15 ?1609次閱讀
    簡單了解<b class='flag-5'>I2C</b><b class='flag-5'>接口</b>

    DS2431 1024位1-Wire EEPROM技術(shù)手冊

    DS2431是一款1024位1-Wire? EEPROM芯片,由頁存儲(chǔ)區(qū)組成,每頁256位。數(shù)據(jù)先被寫入一個(gè)8字節(jié)暫存器中,經(jīng)校驗(yàn)后復(fù)制到EEPROM存儲(chǔ)器。該器件的特點(diǎn)是,頁存儲(chǔ)區(qū)相互獨(dú)立
    的頭像 發(fā)表于 02-26 15:38 ?1328次閱讀
    DS2431 1024位<b class='flag-5'>1-Wire</b> EEPROM技術(shù)手冊

    DS2413系列雙通道可編程1-Wire芯片技術(shù)手冊

    應(yīng)用中提供高級的容錯(cuò)能力,1-Wire I/O和PIO引腳能夠連續(xù)承受的電壓最大值為28V。DS2413的通信與操作由單觸點(diǎn)的Maxim 1-Wire串行
    的頭像 發(fā)表于 02-26 15:12 ?788次閱讀
    DS2413系列雙通道可編程<b class='flag-5'>1-Wire</b>芯片技術(shù)手冊

    【干貨】帶你了解各類串口:I2C、SPI、RS232、RS485、USB等

    、SPI、RS232、RS422、RS485及USB。1I2C接口I2C接口是一種主要應(yīng)用于集成電路芯片間的
    的頭像 發(fā)表于 02-20 19:31 ?2079次閱讀
    【干貨】帶你了解各類串口:<b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>、RS232、RS485、USB等

    I2C總線通信原理 如何設(shè)計(jì)I2C總線電路

    、高效的通信接口標(biāo)準(zhǔn)。I2C總線通信原理主要包括以下要點(diǎn): 總線結(jié)構(gòu) : I2C總線僅使用兩條信號線,即串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(S
    的頭像 發(fā)表于 01-31 15:01 ?1607次閱讀

    I2C總線與Arduino的接口示例

    在現(xiàn)代電子設(shè)計(jì)中,I2C總線因其簡單性和靈活性而廣受歡迎。它允許多個(gè)設(shè)備共享同一通信線路,從而節(jié)省空間和成本。Arduino,作為一個(gè)多功能的微控制器平臺(tái),自然也支持I2C通信。
    的頭像 發(fā)表于 01-17 15:34 ?2091次閱讀

    I2C總線應(yīng)用實(shí)例分析

    I2C總線使用兩條線進(jìn)行通信:數(shù)據(jù)線(SDA)和時(shí)鐘線(SCL)。這種雙線制設(shè)計(jì)使得I2C總線能夠在多個(gè)設(shè)備之間共享,而不需要為每個(gè)設(shè)備單獨(dú)布線。 應(yīng)用實(shí)例:溫濕度傳感器 假設(shè)我們正在設(shè)計(jì)一個(gè)智能家居系統(tǒng),需要實(shí)時(shí)監(jiān)測室內(nèi)的溫
    的頭像 發(fā)表于 01-17 15:09 ?1056次閱讀

    I2C總線與SPI總線的比較

    在現(xiàn)代電子系統(tǒng)中,微控制器與各種外設(shè)之間的通信是必不可少的。I2CSPI是兩種流行的串行通信協(xié)議,它們各自具有獨(dú)特的特點(diǎn)和應(yīng)用場景。 I2C
    的頭像 發(fā)表于 01-17 15:08 ?1445次閱讀

    AN-840: 通過I2C接口更新代碼

    電子發(fā)燒友網(wǎng)站提供《AN-840: 通過I2C接口更新代碼.pdf》資料免費(fèi)下載
    發(fā)表于 01-15 16:04 ?0次下載
    AN-840: 通過<b class='flag-5'>I2C</b><b class='flag-5'>接口</b>更新代碼

    UC-001:MicroConverter I2C兼容接口

    電子發(fā)燒友網(wǎng)站提供《UC-001:MicroConverter I2C兼容接口.pdf》資料免費(fèi)下載
    發(fā)表于 01-15 15:51 ?0次下載
    UC-001:MicroConverter <b class='flag-5'>I2C</b>兼容<b class='flag-5'>接口</b>

    為什么嵌入式調(diào)試經(jīng)常用UART,卻很少用SPI、I2C或USRT?

    在嵌入式調(diào)試中經(jīng)常使用 UART(通用異步收發(fā)傳輸器)而較少使用 SPI(串行外設(shè)接口)、I2C(集成電路總線)或 USRT(通用同步 / 異步收發(fā)傳輸器)主要有以下原因
    的頭像 發(fā)表于 12-18 09:58 ?1054次閱讀
    為什么嵌入式調(diào)試經(jīng)常用<b class='flag-5'>UART</b>,卻很少用<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>或USRT?

    BTB擴(kuò)展接口:LCD、Camera、UART、I2C等|詳解篇

    今天我們來學(xué)習(xí)的是BTB擴(kuò)展接口的LCD、Camera、UART、I2C詳解,特別分享Air201硬件BTB擴(kuò)展接口相關(guān)內(nèi)容。
    的頭像 發(fā)表于 11-30 09:39 ?1488次閱讀
    BTB擴(kuò)展<b class='flag-5'>接口</b>:LCD、Camera、<b class='flag-5'>UART</b>、<b class='flag-5'>I2C</b>等|詳解篇

    探索GPIO/ADC/LED/I2C/SPI/USB…的完整世界

    今天了解的是GPIO/ADC/LED/I2C/SPI/USB硬件接口設(shè)計(jì)及其注意事項(xiàng),希望對大家有所幫助。
    的頭像 發(fā)表于 11-17 09:59 ?1305次閱讀
    探索GPIO/ADC/LED/<b class='flag-5'>I2C</b>/<b class='flag-5'>SPI</b>/USB…的完整世界