将STM32F401RC的I2C1与I2C2互联,SDA1连接SDA2,SCL1连接SCL2。程序由CubeMX创建,运行初始化后,两个寄存器的初值见下图
看起来一切正常。 但是,由I2C1执行I2C1->CR1 |= I2C_CR1_START;作为主机发出Start信号之后,I2C1的SR1中的SB=1,I2C2的SR1理应有反应,可实际情况如下图
不知为何是I2C2的SR2的BUSY=1了。这让人觉得不可思议。两路I2C均设置了4.7k的上拉电阻,所有通信引脚均为开漏状态。 |
微信公众号
手机版
HAL_I2C_Slave_Receive_IT (&hi2c2, recv, 5);
HAL_I2C_Master_Transmit_IT (&hi2c1, 0x14, send, 5);
从机是可以正确接收主机发过来的数据的,只是想让从机发信号主机收信号则出现无法完成的情况