我正在使用 stm8s 控制器和 SDCC 编译器。我正在将基于 SD130S7 I 2 C 的 RTC 与控制器连接。我在沟通过程中遇到问题。我觉得问题是我2C本身没有启动。
我正在使用 STM8S103 的开发板。
我检查了逻辑分析仪,发现 SDA 引脚上只有一个脉冲。
我很困惑为什么 SDA 有脉搏而 SCL 没有。(因为 SCL 是时钟,时钟应该首先出现)。
void init_i2c_master(void)
{
CLK_PCKENR1 |= 0x01; //enable i2c clocks
I2C_CR1 &= ~(0x01); //Disable the i2c before configuration starts
I2C_FREQR = 16;// Set the internal clock 16 frequency (MHz).
I2C_OARH = 0xC0; //set 7 bit addressing mode
I2C_TRISER = 16 + 1;
I2C_CCRL = (uint8_t)(16*5);
I2C_CCRH = 0;
I2C_CR1 |= 0x01; //enable i2c peripheral
I2C_CR2 |= 0x04;
I2C_CR2 &= ~0x08;
I2C_ITR |= (0x01 | 0x02);
}