|
正常使用STM32硬件I2C没有问题,本想尝试更好的方法比如DMA方式,却失败了。
这个问题已经看了两天了,思路也有很多,但都没能解决问题
1.该开的中断都已经开启比如DMA通道的中断,I2C事件中断都开启。
2.调用
ret[4] = HAL_I2C_Master_Transmit_DMA(&hi2c1, Buf[4], Buf+6, 1);
i2cState = HAL_I2C_Master_Receive_DMA(&hi2c1, Buf[4], &ret[7], 1);
第二次读总是会返回BUSY,就是说还没发送完的感觉,但从逻辑分析仪上看是发送完了的。
3.还有HAL_I2C_Mem_Read_DMA调用这个接口,从逻辑分析仪上看波形,读取的寄存器的值都是对的,但传进去的参数却还是没有读到正确的值。
HAL库的版本也更新到最新的1.6.0
官方HAL库的文档也看过了,都没有帮助
|
|