RS485 采用差分信号负逻辑, -2V~-6V 表示“0” , +2V~+6V 表示“1 ” 。 RS485 有两线制和四线制两种接线
,4线制实现点对点不能组网现在很少使用。2线制的485总线最多可挂32个节点,被配置成一主多从,通常使用双绞线实现链接,A-A,B-B.
2线制要注意地线问题(少地线出现干扰))
485相比232通讯的优点:
1 接口电压低,与TTL兼容,采用平衡驱动差分接收提高对共模干扰(噪音的)的抑制能力
2实现组网(挂接128个收发器),最远传输距离达3KM,传输速度10Mbps
3 阻抗匹配:
3.1终端电阻:在收发的开始和结束端跨接120欧姆电阻(双绞线的阻抗),特点:简单,但增加功耗不适合低功耗因公场合。
3.2RC匹配:利用C的隔直降低功耗,但C的匹配取值是个难点
3.3利用二极管的钳位作用削弱反射信号改善通讯质量。
驱动芯片:SP3485,控制引脚RO(接收输出)DI(发送输入)/RE,接收允许,DE发送使能(发送接收相连通过一个IO脚来控制)http://csdn.Juming.com/dx/?i=586357078554104&s=13ed9b7cb6e68b12763f34ca216e7fc5 STM32-DMA-485
技术点:
自动收发问题
超时设计
modbus
地址设定方法与指示
当485两线空闲时电压在+-200MV,此时若RXD接收到低电平就容易造成总线错误(收到0X00),解决办法时当距离近时去掉终端电阻;距离远存在反射时通过改变上下拉电阻改变总线压差。
STM32进行RS485收发切换,接收时第一个字节多接收一个“0x00"的问题:根本原因是发送完切换接收的时间太快引起的。譬如先TX(引脚设置发送状态)->发送数据-》RX(引脚设置接收状态)-》接收数据。特别是初始化后设置接收状态进入while等待串口接收中断就会出现这种情况,解决办法可以在设置RX引脚接收状态之后稍微延时。