|
这段时间一直在学习cube,研究了关于stmcu上的硬件I2C配置问题,分享一下给各位需要的朋友。 主要功能:实现将一个TX_buf[]存入AT24C64指定地址,然后读出你想读出的数据存入RX_buf[]。 从用户手册可以查到硬件I2C有轮询、中断、DMA三种模式,本实验使用轮训方式。 主函数中配置完成后,加一个小小的HAL延时(一定要有!不加貌似会出现读出乱码),然后往下写。 HAL_I2C_Mem_Write(DevAddress,MemAddress,MemAddSize,TX_buf,Size,Timeout),在主函数初始化后,调用此函数。 部分参数说明:DevAddress是设备地址设为0xA0(4BIT器件码+3位(A2A1A0)片选地址码+1BIT读写); MemAddress是存储器内部写入的起始地址设置为0x00(也可设置为其他,范围为:0x0000---0x1fffh); MemAddSize是存储器内部地址大小,这里设置为0XFF(<0x1fffh)。 然后加一个HAL延时(一定要有,貌似没有就没办法读取!)。 接着写HAL_I2C_Mem_read(DevAddress,MemAddress,MemAddSize,RX_buf,Size,Timeout)。 这样,一个简单的写入->读出过程就完成了! 关于cube的设置问题:由于硬件上,我的A2A1A0均接地,所以在salve feature->primary slave address中设置为0。 |
| 还在用标准库,毕竟比较熟悉。 |
| 学习了 感谢楼主 |
| 看不到函数体 |
| 感谢楼主 |
| 持续观望中,感谢楼主 |
多谢分享心得,学习了
|
| 不错。。谢谢楼主分享!!! |
| 楼主,方便看看我的i2c在哪里出的问题么。https://www.stmcu.org.cn/module/forum/thread-612369-1-1.html |
微信公众号
手机版