由于第1次使用I2C器件,在设计PCB的时候,不知道给AT24C02的SDA和SCL引脚加上拉电阻。那么由于I2C器件的引脚是开漏结构,那么在不加外围上拉电阻的情况下,MSP430的任意2端口是否可以模拟SCL,SDA,操作来完成正确的读写。
MSP430的端口是推挽输出吗?
其实很多人都讨论,确不懂得从IO口的电路结构出发,严密的讲解下。好让我们了解。
因为I2C的器件,一般都是OP结构,手册一般建议必须需要1个外部的上拉电阻,××R和MSP430单片机都具备上拉电阻,当数据线处于接收的时候,可以设置为上拉,但阻值比较大,所以不加外部上拉的情况下牺牲了传输速度。
目前的问题是,MCU的IO口模拟时钟线的时候,是没有上拉电阻?还是推挽输出?但是××R有20MA,MSP430有6MA的驱动能力,因此在输出状态下,是否是内部的上拉电阻很小,比如××R的VCC+上拉电阻+推挽PNP开,从而具备了20MA的驱动能力,如果是这样,就不需要外部的上拉电阻了。只是牺牲了速度,毕竟引脚都有寄生电容。
大家注意了:1系列的不带内部上拉电阻!!。2系列带内部上拉。我重新开板了。
不知所云
430不都是带上拉电阻的 IIC规定必须上拉电阻。请LZ 不要误导大家。
re楼主:430的内置上/下拉电阻只在输入状态下才起作用吧?
IIC的sla_ve只有控制SDA到低电平的权利,没有控制SDA为高电平的权利。
那么,当430作为master接收sla_ve数据的时候,sla_ve只能拉低SDA到低电平,而数据的高电平就只能通过上拉电阻将SDA上拉到VCC才能实现。
由此可知,上拉电阻是对sla_ve而言的。
所以,当430作为sla_ve时,如果内置有上拉电阻,可以不接外置上拉电阻。
当430作为master时,如果sla_ve与430不是同一个VCC,那sla_ve就要上拉电阻。如果sla_ve也没有内置上拉电阻,就要外置上拉电阻。
说一千道一万,为了充分满足IIC规范的要求,请在SCL和SDA上使用上拉电阻。
---------------------------------------------------
ps:我只在SDA上接了阻值为100k的上拉电阻
2搂不错
恩,保险起见,加上拉。
我听说1系列的MSP没有内部上拉功能,如果有,按照2搂说法,就可以不加外围上拉了。
假如你采用芯片内部自带上拉电阻的话,设置内部上拉起作用,外部就不用再加上拉电阻了。