sz阿呆 发表于 2017-8-15 16:19:38

STM8 Hardware I2C

最近新使用STM8S003F芯片,在调试硬件I2C的遇到了一个奇怪的问题:示波器仅仅能够量到起始信号,然后一直保持低电平,直到超时。我的理解:不管Slave地址正不正确,SCL应该能够得输出吧,可是什么都没有?下面是程序段。

CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);
I2C_Init(400000, 0xA0,I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, (uint8_t)16 );
I2C_GenerateSTART(ENABLE);
while (!I2C_CheckEvent(I2C_EVENT_MASTER_MODE_SELECT));
{
    I2C_CHECK_TIMEOT();
}
I2C_Send7bitAddress(0xA0, I2C_DIRECTION_TX);
while (!I2C_CheckEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));



{
    I2C_CHECK_TIMEOT();
}

sz阿呆 发表于 2017-8-15 17:56:35

上拉电阻4.7K,把Slave断开,换片新的STM8S003F都不行,发送地址的时候量不到SCL,看来只能上模拟I2C。遇到这种情况的童鞋,知会一声,不胜感激。

toofree 发表于 2018-3-4 13:20:55

请参考,固件库中的样例程序“STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Examples\I2C\I2C_EEPROM”

还有函数“sEE_WritePage()”


你的while后来带了分号,下面的I2C_CHECK_TIMEOT()不执行


sz阿呆 发表于 2018-12-26 10:07:04

I2C_CHECK_TIMEOUT()会执行的
页: [1]
查看完整版本: STM8 Hardware I2C