IIC的原理
现在大部分的外设控制信号都是用 IIC 信号,IIC 信号主要的优点是可靠,简单,兼容 性好。IIC 有握手协议,还是时钟线同步信号线,通信的准确率是 100%的,一个总线可以挂 多个设备,节省 IO 口。协议只需要读取两个 IO 口的点平,很容易用软件模拟 IO 口的方式 实现,所有控制器芯片都可以使用。IIC 可以跑各种各样的速率,只要 IO 口足够快,几乎所 有的速率都可以跑。所以 IIC 是所有外设控制信号的首选。
IIC 调试常见的问题:
- 连接到控制芯片的 IIC 的序号。控制芯片 IIC 有可能有几个通道,需要确认该外设 IIC 连接到控制芯片的序号。
- 外设的 IIC 速率。有时候外设的 IIC 速率是比较低的,要注意控制芯片的速率不能高于 外设的规格书。
- 连接到控制芯片的不同外设的 IIC 地址不能一样。IIC 地址一样,外设会冲突。并且注 意 IIC 规格书是 8 位地址还是 7 位地址。
- 连接到控制芯片的 IIC 设备不能相互干扰。有些时候 IIC 设备上电时,会出现瞬间脉冲 干扰 IIC 信号。而连接同一路 IIC 的设备有可能由于该设备的 IIC 脉冲干扰而陷入死循环,从 而把 IIC 拉死。如果是主控拉死,可以通过复位主控的 IIC 可以恢复。就是在机器 在上电外设之后(确认是那种会拉死 IIC 的外设),都对主控的 IIC 进行复位。 如果是外设 拉死 IIC,一般是没有办法解决。只能尽量避开这种现象,采用的原则是哪个外设会拉死 IIC, 那个外设要放在最后面上电。
- 有些时候,外设对于 IIC 的信号要求比较高,一般来讲,IIC 传输数据位,时钟线在低 的时候,数据线应该要先预设好要传输的电平。如下图
数据变化的时间最好是时钟电平的中心位置。有些主控默认的不是这样子,这样会导致一些 器件误判把数据位判断为起始位或者结束位。 - 有些外设的 IIC 命令之后,要做适当的延时才能下另外的命令。否则会出错。因为外 设收到 IIC 命令之后,要执行命令,执行命令需要时间。不同外设执行不同命令的需要延时 都是不一样的。往往这种信息在规格书都是没有说明的,而且出现的问题也都是概率性的, 只能调试的时候注意去检查 。
- IIC 的访问一般只跟硬件关联,硬件通了,IIC 就可以访问。所以调试 IIC 一般要看下供 给外设的电源电压是否正确,时钟频率和幅度是否对,IO 口电平是否正常。