STM8硬件I2C配置

首先感谢网上分享的朋友分享资料,网上有很多教程配置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.需要自己在程序中加入超时判断,防止看门狗复位;

你可能感兴趣的:(技术分享)