本帖最后由 nikotin 于 2022-9-26 17:16 编辑
我参考I2C_EEPROM的代码,按照手册上的说明,通讯之前设置了smbus相关的位:
i2c_mode_addr_config(I2CX, I2C_SMBUSMODE_ENABLE, I2C_ADDFORMAT_7BITS, I2CX_SLAVE_ADDRESS7);
i2c_smbus_type_config(I2CX, I2C_SMBUS_HOST);
i2c_smbus_arp_config(I2CX, I2C_ARP_DISABLE);但第二次发送从设备地址后开始后读数据时,I2C_FLAG_SBSEND这个标记会一直不被置位。设备在stm32下是可以正常读取信息的,但是改为gd32就不行了。关键是官方也没给smbus的例子,网上也查不到类似例子,一个小事情,折腾好几天了。
|