最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

I2C總線

作者:榮豹 欄目:技術(shù)交流
I2C總線

那位大俠能給小弟細(xì)講一下I2C總線呀,
看了半天還是有點(diǎn)迷茫,謝謝!

2樓: >>參與討論
computer00
把協(xié)議好好讀幾遍,比在這里問(wèn)更有效果。
有具體的點(diǎn)不明白時(shí),才拿上來(lái)問(wèn)。

3樓: >>參與討論
榮豹
謝謝
協(xié)議已經(jīng)讀料好幾遍了,但是對(duì)于SDA,SCL線的作用還是有點(diǎn)迷茫,在傳送一個(gè)8位字節(jié)前和傳送后他們的變化,不好意思,第一次用,謝謝了computer00,在給講一下吧

4樓: >>參與討論
computer00
SDA就是數(shù)據(jù)線,SCL就是時(shí)鐘線。
空閑時(shí)兩個(gè)都為高。

在數(shù)據(jù)正常發(fā)送過(guò)程中,只有當(dāng)SCL為低時(shí)才能改變狀態(tài)。

如果SCL為高時(shí),SDA改變狀態(tài),就會(huì)產(chǎn)生啟始或停止條件。
具體是:如果SCL為高,SDA由高到低,則產(chǎn)生啟始條件(或者是重復(fù)啟始條件)。
        如果SCL為高,SDA由低到高,則產(chǎn)生停止條件。


數(shù)據(jù)必須在啟始條件后發(fā)送,第一個(gè)字節(jié)為設(shè)備地址。


這些在協(xié)議里面都寫(xiě)得很清楚,自己去看吧,暈菜~~~~~~~~~

5樓: >>參與討論
吳明詩(shī)
多讀幾遍
 
6樓: >>參與討論
榮豹
多謝
/*****************************************uchar RcvB()*****************************************
該函數(shù)是字節(jié)數(shù)據(jù)傳送函數(shù),功能是用來(lái)接收從器件傳來(lái)的數(shù)據(jù),并判斷總線錯(cuò)誤(不發(fā)應(yīng)答信號(hào)),發(fā)完后
調(diào)用應(yīng)答函數(shù)
***********************************************************************************************/
uchar RcvB()
{
  uchar retc;
  uchar BitCnt;
  retc=0;
  Sda_I2C=1;                           /*置數(shù)據(jù)線為輸入方式*/
  for(BitCnt=0;BitCnt<8;BitCnt++)
  {
    _NOP();
    Scl_I2C=0;                         /*置時(shí)鐘線為低準(zhǔn)備接受數(shù)據(jù)位*/
    _NOP();                            /*時(shí)鐘低電平周期*/
    _NOP();
    _NOP();
    _NOP();
    _NOP();
    Scl_I2C=1;                         /*置時(shí)鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效*/
    _NOP();
    _NOP();
   retc=retc<<1;
   if(Sda_I2C==1) retc=retc+1;         /*讀數(shù)據(jù)位,接收到數(shù)據(jù)位放入retc中*/
    _NOP();
    _NOP();
  }
  Scl_I2C=0;
  _NOP();
  _NOP();
  return(retc);
}

這是MCU從從器件中讀書(shū)據(jù)的函數(shù),幫忙分析一下,
尤其是
Scl_I2C=1;/*置時(shí)鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效*/
難道非要SCL為高M(jìn)CU才能讀到數(shù)據(jù)嗎?
if(Sda_I2C==1) retc=retc+1;難道從器件每發(fā)送一個(gè)BIT都要把SDA置高嗎?


7樓: >>參與討論
computer00
協(xié)議里面不是寫(xiě)得好清楚嗎???
“6.1 數(shù)據(jù)的有效性
SDA 線上的數(shù)據(jù)必須在時(shí)鐘的高電平周期保持穩(wěn)定數(shù)據(jù)線的高或低電平狀態(tài)只有在SCL 線的時(shí)鐘
信號(hào)是低電平時(shí)才能改變見(jiàn)圖4)。”



if(Sda_I2C==1) retc=retc+1;難道從器件每發(fā)送一個(gè)BIT都要把SDA置高嗎?

這句話的意思是,如果Sda_I2C為高(即Sda_I2C等于1),那么retc就加1,加1就相當(dāng)于把最后一位置1。
這樣就表示收到了一個(gè)1,并把它放在retc的最低位。如果Sda_I2C不等于1,即收到一個(gè)0,retc就
不加1,也就是最低位為0,表示收到一個(gè)0。如果還需要接收其它的位,則將retc往左移動(dòng)一位
(即上面那句retc=retc<<1;或者寫(xiě)成retc<<=1;),然后又跟上面的過(guò)程一樣,把接下來(lái)收到的一位放到最后。

8樓: >>參與討論
榮豹
非常感謝
非常感謝computer00,有機(jī)會(huì)請(qǐng)你吃飯:)

9樓: >>參與討論
←Amani
只要把時(shí)序看明白了,按照時(shí)序?qū)懢蚈K了
 
10樓: >>參與討論
computer00
謝謝。
 
參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
有關(guān)IPM的問(wèn)題請(qǐng)教大家?
尋常效應(yīng)管:
用過(guò)UR5HCSPI的xd/jm進(jìn)來(lái)看看
哪位老大解釋一下4000系列IC中不同前綴的意思?
求以太網(wǎng)HUB芯片
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)