上拉电阻阻值的确定
由于 I 2C 接口采用 Open Drain 机制,器件本身只能输出低电平,无法主动输出高电平,只能通过外部上拉电阻 RP 将信号线拉至高电平。因此 I 2C 总线上的上拉电阻是必须的!
        
RP 不宜过小,一般不低于 1K Ω
一般 IO 端口的驱动能力在 2mA 4mA 量级。如果 RP 阻值过小, VDD 灌入端口的电流将较大,这导致端口输出的低电平值增大 (I 2C 协议规定,端口输出低电平的最高允许值为 0.4V) ;如果灌入端口的电流过大,还可能损坏端口。故通常上拉电阻应选取不低于 1K Ω的电阻(当 VDD 3V 时,灌入电流不超过 3mA )。
RP 不宜过大,一般不高于 10K Ω
由于端口输出高电平是通过 RP 实现的,线上电平从低到高变化时,电源通过 RP 对线上负载电容 CL 充电,这需要一定的时间,即上升时间。端口信号的上升时间可近似用充电时间常数 RPCL 乘积表示。
信号线负载电容(对地)由多方面组成,包括器件引脚、 PCB 信号线、连接器等。如果信号线上挂有多个器件,负载电容也会增大。比如总线规定,对于的 400kbps 速率应用,信号上升时间应小于 300ns ;假设线上 CL 20PF ,可计算出对应的 RP 值为 15K Ω。
如果 RC 充电时间常数过大,将使得信号上升沿变化缓慢,达不到数据传输的要求。
因此一般应用中选取的都是几 K Ω量级的上拉电阻,比如都选取 4K7 的电阻。
小阻值的 RP 电阻增大了端口 Sink 电流,故在可能的情况下, RP 取值应稍大一点,以减少耗电。另外,通产情况下, SDA,SCL 两条线上的上拉电阻取值是一致的,并上拉到同一电源上。
PCB 布局布线与抗干扰设计
I 2C 信号线属于低速控制线,在手机 PCB 设计时,按通常的控制 IO 对待即可,无需做特别的保护设计,一般不用担心受到噪声源干扰。
但在一些特定的情况下,比如折叠、滑盖机型中, I 2C 的两根信号线需要通过转轴或滑轨处的 FPC ,此时由于信号路径比较长,距离天线比较近,而且 Open drain 的输出级对地阻抗大,对干扰比较敏感,因此比较容易受到 RF 信号源的干扰。在这种情况下,就应适当注意对 I 2C 信号线的保护。比如 I 2C 两条信号线( SDA,SCL )等长度地平行走线,两边加地线进行保护,避免临近层出现高速信号线等。
上拉电阻应安置在 OD 输出端附近。当 I 2C 总线上主从器件( Master & Slave )两端均为 OD 输出时,电阻放置在信号路径的中间位置。当主设备端是软件模拟时序,而从设备是 OD 输出时,应将电阻安置在靠近从设备的位置。
I 2C 协议还定义了串联在 SDA SCL 线上电阻 Rs 。该电阻的作用是,有效抑制总线上的干扰脉冲进入从设备,提高可靠性。这个电阻的选择一般在 100 200ohm 左右。当然 , 这个电阻并不是必须的,在恶劣噪声环境中,可以选用。
            
比如常用的 FM 接收模块或者 Capsense 触摸感应功能块,都是通过 I 2C 接口控制的。 I 2C 接口信号从处理器出发,经过 PCB 上的信号路径,进入上述电路单元。 I 2C 信号线上载有一定干扰,这种干扰虽然幅度并不很大,但还是会影响敏感的 FM 接收模块或 Capsense 触摸感应功能块。此时,可以通过在靠近 FM 模块或触摸感应模块的 I 2C 信号线上串接 Rs 电阻,即可有效降低干扰的影响。此外,上拉电阻端的电源也要进行退耦处理。
软件模拟 I 2C 时序
由于一般的 I 2C 应用速率并不高( 400kbps ),使用处理器的 IO 口模拟 I 2C 波形 , 完全可以胜任(处理器一般担任 Master ,占有 I 2C 通信的控制权,无需担心随机的 I 2C 通信服务中断其他任务的执行)。
处理器分配给 I 2C 任务的 IO 口,要求可以输出高低电平,还能配置为输入端口。处理器根据总线规范以及从设备的时序要求,利用 2 IO 信号线,模拟 I 2C 接口时序波形,进行 I 2C 通信。
处理器发送数据时,通过 IO 口输出高电平,上升时间基本与外部上来电阻阻值无关,且比用外部上拉电阻上拉到高电平快很多。处理器在接受数据时,即便上拉电阻阻值选的大一些,从设备输出数据的波形上升沿缓慢,但由于处理器使用软件采样的而非硬件采样,因此,对数据传输的结果并不影响。也就是说,使用 IO 口模拟 I 2C 时序时,上拉电阻阻值可以适当选的大一些。
需要指出的是,使用软件模拟最多只能完成单 Master 的应用,对于多 Master 应用,由于需要进行总线控制权的仲裁管理,使用软件模拟的方法很难完成。
I 2C 总线空闲的时候,两条信号线应该维持高电平。否则,上拉电阻上会有耗电。特别是在上电过程中, IO 线上电平也应保持在高电平状态。也就是说:当 Master I 2C 使用的是 IO 软件模拟时,一定要保证该两个 IO 上电默认均为输入(或高阻)或者输出高电平,切不可默认为输出低电平。 IO 默认为输入时,可以通过外部上拉电阻将 I 2C 信号线拉至高电平。
          
I 2C 应用中上拉电阻电源问题
在部中分应用中,还存在主从设备以及上拉电阻电源不一致的情况,比如 Camera 模组。在很多设计方案中, Camera 模组不工作时,并不是进入 Power Down 模式,而是直接关闭模组供电 VDDS 。此时,处理器与模组相互连接的所有信号线都应该进入高阻态,否则就会有电流漏入模组;而对于此时的 I 2C 控制信号线来说,由于上拉电阻的存在,必须关断上拉电阻电源 VDDP 。如果上拉电阻使用的是系统电源 VDDM VDDP=VDDM ),无法关闭,就会有漏电流进入模组;因此这种情况下,应该使用 VDDS 作为上拉电阻电源( VDDP=VDDS ),这样上拉电阻电源与 Slave 电源即可同时关闭 , 切断了漏电路径。
另外需要注意的是,在上述应用实例中选择的 IO ,应该选取上电默认为输入(或高阻)才行。
             
 
(原创文章 转载请注明来自 手机设计天下网 www.rd3721.com)