|
IIC 總線的幾種信號1.起始和終止信號:
51hei圖片20190801103458.png (22.21 KB, 下載次數(shù): 32)
下載附件
2019-8-1 10:36 上傳
從時序圖可以看出,起始信號為,SCL=1,SDA下降沿;終止信號為SCL=1,SDA為上升沿,保持的時間是有限制的:
51hei圖片20190801103515.png (28.69 KB, 下載次數(shù): 37)
下載附件
2019-8-1 10:36 上傳
具體的程序?qū)崿F(xiàn)如下:
起始信號:SDA=1保持時間大于4。7us,隨后SDA=0保持時間大于4us
?
1
2
3
4
5
6
7
8
9
| /*SDA下降沿*/
void start()
{
SDA = 1; //順序不能反了,先是SDA=1;
SCL = 1;
delay();
SDA = 0;
delay();
}
|
終止信號:SDA=0保持時間大于4us,隨后SDA=1保持時間大于4。7us
?
1
2
3
4
5
6
7
8
9
| /*SDA上升沿*/
void end()
{
SDA = 0; //順序不能反了,先是SDA=0;
SCL = 1;
delay();
SDA = 1;
delay();
}
|
2.應(yīng)答信號:
51hei圖片20190801103520.png (22.8 KB, 下載次數(shù): 43)
下載附件
2019-8-1 10:36 上傳
傳送的每一個字節(jié)必須保證是8位長度。數(shù)據(jù)傳送時,先傳送最高位(MSB),每一個被傳送的字節(jié)后面都必須跟隨一位應(yīng)答信號(即一幀共有9位)。
如:主機(jī)往總線上發(fā)送一個字節(jié)的數(shù)據(jù)后,釋放總線,從機(jī)會把總線拉低(即應(yīng)答信號),以表示這一字節(jié)發(fā)送成功
同理主機(jī)從總線上讀取完一個字節(jié)的數(shù)據(jù)后,主機(jī)會把總線拉低,"告訴"從機(jī)這一字節(jié)的數(shù)據(jù)接收成功
51hei圖片20190801103524.png (23.47 KB, 下載次數(shù): 37)
下載附件
2019-8-1 10:36 上傳
程序?qū)崿F(xiàn)
應(yīng)答信號:
?
1
2
3
4
5
6
7
8
9
| void ack()
{
uchar i = 0;
SCL = 1;
delay();
while(SDA == 1 && i < 250)i++;
SCL = 0; //SCL=0,SDA可以改變
delay();
}
|
|
|