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通讯中,为啥波特率越高,能够传输的距离越短?的主要内容,如果未能解决你的问题,请参考以下文章

波特率19200 RS485信号能传多远

RS232 RS485 以太网之间的区别是啥?它们的波特率可达到多少?

RS485信号,波特率为9600,传输距离一般为多远?

TTL/RS485/RS232串口通信中波特率|校验位|数据位|停止位的区别和含义

2018-10-22 使用SN75176(RS485)通讯与STM32连接发现的问题

UART,串口,RS232,RS485等等,之间有啥联系和区别?