1.IIC的接口一般都是OD或者OC门,芯片内部无上拉电阻时,外部需要加上拉电阻才能输出高电平。
2.上拉电阻的最小值受电源电压限制,最大值受负载电容(总线电容)限制。计算公式为:
Rmin=(Vdd(min)-0.4V)/3mA
Rmax=(T/0.874) *C,T=1us 100KHz, T=0.3us 400KHz,C是Bus capacitance
3. RP一般不低于1KΩ。一般IO 端口的驱动能力在2~4mA量级,如果RP阻值过小,VDD灌入端口的电流较大,会导致MOS管不完全导通,由饱和状态变成放大状态,使端口输出的低电平值增大(IIC规定端口输出低电平的最高值为0.4V);同时灌入端口的电流过大,还可能损坏端口。
RP一般不高于10KΩ。由于端口输出高电平是通过RP实现的,线上电平从低到高变化时,电源通过RP对线上负载电容CL充电,这需要一定的时间,即上升时间。端口信号的上升时间可近似用充电时间常数RPCL乘积表示。如果RC充电时间常数过大,将使得信号上升沿变化缓慢,达不到数据传输的要求。
4.I2C总线的传输速率分为标准模式(100Kbit/s)和快速模式(400Kbit/s),负载的最大容限分别是400pF和200pF
5.I2C协议还定义了串联在SDA、SCL线上的电阻Rs。该电阻的作用是抑制总线上的干扰脉冲进入从设备,提高可靠性,一般在100~200ohm左右。该电阻并不是必须的,在恶劣噪声环境中可以选用。
6.IIC从设备的数量受总线电容<=400pF的限制
7.由于一般IIC的应用速率并不高(400kbps),完全可以使用处理器的IO口模拟IIC波形。处理器发送数据时,通过IO口输出高电平,上升时间基本与外部上拉电阻无关,且比用外部上拉电阻上拉到高电平快很多。处理器在接受数据时,即便上拉电阻选的大一些,从设备输出数据的波形上升沿缓慢,但由于处理器使用软件采样的而非硬件采样,因此,对数据传输的结果并不影响。也就是说,使用IO口模拟IIC时序时,上拉电阻阻值可以适当选的大一些。
需要指出的是,使用软件模拟最多只能完成单Master的应用,对于多Master应用,由于需要进行总线控制权的仲裁管理,使用软件模拟的方法很难完成。