【嵌入式串口通信】由于驱动电平不足导致的数据接收不正常问题

记录一次串口通信过程遇到的问题,接上USB转串口调试,单片机数据接收就正常,不接数据就不正常

1.【场景描述】

单片机和模组通过串口通信,二者的连线如下图图一所示;模组发送数据给单片机时,单片机的数据接受不全

2.【问题复现】

当通过串口调试助手的Rx引脚接入到电路中,如下图图2所示,模组发送的数据单片机能正常接收

或者直接通过USB转串口的Tx给单片机发送数据,单片机接收也无误

请添加图片描述

3.【问题定位】

  • 通过万用表测试,USB转串口的的Rx引脚,默认值为 3v3 高电平
  • 是不是上拉能起到作用?

4.【问题解决】

如下图图3所示,将二者的Tx和Rx连线出用3V3和电阻上拉,经测试问题得以已解决

5.【问题分析】

怀疑是模组的Tx引脚输出的电平不足,从而单片机提前认为是停止位到来导致数据接受不全

净接示波器测试,模组Tx引脚的输出数据的电平值在2V2左右

6.【最终问题定位】

问题出现的原因是:模组和MCD串口引脚电平不匹配

6.1 模组引脚驱动电平

首先,单片机和模组的都是3V3供电,模组的数据手册中描述如下:

模块的 UART 电平为 1.8 V。若 MCU 电平为 1.8 V, MAIN_TXD 与 MCU 的 RXD 直连时,模块的
MAIN_TXD 需接 10 kΩ 电阻上拉至 1.8 V,防止在模块处于休眠模式时 MCU 收到误码信息。
若 MCU 电平为 3.3 V,则需在模块和 MCU 的 UART 连接中增加电平转换电路。
在这里插入图片描述
电平转换电路参考设计:
在这里插入图片描述

6.2 单片机引脚驱动电平

单片机的硬件设计手册中如下图所示,单片机端口识别高电平的最小值为 0.7VCC
即:3.3*0.7 = 2.31 V
然而模组的引脚驱动电平为1.8V,实测用示波器显示2.2V左右。
因此当模组输出1时,电平在1.8V左右,而单片机的识别高电平的最小值为 2.31V,二者驱动电平不匹配,造成了上述问题
在这里插入图片描述

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hh_linux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值