你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
奏奏奏 发表于 2019-7-22 15:22 谢谢,应该是之前其他回答里贴图出来的说明描述吧。
songshiqun2010 发表于 2019-7-19 09:15 static HAL_StatusTypeDef I2C_MasterRequestWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32 ...
奏奏奏 发表于 2019-7-19 09:25 我用的是这个函数: while(HAL_I2C_Mem_Read(&hi2c1, ADDR_24LCxx_Read, CAN_ID_ADDR_in_24LCxx, I2C_M ...
查看全部评分
す疯Ⅱ恒す 发表于 2019-7-19 09:46 更新协议稍微改一下代码,扩展位数就得了。看器件规格书。
Dandjinh 发表于 2019-7-19 15:49 手册上有说,数据地址还是16位,最高两位是在设备地址的bit1,bit2。
安 发表于 2019-7-19 16:25 更换E2设备后,请按照I2C协议进行更新。像楼上截图所述,E2设备的地址会用两个字节表示。有的设备是通过设 ...
maxtch 发表于 2019-7-22 11:08 根据手册,AT24CM02 地址也是 16 位的,但占用多个 I2C 总线地址。
是的。你甚至可以理解成一片 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。
评分
查看全部评分
评分
查看全部评分
好的,谢谢!值得参考
好的。感谢各位大佬的宝贵意见。
我弄好后看是不是把关键部分分享出来,让其他工程师少走弯路。
谢谢,应该是之前其他回答里贴图出来的说明描述吧。