我正在尝试与I2C通信2 STM32,我的配置如下:
7位寻址模式(无双地址,只有OAR1)
100khz速度
启用了ACK(在从属设备上)
已禁用ACK(在主设备上,因为主设备/从设备之间随时只能传输1个字节)
在主/从机上,都将GPIOB(PB6)用作AF的SCL和将GPIOB(PB7)用作AF的SDA。
主密码:
div
从站代码:
left-margin
地址不匹配。我在示波器上看不到SDA和SCL信号的任何响应。我使用4.7kohm的电阻将SCL和SDA都拉至3.3v 每行。(STM32F103C6)。
答案 0 :(得分:0)
目前,在i2c_Master_Config()
的主开始处启用了主I2C模块,然后在sendData()
的末尾将其禁用,再也没有启用。
从属I2C模块在readData()
的开始处启用,并在其结尾处被禁用。
这足以中断通信。应该一直启用I2C外设模块(直到您了解何时应该禁用它)。
p.s。抱歉,我没有深入分析您的代码-很多“魔术数字”而不是助记符位名称使分析变得困难。也许还有其他错误。