首先感谢网上分享的朋友分享资料,网上有很多教程配置STM8硬件I2C,但是也有说STM8硬件I2C有问题的,不过我还是通过实际项目已经调通STM8硬件I2C,所以在此分享经验;
1.选项字节配置
void Flash_Init_I2c(void)
{
FLASH_DeInit(); //恢复FLASH相关寄存器到默认值
FLASH_Unlock(FLASH_MEMTYPE_DATA); //解锁数据EEPROM
FLASH_ProgramOptionByte(0x4803,0x40); //选项字节打开PB5,PB4的 I2C 复用功能
FLASH_Lock(FLASH_MEMTYPE_DATA); //锁定Flash配置功能
}
2.硬件I2C初始化
void Hard_I2c_Init(void)
{
//open I2C option byte
Flash_Init_I2c(); //打开选项字节
//open I2C clk
CLK_PeripheralClockConfig(CLK_PERIPHERAL_I2C, ENABLE);
/* I2C_DeInit */
I2C_DeInit();
/* I2C Initialize I2C_Speed 100000 //100Khz */
I2C_Init(100000, 0x00, I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, 16);
/* enable IIC*/
I2C_Cmd(ENABLE);
}
3.当Debug出现选项字节配置错误时,请打开STVP重新刷过选项字节;
4.需要自己在程序中加入超时判断,防止看门狗复位;