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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版