STM32 I2C上拉电阻的选择问题

发布者:asd123yui最新更新时间:2019-08-08 来源: eefocus关键字:STM32  I2C  上拉电阻  选择问题 手机看文章 扫描二维码
随时随地手机看文章

从开源的设计中我们可以看到,I2C的上拉电阻可以是1.5K,2.2K,4.7K,然而电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响,一般接1.5K 或2.2K。 
上拉电阻阻值的确定: 


由于I2C 接口采用Open Drain 机制,器件本身只能输出低电平,无法主动输出高电平,只能通过外部上拉电阻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=1us 100KHz, T=0.3us 400KHz   。(C 是Bus capacitance) 
上拉电阻Rp最大值由总线最大容限(Cbmax)决定,Rp 最小值由上拉电源Vio与上拉驱动电流(最大取3mA)决定;于是Rpmin=5V/3mA≈1.7K(@Vio=5V)或者2.8V/3mA≈1K(@Vio=2.8V) 
Rpmax 的取值:参考周立公的I2C 总线规范中文版P33 图39 与P35 图44 

标准模式,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  上拉电阻  选择问题 引用地址:STM32 I2C上拉电阻的选择问题

上一篇:【STM32CUBEMX】增加自定义 Groups 问题
下一篇:STM32硬件I2C问题

推荐阅读最新更新时间:2024-11-05 16:05

嵌入式stm32学习:DMA-存储到存储
main.c #include stm32f4xx.h #include ./led/bsp_led.h /* 相关宏定义,使用存储器到存储器模式必须使用DMA2 */ #define DMA_STREAM DMA2_Stream0 #define DMA_CHANNEL DMA_Channel_0 #define DMA_STREAM_CLOCK RCC_AHB1Periph_DMA2 #define DMA_FLAG_TCIF DMA_FLAG_TCIF0 #define BUFFER_SIZE 32 #define TIMEOUT_MAX 1
[单片机]
STM32的CAN总线调试——与以太网转CAN联调的小问题
现象:单片机与服务器双向通信,服务器发一次数据等待单片机响应,响应完成继续发送,没有响应等待1秒再次发送;单片机向服务器发送数据同理。测试进行了几万次数据交流,发现一个规律:服务器向单片机发送的数据单片机都能够接收,而且正常回应,服务器也能够全部收到,例如服务器发了10000次数据,单片机就能够收到10000次数据也能响应服务器10000次。而单片机向服务器发送的请求,服务器却不一定能够全部收到,但是只要服务器收到的请求,都能够做出响应,比如单片机发出了10000次数据,但是服务器却直接受到了9990次,也给单片机响应了9990次,丢了10次。 遇到这个问题后怎么想也想不明白,为什么单片机响应服务器的数据一个没丢,但是请求服务
[单片机]
<font color='red'>STM32</font>的CAN总线调试——与以太网转CAN联调的小<font color='red'>问题</font>
STM32 MCU的技术特点和应用前景
引言: 随着物联网和智能家居的快速发展,微控制器单元(Microcontroller Unit,MCU)在各种电子产品和系统中扮演着重要角色。作为一种高度集成的芯片,MCU结合了中央处理器(Central Processing Unit,CPU)、随机存取存储器(Random Access Memory,RAM)、Flash存储器以及其他周边设备。本文将介绍STM32 MCU的技术特点和应用前景。 一、STM32 MCU概述: STM32系列微控制器是由意法半导体(STMicroelectronics)公司开发的。该系列MCU基于ARM Cortex-M内核,具有高性能、低功耗、高集成度和易用性等特点。它们广泛应用于汽车、医疗
[单片机]
stm32库函数GPIO_Init()解析
GPIO_Init函数是IO引脚的初始化函数,进行个个引脚的初始化配置,主要接受两个参数,一个是配置引脚组(GPIO_TypeDef* GPIOx),一个是配置的参数( GPIO_InitTypeDef* GPIO_InitStruct),具体如下 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) /*其中第一个参数为那组引脚,每组拥有16个引脚,每组都具有不同的寄存器配置地址,第二个参数是一个数据结构,也就是将基本配置信息放在这个数据结构里面,再将这个结构传入函数进行配置*/ //其中数据机构可以表示为如下 typede
[单片机]
STM32-1-LED点亮与熄灭
led.c文件 #include led.h void LED_Init(void){ //¶¨ÒåÒ»¸öGPIO_InitTypeDefÀàÐ͵ĽṹÌå GPIO_InitTypeDef GPIO_InitStructure; //¿ªÆôPA¿ÚʱÖÓ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //Ñ¡ÔñÒª¿ØÖƵÄPA¿Ú GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; //ÉèÖÃÒý½ÅģʽΪͨÓÃÍÆÍìÊä³ö
[单片机]
一种STM32微控制器处理电机控制的设计和实现
变频器是利用电力半导体器件的通断作用将工频电源变换为另一频率的电能控制装置,能实现对交流异步电机的软起动、变频调速、提高运转精度、改变功率因数、过流/过压/过载保护等功能。变频器集成了高压大功率晶体管技术和电子控制技术,得到广泛应用。变频器的作用是改变交流电机供电的频率和幅值,因而改变其运动磁场的周期,达到平滑控制电动机转速的目的。变频器的出现,使得复杂的调速控制简单化,用变频器+交流鼠笼式感应电动机组合替代了大部分原先只能用直流电机完成的工作,缩小了体积,降低了维修率,使传动技术发展到新阶段。本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M
[单片机]
一种<font color='red'>STM32</font>微控制器处理电机控制的设计和实现
I2C实时时钟/日历芯片在8051系统中的应用
1 PCF8563简介 PCF8563是PHILIPS公司生产的低功耗CMOS实时时钟/日历芯片,芯片最大总线速度为400kbits/s,每次读写数据后,其内嵌的字地址寄存器器会自动产生增量。PCF8563可广泛应用于移动电话、便携仪器、传真机、电池电源等产品中。 PCF8563的引脚排列如图1所示,各引脚功能说明如表1所列。 PCF8563有16个8位寄存器,其中包括:可自动增量的地址寄存器、内置32.768kHz的振荡器(带有一个内部集成电容)、分频器(用于给实时时钟RTC提供源时钟)、可编程时钟输出、定时器、报警器、掉电检测器和400kHz的I2C总线接口。 所有16个寄存器设计成可寻址的8位并行寄存器,但不是所有位
[单片机]
<font color='red'>I2C</font>实时时钟/日历芯片在8051系统中的应用
STM32通过IIC读写EEPROM(24C02)
STM32作为主机I2C,读写24C02 EEPROM 1、 时钟和数据的传输:开始和停止条件,数据在SCL的高电平期间有效,在SCL的低电平期间改变。 2、 开始条件:在SCL高电平期间,SDA产生一个下降沿 3、 停止条件:在SCL高电平期间,SDA产生一个上升沿 4、 应答:成功接收到数据(地址和数据),产生一个应答位(在第9个时钟周期,将SDA拉低) 下面是源程序:原理上说,下面程序再移植时,只要将数据类型变化,可以应用到任何处理器 AT24c02.h #ifndef __24CXX_H #define __24CXX_H #include i2c.h /*********************************
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved