TWI: 是一種全雙工的串行通訊協(xié)議,與I2C工作方式相同,由一條數(shù)據(jù)傳輸線SDL,一條時鐘線SCL組成,對應(yīng)單片機的外部引腳PC1,PC0。
由于只有兩條總線,簡化了系統(tǒng)設(shè)計。
特點: ? 簡單,但是強大而靈活的通訊接口,只需要兩根線
? 支持主機和從機操作
? 器件可以工作于發(fā)送器模式或接收器模式
? 7 位地址空間允許有128 個從機
? 支持多主機仲裁
? 高達400 kHz 的數(shù)據(jù)傳輸率
? 斜率受控的輸出驅(qū)動器
? 可以抑制總線尖峰的噪聲抑制器
? 完全可編程的從機地址以及公共地址
? 睡眠時地址匹配可以喚醒AVR
主機: 控制啟動和停止傳輸?shù)脑O(shè)備。主機同時要產(chǎn)生SCL 時鐘
從機: 被主機尋址的設(shè)備
發(fā)送器: 將數(shù)據(jù)放到總線上的設(shè)備
接收器: 從總線讀取數(shù)據(jù)的設(shè)備
TWI工作模式: 主機發(fā)送模式(MT)
主機接收模式(MR)
從機發(fā)送模式(ST)
從機接收器模式(SR)
例如, TWI 可用MT 模式給TWIEEPROM 寫入數(shù)據(jù),用MR 模式從EEPROM 讀取數(shù)據(jù)。如果系統(tǒng)中有其它主機存在 ,它們可能給TWI 發(fā)送數(shù)據(jù),此時就可以用SR 模式。應(yīng)用程序決定采用何種模式。
模式狀態(tài)縮寫:
S: START 狀態(tài)
Rs:REPEATED START 狀態(tài)
R:讀一個比特(SDA 為高電平)
W:寫一個比特(SDA 為低電平)
A:應(yīng)答位(SDA 為低電平)
A: 無應(yīng)答位(SDA 為高電平)
Data:8 位數(shù)據(jù)
P: STOP 狀態(tài)
SLA:從機地址
一、主機模式:可以向從機發(fā)送數(shù)據(jù),進入主機模式,首先發(fā)送一個START信號,接著的從機地址決定了進入MT還是MR模式
主機發(fā)送(MT): S+SLA+W, 主機接收(MR): S+SLA+R
1、波特率設(shè)置:TWBR=100;
2、分頻設(shè)置: TWSR|=(1< 寫過程: 1)、發(fā)送啟動信號: TWCR=(1< 2)、 等待應(yīng)答信號: while ((TWCR&(1< 3)、 進入主機寫模式: TWDR=0Xa0;// TWDR=SLA+W; //通過在TWDR中寫入SLA+W進入主機寫模式,SLA+R進入主機讀模式 TWCR=(1< while ((TWCR&(1< 4)、發(fā)送要寫入的地址: TWDR=adress; TWCR=(1< while(!(TWCR&(1< 5)、 發(fā)送要寫入的數(shù)據(jù): TWDR=data; TWCR=(1< while(?。═WCR&(1< 6)、發(fā)送停止信號: TWC(1< 讀過程: 1)、啟動信號: TWCR=(1< while(?。═WCR&(1< 2)、 進入主機寫模式:TWDR=0Xa0; //TWDR=SLA+W; TWCR=(1< while(!(TWCR&(1< 3)、寫入要讀的地址: TWDR=address; TWCR=(1< while(?。═WCR&(1< 4)、發(fā)送啟動信號: TWCR=(1< while(?。═WCR&(1< 5)、進入主機讀模式: TWDR=0Xa1 ;//TWDR=SLA+R; TWCR=(1< while(?。═WCR&(1<