(未完)
1 Byte 定址 (AT24C01 ~ AT24C02)
複製 hal_i2c.c, hal_i2c,h, hal_sensor.c, and hal_sensor.h 這四個檔案並 include.
以 HalSensorReadReg() 與 HalSensorWriteReg() 讀寫. (未完)
超過 1 Byte 定址 (AT24C04 ~ AT24C16)
(待補)
2 Bytes 定址 (AT24C32 ~ AT24C512)
對於使用二個 Byte 定址的 EEPROM, (~AT24C512)
我找到這個網頁, 寫的很清楚, 大推.
ziye334: CC2541对AT24CXX系列存储器的支持
( http://ziye334.lofter.com/post/2435a3_2a2e1b4 )
( http://ziye334.lofter.com/post/2435a3_2a2e1b4 )
不過使用上有個小問題, 讀取的時候, memory address 要先除以2.
(如寫入至 0x0100 的資料, 要從 0x0080 讀, 原因不知)
超過 2 Bytes 的定址 (AT24CM01 ~ AT24CM02)
若是記憶體超過 1M bit (即 128K Bytes), 則記憶體的定址空間超過二個 Byte, 需要把位址超過 16 bit 的這幾個 bit 嵌入 Device Address 中.
以 AT24CM01 (1024Kb) 為例, 則要把 memory address bit 16 (由 bit 0 起算) 加入至 device address 的 bit 1.
以下分別為我寫的 Read 與 Write 部份, 可以正確運作.
(其中 Read 部份很怪, 要在 dummy write 之後, 再寫入 I2C_STOP 才能開始 read 的 I2C_STRT, 這點跟 spec 中不同, 目前還搞不懂.)
(其中 Read 部份很怪, 要在 dummy write 之後, 再寫入 I2C_STOP 才能開始 read 的 I2C_STRT, 這點跟 spec 中不同, 目前還搞不懂.)