硬件I2C读取PCF8574导致复位,请问如何解决?
开发板是阿波罗H743,MCU:STM32H743IIT6.
采用CubeMX配置I2C,操作AT24C02,AP3216C都正常读写。
读用:HAL_I2C_Mem_Read(&hi2c2,AP3216C_ADDR+1,reg,I2C_MEMADD_SIZE_8BIT,&res,1,1000);
写用:HAL_I2C_Mem_Write(&hi2c2,AP3216C_ADDR,reg,I2C_MEMADD_SIZE_8BIT,&data,1,1000);
写PCF8574用:HAL_I2C_Mem_Write(&hi2c2,PCF8574_ADDR,0,I2C_MEMADD_SIZE_8BIT,&DataToWrite,1,10000);
写工作正常,读时出问题,会导致PCF8574复位,读出值是0,PCF8574的所有输出也变成了0
读用:HAL_I2C_Mem_Read(&hi2c2,PCF8574_ADDR+1,0,I2C_MEMADD_SIZE_8BIT,&temp,1,1000);
后改用软件模拟I2C,读取PCF8574操作正常,写也正常。
请问大佬们,有人遇到过吗?是硬件I2C HAL读指令HAL_I2C_Mem_Read(&hi2c2,PCF8574_ADDR+1,0,I2C_MEMADD_SIZE_8BIT,&temp,1,1000);有bug?
能修改下吗?还是只能全部用软件模拟I2C?
非常感谢。
|