
取模配置
程序移植过程使用硬件 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还需要 做超时等待,而且加重发机制,避免程序卡死问题。

本文详细探讨了在程序移植过程中遇到的IIC模块配置问题,包括硬件上拉延迟、状态寄存器判断错误及ACK信号检测的超时等待与重发机制。通过实例分享,提供了解决IIC通信故障的有效策略。
1485

被折叠的 条评论
为什么被折叠?



