I2C總線的讀操作的流程
1. 當前地址讀
EEPROM內(nèi)部具有保持當前地址的寄存器。讀取當前地址的數(shù)據(jù)時,不需要指定地址。只要單純給出讀指令就可讀出數(shù)據(jù)。讀取完畢后,內(nèi)部所保持的當前地址將自動進位。
圖1 I2C存儲器的讀操作(1)
圖2 I2C存儲器的讀操作(2)
數(shù)據(jù)讀操作后的ACK/NoACK信號由主機返回,但必須返回NoACK信號。
2. 隨機讀
隨機讀是由主機指定任意的地址讀取的。利用寫指令設定地址,如果賦予讀指令則可以讀出當前地址。所以,與字節(jié)寫操作時相同,在第1字節(jié)的數(shù)據(jù)后面給出地址。在這里,一旦發(fā)送出數(shù)據(jù)就成為寫操作,在此設置開始條件,取消向?qū)懖僮鞯倪w移而發(fā)出讀指令,將從事先設定的地址中讀出數(shù)據(jù)。
此時,DEVSEL數(shù)據(jù)(前7位數(shù)據(jù))必須設定與最初寫指令所發(fā)送的相同的值。
3. 順序讀
在當前地址讀操作之后,如果主機返田ACK信號,則為順序讀模式,器件將準備下一個地址的數(shù)據(jù),主機取回該數(shù)據(jù)。一旦到達要讀出的最終地址,主機將返回NoACK信號,通知器件這已是最后的數(shù)據(jù)。
4. 順序隨機讀
當指定任意地址、希望由此連續(xù)讀出數(shù)據(jù)時,可利用該模式。只要認為這是與對應于當前讀的順序讀相同的模式即可。
順序隨機讀模式與隨機讀同樣進行讀操作,接收到數(shù)據(jù)后如果是ACK應答,則器件將準各下一個地址的數(shù)據(jù);如果是最終數(shù)據(jù),則返回NoACK信號,結(jié)束數(shù)據(jù)的傳輸。
評論