RS485通讯中,为啥波特率越高,能够传输的距离越短?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RS485通讯中,为啥波特率越高,能够传输的距离越短?相关的知识,希望对你有一定的参考价值。
参考技术A 波特率越高,代表传输信号频率越高。相同的电缆,信号频率越高时,感抗越大,信号在传输线上的损耗也就越大。因此,波特率越高,传输距离越短。2018-10-22 使用SN75176(RS485)通讯与STM32连接发现的问题
参考技术A 项目中使用STM32 UART连接SN75176与外界实现485通讯,通过一个单独GPIO管脚控制485 传输方向(DE/RE),UART设置为波特率9600,数据位8,停止位1,校验位0。通讯过程中发现向串口输出一组数据后,UART中断总会接收到一个字节0x00,而上位机并未发送任何数据。
示波器追踪信号发现当SN75176发送数据时,即DE(PIN3)有效时,R(PIN1)端为低电平,当发送完成切换为RE(PIN2)有效时,同时R(PIN1)由低电平转换为高电平。
根据UART传输协议,空闲时保持高电平,如果传输一个字节0x00,在上述设置下,波形表现为9个bit的低电平。
根据波形猜测UART将R(PIN1)端的最后一部分识别为一个字节0x00。
解决办法:由于RS485本来就是半双工通讯,在发送时不可能有数据接收,因此需要在发送数据时关闭UART接收中断,直到发送完成,DE切换为RE有效,做一次读数操作以清除中断标志位(该数据舍弃),然后打开UART接收中断。程序示意如下:
void USART3_send(uint8_t *p,uint32_t len)
uint32_t i;
uint8_t Giveup; //读数缓冲
USART_ITConfig(USART3, USART_IT_RXNE,DISABLE); //关闭中断
GPIO_SetBits(GPIOB , GPIO_Pin_12); //切换DE有效
……
发送数据
……
GPIO_ResetBits(GPIOB , GPIO_Pin_12); //切换RE有效
Giveup=USART3->DR; //被舍弃的读数
Giveup=Giveup; //避免编译器报警
USART_ITConfig(USART3, USART_IT_RXNE,ENABLE); //打开中断
以上是关于RS485通讯中,为啥波特率越高,能够传输的距离越短?的主要内容,如果未能解决你的问题,请参考以下文章
RS232 RS485 以太网之间的区别是啥?它们的波特率可达到多少?
TTL/RS485/RS232串口通信中波特率|校验位|数据位|停止位的区别和含义