打印
[技术讨论]

关于RS232传输距离和波特率的讨论

[复制链接]
1086|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如题,我用串口调试助手接到我的板子上,将波特率设置为9600,接收到的数据正常,我的线长5m
uint8_t  Rx_dat3[]={0x5A,0xA5,0x07,0x82,0x00,0x84,0xC1,0x01,0x00,0x03};//切图
int i,n,len;
int main(void)
{                       
        delay_init();                     //延时函数初始化          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        uart_init(9600);         //串口初始化为115200
        LED_Init();                             //LED端口初始化
        while(1)
        {               
                //按键
                if(KEY==0)//松开
                {
                                LED1=1;
                }                                       
                if(KEY==1)//按下按键
                {
                        for(i=0;i<10;i++)
                        {
                                USART_SendData(UART4,Rx_dat3[i]);
                                delay_ms(20);
                                LED1=0;
                                LED2=1;
                                LED3=0;
                                LED4=0;
                        }
                        delay_ms(300);
                }                       
        }         
}


然后我将波特率设置为115200,接收到的数据就变异常了,代码部分只修改了波特率的设置。
uint8_t Rx_dat3[]={0x5A,0xA5,0x07,0x82,0x00,0x84,0xC1,0x01,0x00,0x03};//切图
int i,n,len;
int main(void)
{       
delay_init();        //延时函数初始化       
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600);        //串口初始化为115200
LED_Init();        //LED端口初始化
while(1)
{       
//按键
if(KEY==0)//松开
{
LED1=1;
}       
if(KEY==1)//按下按键
{
for(i=0;i<10;i++)
{
USART_SendData(UART4,Rx_dat3[i]);
delay_ms(20);
LED1=0;
LED2=1;
LED3=0;
LED4=0;
}
delay_ms(300);
}       
}       
}





网上搜了下,确实有说波特率会影响232的传输距离,但具体的一个选择关系应该如何判断,譬如多少距离应该选择对应的什么波特率,有没有一个定量的标准。

使用特权

评论回复

相关帖子

沙发
LcwSwust| | 2022-4-26 09:51 | 只看该作者
本帖最后由 LcwSwust 于 2022-4-26 09:55 编辑

这个时候,你就需要一个示波器了。原因大致是232芯片驱动能力太弱,就像引脚串联了电阻,传输线有电容,数据波形就像RC充放电。

使用特权

评论回复
评论
zyj9490 2022-4-27 08:24 回复TA
应是边沿不够纯净。振玲,边沿拉长,位平台时间变短,都是问题,看看波形是否正常的(接收端)。如果正常,是否考量中断时间是否不及时导致的。 
板凳
QuakeGod| | 2022-4-26 23:00 | 只看该作者
RS232, 115200 波特率,传输100米 毫无问题。

使用特权

评论回复
地板
xmar| | 2022-4-27 09:18 | 只看该作者
输出距离取决于许多因素:
(1)RS232接口芯片及周边电路,特别是4个升压电容的容量与品质以及232芯片电压大小。
(2)传输线质量。如,导线铜芯直径大小,是否屏蔽,等等。
(3)波特率、CRC校验、出错重传,等容错处理;对传输误码率的要求,等等。

使用特权

评论回复
5
天意无罪| | 2022-4-28 08:38 | 只看该作者
波特率肯定和传输距离有关系啊,因为232是电平驱动,传输距离远,损耗越严重。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

227

主题

578

帖子

6

粉丝