娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月20日(星期二)

2018年05月20日 | I2C總線信號時序分析

發布者:SereneSpirit 來源: eefocus關鍵字:I2C總線  信號時序 手機看文章 掃描二維碼
隨時隨地手機看文章

在I2C總線通信的過程中,參與通信的雙方互相之間所傳輸的信息種類歸納如下。
 
  主控器向被控器發送的信息種類有:啟動信號、停止信號、7位地址碼、讀/寫控制位、10位地址碼、數據字節、重啟動信號、應答信號、時鐘脈沖。
 
  被控器向主控器發送的信息種類有:應答信號、數據字節、時鐘低電平。
 
  下面對I2C總線通信過程中出現的幾種信號狀態和時序進行分析。
 
  ①總線空閑狀態。
 
  I2C總線總線的SDA和SCL兩條信號線同時處于高電平時,規定為總線的空閑狀態。此時各個器件的輸出級場效應管均處在截止狀態,即釋放總線,由兩條信號線各自的上拉電阻把電平拉高。
 
  ②啟動信號。
 
  在時鐘線SCL保持高電平期間,數據線SDA上的電平被拉低(即負跳變),定義為I2C總線總線的啟動信號,它標志著一次數據傳輸的開始。

  啟動信號是一種電平跳變時序信號,而不是一個電平信號。啟動信號是由主控器主動建立的,在建立該信號之前I2C總線必須處于空閑狀態,如圖1所示。

  圖1  I2C總線上的啟動信號和停止信號

  ③停止信號。
 
  在時鐘線SCL保持高電平期間,數據線SDA被釋放,使得SDA返回高電平(即正跳變),稱為I2C總線的停止信號,它標志著一次數據傳輸的終止。
 
  停止信號也是一種電平跳變時序信號,而不是一個電平信號,停止信號也是由主控器主動建立的,建立該信號之后,I2C總線將返回空閑狀態。
 
  ④數據位傳送。   
 
  在I2C總線上傳送的每一位數據都有一個時鐘脈沖相對應(或同步控制),即在SCL串行時鐘的配合下,在SDA上逐位地串行傳送每一位數據。
 
  進行數據傳送時,在SCL呈現高電平期間,SDA上的電平必須保持穩定,低電平為數據0,高電平為數據1。
 
  只有在SCL為低電平期間,才允許SDA上的電平改變狀態。邏輯0的電平為低電壓,而邏輯1的電平取決于器件本身的正電源電壓VDD(當使用獨立電源時),如圖2所示。

  圖2  I2C總線上的數據位傳送

  ⑤應答信號。
 
  I2C總線上的所有數據都是以8位字節傳送的,發送器每發送一個字節,就在時鐘脈沖9期間釋放數據線,由接收器反饋一個應答信號。
 
  應答信號為低電平時,規定為有效應答位(ACK簡稱應答位),表示接收器已經成功地接收了該字節;應答信號為高電平時,規定為非應答位(NACK),一般表示接收器接收該字節沒有成功。
 
  對于反饋有效應答位ACK的要求是,接收器在第9個時鐘脈沖之前的低電平期間將SDA線拉低,并且確保在該時鐘的高電平期間為穩定的低電平。

  如果接收器是主控器,則在它收到最后一個字節后,發送一個NACK信號,以通知被控發送器結束數據發送,并釋放SDA線,以便主控接收器發送一個停止信號P,如圖3所示。

  圖3 I2C總線上的應答時序

  ⑥插入等待時間。
  
  如果被控器需要延遲下一個數據字節開始傳送的時間,則可以通過把時鐘線SCL電平拉低并且保持,使主控器進入等待狀態。
  
  一旦被控器釋放時鐘線,數據傳輸就得以繼續下去,這樣就使得被控器得到足夠時間轉移已經收到的數據字節,或者準備好即將發送的數據字節。
  
  帶有CPU的被控器在對收到的地址字節做出應答之后,需要一定的時間去執行中斷服務子程序,來分析或比較地址碼,其間就把SCL線鉗位在低電平上,直到處理妥當后才釋放SCL線,進而使主控器繼續后續數據字節的發送,如圖4所示。

  圖4 I2C總線上的插入等待時間

  ⑦重啟動信號。
 
  在主控器控制總線期間完成了一次數據通信(發送或接收)之后,如果想繼續占用總線再進行一次數據通信(發送或接收),而又不釋放總線,就需要利用重啟動Sr信號時序。
 
  重啟動信號Sr既作為前一次數據傳輸的結束,又作為后一次數據傳輸的開始。利用重啟動信號的優點是,在前后兩次通信之間主控器不需要釋放總線,這樣就不會丟失總線的控制權,即不讓其他主器件節點搶占總線。

  ⑧時鐘同步。
 
  如果在某一I2C總線系統中存在兩個主器件節點,分別記為主器件1和主器件2,其時鐘輸出端分別為CLK1和CL【0,它們都有控制總線的能力。
 
  假設在某一期間兩者相繼向SCL線發出了波形不同的時鐘脈沖序列CLK1和CLK2(時鐘脈沖的高、低電平寬度都是依靠各自內部專用計數器定時產生的),在總線控制權還沒有裁定之前這種現象是可能出現的。
 
  鑒于I2C總線的“線與”特性,使得時鐘線SCL上得到的時鐘信號波形,既不像主器件1所期望的CLK1,也不像主器件2所期望的CLK2,而是兩者進行邏輯與的結果。
 
  CLKI和CLK2的合成波形作為共同的同步時鐘信號,一旦總線控制權裁定給某一主器件,則總線時鐘信號將會只由該主器件產生,如圖5所示。

  圖5 I2C總線上的時鐘同步

  ⑨總線沖突和總線仲裁
  
  假如在某I2C總線系統中存在兩個主器件節點,分別記為主器件1和主器件2,其數據輸出端分別為DATA1和DATA2,它們都有控制總線的能力,這就存在著發生總線沖突(即寫沖突)的可能性。
  
  假設在某一瞬間兩者相繼向總線發出了啟動信號,鑒于:I2C總線的“線與”特性,使得在數據線SDA上得到的信號波形是DATA1和DATA2兩者相與的結果,該結果略微超前送出低電平的主器件1,其DATA1的下降沿被當做SDA的下降沿。
  
  在總線被啟動后,主器件1企圖發送數據“101……”,主器件2企圖發送數據“100101……”。
  
  兩個主器件在每次發出一個數據位的同時都要對自己輸出端的信號電平進行抽檢,只要抽檢的結果與它們自己預期的電平相符,就會繼續占用總線,總線控制權也就得不到裁定結果。
  
  主器件1的第3位期望發送“1”,也就是在第3個時鐘周期內送出高電平。
  
  在該時鐘周期的高電平期間,主器件1進行例行抽檢時,結果檢測到一個不相匹配的電平“0”,這時主器件1只好決定放棄總線控制杈;因此,主器件2就成了總線的惟一主宰者,總線控制權也就最終得出了裁定結果,從而實現了總線仲裁的功能。
  
  從以上總線仲裁的完成過程可以得出:仲裁過程主器件1和主器件2都不會丟失數據;各個主器件沒有優先級別之分,總線控制權是隨機裁定的,即使是搶先發送啟動信號的主器件1最終也并沒有得到控制杈。
  
  系統實際上遵循的是“低電平優先”的仲裁原則,將總線判給在數據線上先發送低電平的主器件,而其他發送高電平的主器件將失去總線控制權,如圖6所示。

  圖6 I2C總線上的總線仲裁

  ⑩總線封鎖狀態。
  
  在特殊情況下,如果需要禁止所有發生在I2C總線上的通信活動,封鎖或關閉總線是一種可行途徑,只要掛接于該總線上的任意一個器件將時鐘線SCL鎖定在低電平上即可。

 

 

//=======================================


關鍵字:I2C總線  信號時序 引用地址:I2C總線信號時序分析

上一篇:keil MDK中如何生成*.bin格式的文件
下一篇:MSP430學習的第一個模擬I2C程序

推薦閱讀

全球領先的汽車半導體解決方案供應商瑞薩電子株式會社(TSE:6723)與移動技術公司、全球最大的汽車零部件供應商之一麥格納,于近日聯合宣布,雙方合作推出專為入門級到中級車輛設計、新型高性價比3D環視解決方案,這將加速高級駕駛輔助系統(ADAS)的量產和普及。該3D 環視系統采用了瑞薩電子高性能低功耗、專為智能攝像頭和全景環視系統而優化的片上系統(So...
用Keil4進行程序編譯后,如果沒有錯誤的話,在項目文件下的頭文件會自動加載到.c文件的下面,如下所示:但現在,我出現的錯誤時:并且點擊編譯后,頭文件沒有自動加載上去,如下所示:同時出現了一個錯誤,雙擊錯誤時彈出contains an incorrect path的窗口,解決辦法:1.先檢查錯誤,修改過來,就行了。2.我的文件名是“單片機U1的數據發送程序.c”,出...
引言:2019 年全球電動車銷量約為 220 萬輛,同比增長 10%,市場份額從 2.1%提高到 2.5%,滲透率不斷提高。從全球的各個市場來看,歐洲 2019 年電動車銷量 56.3 萬輛,同比增長 47%,增速創歷史新高;由于歐洲各國的政策驅動,和歐盟碳排放新規的驅動,歐洲的新能源汽車的市場是逐步往前發展的。對于中國來說,全球新能源汽車的政策方針是靠國...
為功率半導體組件提供最佳保護:由于電子元件持續小型化且功率同時提高,功率半導體對于過電流情況和電壓脈沖變得更加敏感。Littelfuse的方形盒PSR系列可為這類應用提供高速保護功能。PSR系列的高速熔斷器設計用于保護功率半導體器件,例如二極管、三端雙向可控硅開關元件(Triac)、IGBT、SCR、MOSFET以及其他用于功率轉換器和處理附件的半導體元件。Little...

史海拾趣

問答坊 | AI 解惑

單片機的C語言中數組的用法

[size=#]void main()[size=#]{[size=#]unsigned char c;[size=#]char string[20];[size=#]c="yahoo"[2]; //c=\'h\' [size=#]strcpy(string,"123,234,345,456");[size=#]strcpy(string,get_sub_string(string,2));[size=#]while(1);[size=# ...…

查看全部問答∨

求助50HZ交流信號的移相電路

最近遇到個問題,在輸出三相交流信號時,要求相位差120度,有沒有好的移相電路,望高手指點!!…

查看全部問答∨

用什么工具可以檢測WinCE程序的內存泄漏?

用什么工具可以檢測WinCE程序的內存泄漏?…

查看全部問答∨

NDIS_PACKET 的操作與修改問題

晚輩在NDIS中間層開發一個協議。 協議要求,對NDIS中間層接口函數MiniPortSend截獲的Packet進行修改,添入一塊咱們協議定義的MyHeader。 MyHeader必須加在IPHeader的后邊. 通過NdisGetFirstBufferFromPacketSafe,NdisGetNextBuffer,NdisQueryBu ...…

查看全部問答∨

用C和WIN32 API寫了個五子棋的小游戲,現在想加個聯網的功能,用SOCKET,有幾個問題大家幫忙

1.SOCKET通信寫在哪個消息里?  我認為應該在每次按下的時候,SERVER端進行一次發送和一次接受,CLINET端進行一次接收和一次發送 2.如何判斷兩個機器有沒有聯通啊,如何調試 3,希望大家能給個  WIN API的例子,要C的  ...…

查看全部問答∨

急求:C#在Wince 5.0環境下播放視頻代碼 在線等待......

初次在wince環境下用C#開發。現在遇到視頻播放問題:pc下調用Quartz.dll進行播放視頻正常,但是在wince下卻不能初始化FilgraphManager。搞了好幾天,還沒解決。大家有沒有更簡潔有效C# wince視頻播放代碼可供參考啊? …

查看全部問答∨

FPGA中的有符號數的比較

在FPGA中,有符號數怎么比較,什么是二進制補碼,對于AD輸出是有符號的數,怎么表示?…

查看全部問答∨

51單片機用8050驅動的怪現象

我做了一塊電路板,S8050驅動12V繼電器,用單片機兩個管腳驅動,但是兩個繼電器線圈處電壓竟然差別好大,管腳懸空的時候,一個只有6.5V左右,一個是12V左右,當管腳都接地時,原來6.5V的變成了12V左右,另外一個12V的竟然到了0V,兩個同樣的電路繼 ...…

查看全部問答∨

Launchpad的XT1使用高速外部時鐘的辦法

對于launchpad上使用的MSP430都只有XT1一個振蕩器,并且不支持高速晶體,其性能指標如下圖所示: 最高只能支持到50Khz的無源晶振(晶體),DCO的頻率又不夠穩定,如何獲得高速穩定的外部時鐘呢? 這其實是有辦法的,在用戶手冊上明確的有這么一說 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 伊通| 嫩江县| 临夏市| 天柱县| 额尔古纳市| 册亨县| 淅川县| 江都市| 独山县| 阿拉善右旗| 建宁县| 蒙自县| 宝应县| 寿光市| 富顺县| 万全县| 荣成市| 玉林市| 澄城县| 温泉县| 通河县| 德化县| 社旗县| 横峰县| 内乡县| 成武县| 涟源市| 牟定县| 手机| 屯留县| 正蓝旗| 芦溪县| 临湘市| 梧州市| 邛崃市| 仁寿县| 鹤山市| 衢州市| 临清市| 孟州市| 上饶县|