关于RS_485串行总线的一些经验

RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。

主要特性

图1 仅供参考

典型的串行通信标准是RS232和RS485,它们定义了电压,阻抗等,但不对软件协议给予定义,区别于RS232, RS485的特性包括:

1、 RS-485的电气特性:逻辑‘’1‘’以两线间的电压差为+(2—6)V表示;逻辑‘’0‘’以两线间的电压差为-(2—6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片, 且该电平与TTL电平兼容,可方便与TTL 电路连接。

2、RS-485的数据最高传输速率为10Mbps 。

3、 RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。

4、RS-485接口的最大传输距离标准值为4000英尺(约1219米),实际上可达 3000米,另外RS-232-C接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。应用RS-485 可以联网构成分布式系统。RS-485的‘’节点数‘’主要是依‘’接收器输入阻抗‘’而定。

图2

因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。因为RS485接口组成的半双工网络一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输。 RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口RS485采用DB-9(针)。

串口协议只是定义了传输的电压,阻抗等,编程方式和普通的串口编程一样

//使用时需要注意的一些问题-->以下是经过实际测试应用的(例子是使用了STM32F1芯片)

//发送单个字节数据
void _485_SendByte(u8 ch){
    USART_SendData(USART2, ch);
    while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);//等待发送数据寄存器为空
    while(USART_GetFlagStatus(USART2, USART_FLAG_TC ) == RESET);//等待发送数据完成(这句比较重要,如果你未等发送完成,就切换485为接收状态,可能导致数据错乱)
}
//发送485 字串命令
void _485_SendCmd(u8 *dat, u16 len)
{
	_485_SendEnable(ENABLE);//485为发送状态
	delay_us(200);          //必须要等待一点时间,如果不加延时,可能会有还未切换到发送状态后而导致数据错乱(实际测试发现)
	for(u16 i=0;i<len;i++)
	{
		_485_SendByte(dat[i]);
	}
	_485_SendEnable(DISABLE); //485为接受状态	
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值