这回说说IIC接口吧。
IIC接口可以说是最简单的总线协议了。SCL和SDA两根线就组成了一个总线,可以连接多个主机从机,通过简单的协议控制总线占用。在实际使用过程中经常作为芯片的配置接口。芯片的寄存器配置初始化设置多采用IIC接口或者稍有改进的IIC接口。虽然是一个简单的接口,功能也很简单,不过要注意的东西也有一些。
很多参考设计里IIC总线的上拉电阻是4.7K。为什么选择这个阻值呢?
IIC的两根总线信号都是开漏输出,器件本身只输出低电平,高电平需要外部的上拉电阻实现。上拉电阻阻值的大小决定了驱动电流的大小,如果上拉电阻的阻值过小,比如100欧姆,假设3V的系统电压,驱动电流就会有30mA,这么大的电流很容易损坏端口。相反,上拉电阻阻值过大又可能驱动能力不够。
除了驱动能力考虑意外,还有一个信号上升时间的考虑。在信号从低变高的过程中,上拉电阻和线上电容组成了一个等效的RC电路,上升时间近似等于上拉电阻和线上电容的乘积。线上电容包括引脚电容,器件电容,信号线上电容等等。这些因素是我们比较难控制的。那么我们可以通过改变上拉电阻来简单的控制总线上信号的上升时间。4.7k电阻基本上能满足绝大部分IIC速率和实际设计的要求。
当然最后一个原因就是成本。上拉电阻选取本身就是一个范围,4.7K是一个中值,另外也是标准电阻,经济实惠量又足,不需要买百分之一精度的电阻。
在一些特殊的设计场合,如总线上连接的器件较多,总线布线较长或者IIC的高速应用等情况下,我们可以适当的减小上拉电阻的选择,如2.2K,1.5K等等,减少信号的上升时间,以适应设计的要求。