你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F401RC的I2C1与I2C2互联,出现奇怪现象

[复制链接]
bucker 提问时间:2021-1-3 11:15 /
将STM32F401RC的I2C1与I2C2互联,SDA1连接SDA2,SCL1连接SCL2。程序由CubeMX创建,运行初始化后,两个寄存器的初值见下图

微信截图_20210103105611.jpg
看起来一切正常。
但是,由I2C1执行I2C1->CR1 |= I2C_CR1_START;作为主机发出Start信号之后,I2C1的SR1中的SB=1,I2C2的SR1理应有反应,可实际情况如下图
微信截图_20210103105709.jpg
不知为何是I2C2的SR2的BUSY=1了。这让人觉得不可思议。两路I2C均设置了4.7k的上拉电阻,所有通信引脚均为开漏状态。
收藏 评论2 发布时间:2021-1-3 11:15

举报

2个回答
bucker 回答时间:2021-1-3 17:15:01
补充一点,硬件上是没有问题的。执行代码
        HAL_I2C_Slave_Receive_IT (&hi2c2, recv, 5);
        HAL_I2C_Master_Transmit_IT (&hi2c1, 0x14, send, 5);
从机是可以正确接收主机发过来的数据的,只是想让从机发信号主机收信号则出现无法完成的情况
butterflyspring 回答时间:2021-1-12 15:32:22
关于I2C寄存器中的SB位是针对master 的状态,可以从参考手册中找到。 另外,根据I2C通讯标准,从机是不能主动发起通讯的,是由主机发起读命令后,从机才可以发数据出来的。
STM32F401 I2C SB.PNG

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版