电路中上拉电阻有必要吗?
而在51单片机系统中,不添加上拉电阻并不影响使用,并且也能够正确读写数据。以51单片机为例,除了P0口,另外3个口内部都有弱上拉。
所以似乎外部不用再加上拉电阻也可以。但是毕竟单片机内部上拉电阻能力有限,只能微弱上拉。
另外对于很多单片机,其内部有上拉电阻,但是无一例外,上拉电阻的组织是比较大的,也就是说其上拉能力有限。 根据I2C总线规范,总线空闲时两根线都必须为高:这条准则必须严格遵守,这是之所以规定空闲时必须为高的一个原因,如果要保持“低”,那么就不可能成为“多主”总线的。
上拉电阻的问题:各个I2C接口工作时只检测高、低电平即可,上拉电阻实际上不是十分必要。但问题是,如果直接采用电源的来实现高的话,一旦其他器件拉低就有可能发生危险。
上拉电阻有保护作用。如果确信直接采用电源没问题(比如有短路保护等),也可进行尝试。
问题的关键在于主器件要能正确的拉低或置高,从器件要能明确地区分高、低即可,这是问题的关键,另外时序问题同样不能混乱。 电阻大小的问题:这牵涉到两方面的问题,首先是功耗的问题,其次是速度的问题,二者互相矛盾,如果想尽量提高速度,那么必然牵涉到总线电容问 题。
上拉电阻与总线的电容形成RC,高速时将直接影响通讯。因为总线拉高时有充电时间以及高电平的阀值,如果还没有充电到足以保证从器件能够识别的高电平 的阀值时,主器件就以为完成了一个总线动作的话,那么通讯肯定是不能进行。
如果想尽可能降低功耗,那么就要尽量增大电阻以最大可能的减小电路各部分消耗电流。从而实现整体降低功耗!但不可能无限大,否则充电时间会很成问题。
