本资料深入探讨并提供了针对STM32微控制器I2C通信接口的优化库及应用实例,帮助开发者高效实现I2C总线上的设备通讯。
STM32F10xxx I2C优化示例展示了I2C主设备编程(DMA、中断及轮询)的方法。这是ST官方经过改进的I2C通信库,包含了主从模式下的应用实例,并已在STM32F103C8T6上成功测试过。本人使用该库通过I2C读取了Cyress PSOC3芯片的数据。
在进行通讯时,请注意将设备地址左移一位以匹配最低位的读写控制位,例如SLAVE I2C地址需变为Addr*2的形式。修改注意事项包括:定义ClockSpeed为400000,在调试阶段可以先设置较低的速度如100K(即#define ClockSpeed 100000),并分别设定OwnAddress1和OwnAddress2,这些实际设备地址需要左移一位。
在函数I2C_Master_BufferRead(I2C_TypeDef* I2Cx, uint8_t* pBuffer, uint32_t NumByteToRead, I2C_ProgrammingModel Mode, uint8_t SlaveAddress)中,SlaveAddress参数应设置为从设备的地址(需要左移一位),写操作同样适用。
起初尝试使用STM32 3.5自带I2C库进行调试时遇到了困难,但将上述优化后的库加入到该版本后不到半天就成功解决了问题。