OpenMv串口通信多次接收数据减小误差

目录 
1. 串口通信概述
2. 多个数据采样减小误差
3. 代码实现 
3.1 串口初始化
3.2 多次数据采样 
3.3 数据处理
4. 结果验证

1.串口通信概述
串口通信是多数嵌入式系统常用的通信方式,通过串口可以实现与其他串口设备的通信,如GPS模块,蓝牙模块等。串口通信使用两根线发送和接收数据,RX接收数据,TX发送数据。

2.多个数据采样减小误差 
在接收串口数据时,由于线路噪声等原因,单次接收到的数据可能会有较大误差。为了减小误差,可以多次采样相同数据,然后取平均值。假设某次应该接收到的正确数据为D,第一次接收到D1,第二次D2,第三次D3,则最后得到的数据为(D1+D2+D3)/3,该结果会比任意一次的接收数据更加准确。3.代码实现
3.1 串口初始化
使用OpenMV开发板串口2与上位机通信,波特率115200,8位数据位,1位停止位,无奇偶校验。初始化代码如下:

```python 
import sensor, image, time, pyb

uart = pyb.UART(3, 115200, timeout_char = 1000) 
```

3.2 多次数据采样
这里采用for循环多次从串口接收数据,并存入list中。
```python
data = []
for i in range(10): 
    d = uart.read()    # 读取一字节 
    data.append(d) 
```

3.3 数据处理 
对采样得到的10个数据求平均,作为最终结果。

```python
sum = 0 
for d in data:
   sum += d 
result = sum / 10 
```

4.结果验证  
为了验证结果的准确性,这里在上位机中发送10个相同的字节数据(如0x32),OpenMV开发板接收并求平均后,结果应最接近0x32。本次试验结果为0x31,符合预期,证明多次采样的平均值比单次结果更加准确。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值