作者:
hizuki (ayaka)
2017-09-04 15:24:56※ 引述《vito9580 (vito)》之銘言:
: 各位前輩好,最近在研讀EEPROM 24LC16,但有幾點無法理解,想請教板上的前輩。
: https://i.imgur.com/7vYq54P.jpg
: (figure.1)
: https://i.imgur.com/yrHn1zS.jpg
: (figure.2)
: 圖一的word address該怎麼給?我查24LC16這顆的spec上並沒有像圖二一樣說明address,
: 並且是否master每傳一次data前的寫入address會不一樣?
: 懇請了解I2C的前輩相救,謝謝
你這邊是page寫入,可以從開始的位置連續寫16 bytes的資料進去。
看Fig 2你就可以明白了,
只需要開始的時候指定block閘道開放,在EEPROM發送ACK後指定
第一個word的位置就可以了。後面這個位置,EEPROM內會自動累加。
後面等Slave發ACK過來後就可以傳送新的一筆資料。
然後你用Stop來停止繼續傳送,無論如何第16筆後收到ACK一定
要發Stop不然,EEPROM的內部buffer會溢出,這時候的結果是未知的。
你還詢問block address與word address。關係是這樣的。
The device is organized as eight blocks of 256 x 8-bit memory
所以block address有3bit,控制你要開放這個八個blocks當中的哪一個。
和操作碼,讀寫位元一起組成address high byte。
Word address是每個block當中的偏移位置,單獨構成address low byte。