取模配置
程序移植过程使用硬件 IIC,后面发现没有波形,或者发送了一个。
测试发现程序开启内部上拉需要等待一段时间,否则高电平没有建立起来。
硬件IIC 开始把判断标志位搞错了,应该判断状态寄存器最高位。
static void lcd_send_cmd(uint8_t c)
{
// IIC地址
I2CMSA = 0x78;
I2CMBUF = 0x00;
// start+1byte data
I2CMCR = 0x03;
// 等待传输完成
while((I2CMSR & 0x80) != 0x80);
// 清空标志位
I2CMSR = 0x00;
I2CMBUF = c;
// 启动传输 开始信号+1字节数据
I2CMCR = 0x01|0x04;
// 等待传输完成
while((I2CMSR & 0x80) != 0x80);
I2CMSR = 0x00;
}
按照上面的组合可以很快配置出IIC。
开始也出现配置不对的问题,
以后发现这个问题,直接找对应的例子初始化,不用起自己写,浪费时间。
后面发现需要检测ACK信号,但是判断ACK还需要 做超时等待,而且加重发机制,避免程序卡死问题。