由于RS-485芯片的特性,接收器的检测灵敏度为± 200mV,即差分输入端VA-VB ≥+200mV,输出逻辑1,VA- VB ≤-200mV,输出逻辑0;而A、B端电位差的绝对值小于200mV时,输出为不确定。如果在总线上所有发送器被禁止 时,即所有485芯片都处于接收态时,接收器输出状态不定,如果为1的话没有问题,如果为0的话,会使接收器认为是新 的一封信文的开始,从而导致通讯异常。 我目前的系统里面有多个485接口,其中有两个是内部两个板子之间的通讯接口,还有两个是用来和外部系统通讯的 接口。我曾经量过不同批次的多个485芯片在总线空闲(或浮空)状态下的输出,发现有的芯片接收器输出为1,有的输 出为0,有的原本输出为1(或0),加上120欧的终端电阻后又变为0(或1)。一般同一批次的输出相同。 目前,对外的485接口无论总线浮空时输出为0还是为1,和计算机通讯时都正常。但内部的485接口如果总线浮空时 输出为1的话,则通讯正常,但一旦焊上120欧的终端电阻就通不上;如果总线浮空时输出为0的话,则通不上,必须焊上 120欧的终端电阻通讯才能恢复正常。 通过对A加上拉电阻到VCC,对B加下拉电阻到GND,强制总线空闲时总线电平VA-VB ≥+200mV,接收器输出为 1,无论加不加终端电阻通讯都正常。 理论上在总线空闲时,接收器输出不确定,485的通讯都应该存在问题。但事实上大部分的设计中并没有加上拉和 下拉电阻强制总线电平,而且通讯也没有问题。这点让我一直疑惑不解,哪位高手能够解答? |