国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

因為沒有時鐘控制,什么時機開始發數據,且保證對方正確接收?

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

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

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

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

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

2、叫你一聲你敢答應嗎之I2C

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

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

假設主機A給從機B發數據(A.SCL接B.SCL,A.SDA接B.SDA),根據應用,A可以同時接B,C,D。空閑時SDA和SCL上的電平都為高電平。

起始和停止起始條件S:當SCL高電平時,SDA由高電平向低電平轉換;停止條件P:當SCL高電平時,SDA由低電平向高電平轉換。起始和停止條件一般由主機產生,總線在起始條件后處于busy的狀態,在停止條件的某段時間后,總線才再次處于空閑狀態。

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

空閑時SDA和SCL上的電平都為高電平。A先把SDA拉低,等SDA變為低電平后再把SCL拉低(以上兩個動作構成了I2C的起始位),此時SDA就可以發送數據了,與此同時,SCL發送一定周期的脈沖,SDA發送數據和SCL發送脈沖的要符合的關系是:SDA必須在SCL是高電平時保持有效,在SCL是低電平時發送下一位(SCL會在上升沿對SDA進行采樣)。

傳輸與響應一次傳8位數據,8位數據傳輸結束后A釋放SDA,SCL再發一個脈沖(這是第九個脈沖),觸發B將SDA置為低電平表示確認(該低電平稱為ACK)。最后SCL先變為高電平,SDA再變為高電平(以上兩個動作稱為結束標志),如果B沒有將SDA置為0 ,則A停止發送下一幀數據.。

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

實際項目一般都是采用I2C庫,有的庫要求傳入的是8位的寫的地址,有的是7位,由接口函數再區分讀寫補位。當然,最愚蠢的辦法是從0到255定時循環讀某個寄存器地址,讀到正確值時的地址就是正確的從機地址。

一般情況下使用I2C庫,除了配置從機地址,其他的起始、結束等時序等其實不太關注,只需要配置時鐘頻率,一般看從機最大支持多少,以及主機的系統時鐘,太高會偶爾出現錯誤,再沒有時間要求的情況下,時鐘越低越穩定。

3、慕容復斗轉星移之SPI

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

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

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

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

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

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

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

SPI傳輸數據沒有位數限制,只要定義收發高位在前還是低位在前,可以持續高速傳輸。

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

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

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

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

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

一般操作流程參考外設芯片手冊,主要是不同平臺的延時處理,需要軟件實現1us延時的接口,否則數據通信異常。

5、秘籍功法

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

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

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

軟件開發沒有秘笈功法,全靠個人學習總結。


責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1556

    瀏覽量

    131266
  • uart
    +關注

    關注

    22

    文章

    1314

    瀏覽量

    106680
  • 高電平
    +關注

    關注

    6

    文章

    225

    瀏覽量

    22828

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    I2C總線-通信線纜長度的影響及改進措施

    I2C總線確實不適合遠距離通信,尤其是需要使用線纜與I2C接口器件進行通信,這里的“不適合”并不是說不可以,這也是本文的重點。一般使用
    發表于 01-21 06:03

    多協議可編程USB接口適配器USB2S,全面支持UART/I2C/SPI/CAN/1-Wire

    USB接口
    穩控自動化
    發布于 :2026年01月16日 13:51:20

    多協議可編程USB接口適配器

    多協議可編程USB接口適配器USB2S,全面支持UART/I2C/SPI/CAN/1-Wire
    的頭像 發表于 01-15 14:06 ?186次閱讀
    多協議可編程USB<b class='flag-5'>接口</b>適配器

    I2C 為什么只要兩根線就能搞定通信

    到目前為止,我們已經討論了SPI通信UART通信的基礎知識,現在讓我們討論本系列的最后一個協議,即集成電路間協議(I2C)。如果您曾經構建
    的頭像 發表于 01-04 09:14 ?1685次閱讀
    <b class='flag-5'>I2C</b> 為什么只要兩根線就能搞定<b class='flag-5'>通信</b>?

    分享1-Wire接口數字溫度傳感器IC型號

    如今,隨著測溫應用環境的升級和拓展,精準的溫度測量與控制已成為各種環境數據采集的關鍵,傳統模擬溫度傳感器已經無法滿足市場的要求,而1-Wire接口數字溫度傳感器IC的出現,極大地簡化了系統設計。為此
    的頭像 發表于 12-02 16:34 ?816次閱讀
    分享<b class='flag-5'>1-Wire</b><b class='flag-5'>接口</b>數字溫度傳感器IC型號

    I2C的缺點介紹

    上升時間變慢和潛在的信號衰減。對于長距離通信,其他協議,如 UART(通用異步接收器/發送器)或 SPI(串行外設接口)可能更合適。 速度限制: 雖然
    發表于 11-27 06:10

    UARTSPII2C 實戰對比:哪個更適合你的項目?

    在嵌入式開發中,設備之間的通信是繞不開的話題。常見的三種總線接口——UARTSPII2C——各有優缺點。不同項目需求決定了選擇哪一種協議
    的頭像 發表于 11-24 19:04 ?1195次閱讀
    <b class='flag-5'>UART</b>、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b> 實戰對比:哪個更適合你的項目?

    SPII2CUART三種串行總線的區別與對比

    1)概念定義 SPI(Serial Peripheral Interface:串行外設接口); I2C(INTER IC BUS:意為IC之間總線)
    發表于 11-20 07:19

    SPII2CI2S、UART通信協議解釋

    ? ? ? ? 在嵌入式開發中,最常用的幾種通信接口無非就是SPII2CI2S、UART。名
    的頭像 發表于 11-18 10:53 ?551次閱讀

    SPII2CI2S、UART通信協議對比表

    在嵌入式開發中,最常用的幾種通信接口無非就是SPII2CI2S、UART。名字看起來差不多,
    的頭像 發表于 11-17 10:53 ?1761次閱讀
    <b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>、<b class='flag-5'>I2</b>S、<b class='flag-5'>UART</b>:<b class='flag-5'>通信</b>協議對比表

    Diodes公司推出高性能I2C/SPI總線至雙通道UART網橋PI7C9X762Q

    Diodes 公司(Diodes)(Nasdaq:DIOD)宣布推出PI7C9X762Q,這是一款符合汽車標準*的高性能 I2C/SPI 總線至雙通道 UART 網橋。該器件在工作狀態
    的頭像 發表于 10-17 17:51 ?1782次閱讀

    深入剖析I2C協議

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

    第十八章 I2C通信測試

    本章介紹了I2C協議,其物理層用SDA和SCL雙線,支持多設備:協議層含起始/停止信號、應答機制等。還講解W55MH32的I2C外設及初始化,并進行了通信測試代碼的分析。
    的頭像 發表于 06-19 17:07 ?1321次閱讀
    第十八章 <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>測試

    DS2475帶1-Wire主機的DeepCover ECDSA協處理器技術手冊

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

    簡單了解I2C接口

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