1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` 我在STM32F401核板上编程I2C主机,没有HAL编程,只使用寄存器。
前3个步骤完全正常,但在重启条件后我无法用R / W 1发送地址。 在这里,您可以使用逻辑分析仪查看时序图。发送重启条件,但之后SCL和SDA都很低。 这是我的代码 i2c_start(); 函数调用
在重启后设置DR之前TXE位为高,之后为低,但I2C不发送任何内容。请指出我错过了什么。 我还用示波器检查了SDA线,没有毛刺或类似情况。 ` |
|
相关推荐
2个回答
|
|
我建议尝试以下方法:
i2c_start:while (!I2C1->SR1 & I2C_SR1_SB);- >while (!(I2C1->SR1 & I2C_SR1_SB)); i2c_sendByte:I2C1->DR = data;移到第一行。替换检查TXE并检查BTF。 不叫i2c_wfw后i2c_sendByte(VOLTAGE_REG_OFFS + 2 * ch);,它将在完成i2c_sendByte如上。 使用i2c_sendAddr而不是i2c_sendByte重复启动后。 此外,在i2c_sendByte和i2c_wfw()中检查AF,但不能正确处理错误。最好不要检查它而不是有不可预测的代码流。我建议查看AN2824中的流程图以及GitHub上非常好的代码示例。
最佳答案
|
|
|
|
楼上是大神,过来学习一下
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2105 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1941 浏览 3 评论
4537 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2084 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2599 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 01:17 , Processed in 0.787213 second(s), Total 75, Slave 58 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号