串口通信那些事儿:通信电平转换电路

通常我们使用串口通信时会出现电平不匹配的时候(例如主控MCU使用2.2V供电,那么其产生的高电平则为2.2V那么如果你要是用串口通信模块,并且是3.3V或者5V供电的模块,那么你会发现串口助手并没有数据被接收到),那么此时便需要一个电平转换电路:其实就是把主机发送的高电平变为接收数据的从机所能识别的高电平而已,就那么简单!
在这里插入图片描述
如上图所示,如果2.2VMCU发送的高电平直接发送给5V的串口模块,那么串口模块并不认为2.2V是高电平,需要经过电平转换成串口模块所能识别的高电平,比如5V,所以需要电平转换电路。
常见的电平转换电路:
①单向电平转换电路
在这里插入图片描述

通过二极管进行高低电压的隔离,实现电平转换。
当MCU TXD发送高电平时,由于二极管,那么IC RXD将会接收到2.2V的电平,即高电平,当MCU TXD发送低电平时,二极管导通,那么IC RXD将会接收到低电平。
一般MCU的IO端口都会有钳位二极管,如下图
在这里插入图片描述
也可以直接往MCU发送高电平,会被钳位住,但不建议使用。
②双向电平转换电路
在这里插入图片描述
当IO low输出低电平时,由于R1R2分压,所以Vgs大于Vgson,所以MOS管导通,IO high接收到低电平;当IO low输出高电平时,由于Vgs小于Vgson,所以MOS管截止,IO high接收到高电平。
当IO high输出高电平时,由于IO low被上拉电阻钳位住(只有IO low输出低电平时MOS管才会导通),MOS管截止,IO low接收到高电平;当IO high输出低电平时,由于MOS管的寄生二极管,IO low会接收到低电平。

注意:在MCU工作在内部振荡器模式时,在低电压工作的时候由于电压变低,内部振荡器产生的时钟会发生偏移,导致系统时钟不准确,那么此时如果你是用的UART是由硬件产生的波特率的话,那么你的波特率也会跟着系统时钟偏移而偏移,例如你工作在5V,设置内部振荡4MHz,产生19200的波特率,那么一个bit位的时间为:1/19200=52us,之后你工作在2.2V,硬件产生的UART每bit位时间偏移为56us,如果此时你用逻辑分析仪去分析那么变回产生错误的结果!
如果需要避免,则用逻辑分析仪去卡每一bit的时间,查出每bit的时间偏移是多少,然后进行相应的加减,例如52us偏移至56us,那么你在产生波特率时就计算为48us就行了,逻辑分析仪继续用19200波特率进行通信,那么你会发现数据正常了。
切记切记,需要卡准确时间!!!!!!
切记切记,需要卡准确时间!!!!!!
切记切记,需要卡准确时间!!!!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值