比如说目前EEPROM我只敢用到AT24C512这样的,地址最多是65535,因为HAL库中地址最大只能是16位(65535) 现在需求变了需要增加存储数据量,我打算用上AT24CM02,但是不知道怎么处理,所以来论坛求助。谢谢!
是的。你甚至可以理解成一片 AT24CM02 相当于占用四个连续地址的四片 AT24C512。
static HAL_StatusTypeDef I2C_MasterRequestWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Timeout, uint32_t Tickstart)
楼主说的是这个 DevAddress 只有16位吗?
这个是设备地址 一般是7或10位。数据地址是在数据段根据器件容量填充的。
https://www.stmcu.org.cn/module/forum/thread-621092-1-1.html
用这个pack应该能解决问题。
我用的是这个函数:
while(HAL_I2C_Mem_Read(&hi2c1, ADDR_24LCxx_Read, CAN_ID_ADDR_in_24LCxx, I2C_MEMADD_SIZE_16BIT,ReadBuffer,1, 0xFFFFFFFF)!=HAL_OK)
{
HAL_IWDG_Refresh_with_reset(&hiwdg);
}
其中这个 I2C_MEMADD_SIZE_16BIT 是16位,这个参数还有一个 是 8位的
没用过这个api,看来在下是答非所问了。
评分
查看全部评分
评分
查看全部评分
好的,至少方向明确了。我试一下。谢谢!
手册上有说,数据地址还是16位,最高两位是在设备地址的bit1,bit2。
评分
查看全部评分
评分
查看全部评分
好的,谢谢!值得参考
好的。感谢各位大佬的宝贵意见。
我弄好后看是不是把关键部分分享出来,让其他工程师少走弯路。
谢谢,应该是之前其他回答里贴图出来的说明描述吧。