STM32控制lora串口通信不稳定/误码率高的原因分析

        最近看到有同学在使用stm32搞lora的串口通信,我也曾使用51、FPGA搞过串口通信。串口也是公认的极其不稳定,大概几百个码(甚至几十个)就会出现错码。

        那这个的原因是什么呢?我认为是牺牲了误码率,来换取异步通信系统的低复杂度。

        1.第一点在于异步通信,缺少时钟同步

        众所周知,最简单的串口通信是检测到起始位的一个0码或1码,连续接收后续的8个码元,而接收码元是通过固定的时钟抽样判决实现的。这样的逻辑在有线基带传输时效果会比较好,因为线路短、频带宽。而在无线远距离传输中,由于频域是有限的,而且信道干扰,因此接收端解调后的波形往往不是那么理想。如下图所示。

        至于频域有限为什么会导致码元波形不是矩形,此处不在赘述,详见通信原理。

        图里画的就是一种很理想的情况,发送方与接收方的时钟恰好对齐,此时抽样判决的效果就非常好。

        但是大部分时候,是对不了那么齐的,往往是下面这种情况。即不在最佳判决门限

        这时候就非常容易发生误码。

        2.第二点在于ascll码传输

        串口通信一般使用较低的波特率进行传输,最低是9600byte/s,这么低的速率占频带是很窄的,为什么还会误码?因为串口通信是以8位为一组的,错一个码就会导致一组码错误。极大地增加了错码的概率。

        3.第三点在于直流分量(maybe)

        这一点是猜测的。因为STM32的串口通信是单极性码零电平和正电平分别对应着二进制代码0和1,因此从频域的角度看,含有非常多的直流分量,这就会使信道中的衰减非常强(直流是最容易被吸收和阻挡的嘛)。

        当然,由于我不太懂lora的调制,有可能这一点已经被解决了。即在STM32传输给lora模块时,单极性码可以被转换为双极性码等等。

本人通信小白,只是根据自己的感想和通信原理的所学分析一下,希望批评指正~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值