相信不少设计者在进行学习时,都是从较为简单且经典的器件或电路开始着手,STM32就恰恰符合这一特点,因此不少新手在进行单片机学习时都是先从STM32开始。在本文中,小编将为大家介绍在STM32中的I2C上拉电阻的选择问题。
从设计过程中我们可以发现,I2C的上拉电阻通常为1.5K、2.2K、4.7K,然而电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响,所以一般接1.5K或2.2K。
上拉电阻阻值的确定
由于I2C接口采用OpenDrain机制,器件本身只能输出低电平,无法主动输出高电平,只能通过外部上拉电阻RP将信号线拉至高电平。因此I2C总线上的上拉电阻是必须的。
RP不宜过小,一般不低于1KΩ:一般IO端口的驱动能力在2mA~4mA量级。如果RP阻值过小,VDD灌入端口的电流将较大,这导致端口输出的低电平值增大(I2C协议规定,端口输出低电平的最高允许值为0.4V)。如果灌入端口的电流过大,还可能损坏端口。故通常上拉电阻应选取不低于1KΩ的电阻(当VDD=3V时,灌入电流不超过3mA)。
RP不宜过大,一般不高于10KΩ:由于端口输出高电平是通过RP实现的,线上电平从低到高变化时,电源通过RP对线上负载电容CL充电,这需要一定的时间,即上升时间。端口信号的上升时间可近似用充电时间常数RPCL乘积表示。信号线负载电容(对地)由多方面组成,包括器件引脚、PCB信号线、连接器等。如果信号线上挂有多个器件,负载电容也会增大。比如总线规定,对于的400kbps速率应用,信号上升时间应小于300ns。假设线上CL为20PF,可计算出对应的RP值为15KΩ。如果RC充电时间常数过大,将使得信号上升沿变化缓慢,达不到数据传输的要求。因此一般应用中选取的都是几KΩ量级的上拉电阻,比如都选取4K7的电阻。
I2C上拉电阻计算公式
Rmin={Vdd(min)-o.4V}/3mA
Rmax=(T/0.874)*c,T=1us100KHz,T=0.3us400KHz。(C是Buscapacitance)
上拉电阻Rp最大值由总线最大容限(Cbmax)决定,Rp最小值由上拉电源Vio与上拉驱动电流(最大取3mA)决定。于是Rpmin=5V/3mA≈1.7K(@Vio=5V)或者2.8V/3mA≈1K(@Vio=2.8V)。
Rpmax的取值:参考周立功的I2C总线规范中文版来说,标准模式下100Kbps总线的负载最大容限<=400pF。快速模式下400Kbps总线的负载最大容限<=200pF,根据具体使用情况、目前的器件制造工艺、PCB的走线距离等因素以及标准的向下兼容性,设计中以快速模式为基础,即总线负载电容<200pF,也就是传输速度可以上到400Kbps是不成问题的。于是Rpmax可以取的范围是1.8K~7K@Vio=5V对应50pF~200pF。根据Rpmin与Rpmax的限制范围,一般取5.1K@Vio=5V,负载容限的环境要求也容易达到。在2.8V系统中,console设计选3.3K,portable/handset等低供耗的设计选4.7K牺牲速度换取电池使用时间。
总的来说:电源电压限制了上拉电阻的最小值。负载电容(总线电容)限制了上拉电阻的最大值。补充一点,在I2c总线可以串连300欧姆电阻RS可以用于防止SDA和SCL线的高电压毛刺。
本文从阻值的计算与确定等方面,来对STM32中的I2C上拉电阻问题进行了讲解,并给出了I2C上拉电阻的计算公式。对于STM32和上拉电阻之间存在疑惑的朋友不妨花上几分钟来阅读本文,相信一定会有意想不到的收获。
声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。
微信关注 | ||
技术专题 | 更多>> | |
2024慕尼黑上海电子展精彩回顾 |
2024.06技术专题 |