新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > IIC器件的讀寫操作,大家看看這個所謂的“教程”!!

IIC器件的讀寫操作,大家看看這個所謂的“教程”?。?/h1>
作者: 時間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
看看下面的這段,是從***的“教程”里摘錄而來,如果是筆誤當(dāng)然無須吹毛求疵。

這里,無論是“接收”,還是“發(fā)送”,都是“ACK”,其“ACK”的內(nèi)容是(SCL_IC_ C ARD=1; SCL_IC_ C ARD=0;”)就這些。這樣能行嗎?這個“老師”連基本的IIC協(xié)議都沒弄懂。這大概不會是筆誤吧?

本文引用地址:http://m.butianyuan.cn/article/201611/323428.htm

在IIC協(xié)議中,不管是主控器件還是從器件,A、向總線發(fā)送一個字節(jié)數(shù)據(jù)后,就要發(fā)送一個應(yīng)答信號(1bit),告訴接收器件“發(fā)送完成”。B、接收器件正確接收到一個字節(jié)的數(shù)據(jù)后,也要發(fā)送一個應(yīng)答信號(1bit),告訴發(fā)送器件“接收完成”

如果接收器件接收不正確,則不會發(fā)送應(yīng)答信號。發(fā)送器件就檢測不到“應(yīng)答信號”,這時就要從“開始”步驟重來。

這里就有了這么幾個環(huán)節(jié):“應(yīng)答信號(1bit,低位)”、“非應(yīng)答信號(1bit,高位)、“檢測應(yīng)答信號”。

讀的流程:發(fā)送開始信號-發(fā)送器件地址(含“寫”信息)-檢測應(yīng)答-發(fā)送字節(jié)地址-檢測應(yīng)答-發(fā)送開始信號(含“讀”信息)-檢測應(yīng)答-讀一個字節(jié)-發(fā)送應(yīng)答信號-......讀第N字節(jié)-發(fā)送非應(yīng)答信號-發(fā)送停止信號

寫的流程:發(fā)送開始信號-發(fā)送器件地址(含“寫”信息)-檢測應(yīng)答-發(fā)送字節(jié)地址-檢測應(yīng)答-寫一個字節(jié)-檢測應(yīng)答信號-......寫第N字節(jié)-檢測應(yīng)答信號-發(fā)送停止信號

上面僅就多字節(jié)讀寫做了簡單的描述,單字節(jié)的類似。

特別說明:無論哪一個“檢測應(yīng)答信號”不成功,都要返回到“發(fā)送開始信號”處,重新開始。 如果是大容量的,發(fā)送地址分高位、低位2次,都要“檢測應(yīng)答”

下面就是這個“教程”的摘錄:

*****************(鄭重提醒:這是一個不正確的程序,千萬不要套用)******************
第十四講 IC卡(24C01)

在日常生活中,IC卡的使用越來越廣泛,而且還有進(jìn)一步擴(kuò)大的趨勢。因此

有必要掌握這方面的知識,下面以24C01 為例,簡單地介紹一般使用方法。

#include  #include  sbit   SC L _ IC _ C AR D= P1 ^3 ;                  sbit   SDA_ IC _ C AR D= P1 ^4 ;                     sbit WP_IC_CARD =P1^7; bdata char com_data; sbit m o s_bit=com_data^7; sbit low_bit=com_data^0; unsigned  char  data  display _buf fer[8];               void   d e l a y(i n t   n );                                 unsigned char rd_24c01(char a); void w r_24c01(char a,char b); ma in() { unsigned char i; WP_IC_CARD=1; for (i=0;i<=7;i++) {display _buf fer[i]=rd_24c01(i);delay (250);} for (i=0;i<=7;i++) {w r_24c01(i,display_buf fer[i]);delay (250);} while(1); } void start()      //啟動讀寫時序 {          // 圖4-22 (c )開始、結(jié)束脈沖時序 SDA_IC_ C ARD=1;  SCL_IC_ C ARD=1;  SDA_ IC _ C AR D= 0 ;             // 啟動start SCL_IC_ C ARD=0;  } void stop()      //停止操作 {          // 圖4-22 (c )開始、結(jié)束脈沖時序 SDA_IC_ C ARD=0;  SCL_IC_ C ARD=1;  SDA_IC_ C ARD=1;  } void ack()      //應(yīng)答函數(shù) {           SCL_IC_ C ARD=1;  SCL_IC_ C ARD=0;  } void shift8(char  a)    //8位移位輸出 {  data unsigned char i; com _data=a; for(i=0;i<8;i++) {  SDA_IC_CARD=mo s_bit; S C L _ IC _ C AR D= 1 ;  S C L _ IC _ C AR D= 0 ;  com _data=com_data*2; } } 
				
            
                
			
							
上一頁 1 2 下一頁


關(guān)鍵詞: IIC器件讀寫操

評論


技術(shù)專區(qū)

關(guān)閉