ROS移动机器人的通信接口电路设计

描述

本文来聊聊ROS移动机器人中控制器与树莓派进行传输信号的通信接口电路设计。在此之前回顾下在本项目第一篇文章中提到的硬件框图,如下图所示:

ROS

从图中可以清楚地看出,树莓派通过wifi和PC机通信,同时树莓派通过串口与控制器通信。 目前市面上的树莓派3B,4B在电路设计时已经加入了WIFI模块,可以通过编程与PC机通信,这里的电路设计我们不用考虑。 树莓派与主控进行通信时需要使用USART通信协议。 此时常用的方法是使用TTL模块将USB协议转成USART协议,这时就不可避免的在树莓派上插入USB转TTL模块,然后通过杜邦线与主控连接。

使用这种方法,看似方便,但是系统的整体布线看起来会显得非常凌乱,还会存在接触不良的问题,引起控制系统的不稳定。 对于电路设计集成度和完美主义追求者,这点是不能容忍的。 所以在控制器设计中,直接将通信协议转换电路集成到了PCB板中,提高了系统集成度和系统的稳定性。

USB转TTL电路设计

在控制器原理图设计中,集成了如下USB转TTL电路。 这个电路比较常见,它支持串口通信,与STM32程序一键下载功能(可省去购买仿真器)。

ROS

在电路中VD10用于防止电流倒灌,防止在STM32不需要供电时,CH340G芯片的TX引脚依然给主控芯片供电引起的程序的错误执行情况。

芯片中V3引脚除了在不同电压供电模式下接法不同,对于电容数值选用也是需要注意的。 V3引脚的电容用于内部电源节点退耦,来改善USB传输过程中的EMI,通常容量在4700pF到0.1uF范围,建议容量为0.01uF。

在CH340G芯片设计中需要外接12M石英晶振和与之匹配的22pf高频起振电容。 为芯片在通信过程中提供时钟基准。 在PCB布局和布线时需要保证晶振走线尽可能短,在晶振走线下方不要布其他信号线,当条件允许时,可以对晶振走线进行包地处理,以防止时钟信号受到干扰。

STM32一键下载电路实现原理

下面我们来看看CH340G是如何实现STM32一键下载功能的。

STM32有以下三种启动模式:

ROS

从表中可以知道,使用串口烧写程序,需要配置BOOT0为1,BOOT1为0,如果想STM32一复位就运行代码,需要配置BOOT0为0,BOOT1配置为什么都可以,为了实现这个功能,可以设计一个电路,通过CH340G芯片的DTR#和RTS#引脚的信号来控制电路状态,从而间接控制STM32的RESET和BOOT0引脚的信号, 实现一键下载功能。 控制电路如下图所示:

ROS

当使用FlyMcu软件时需要选择DTR的低电平复位,RTS高电平进BootLoader模式,如下图所示,这样在进行程序烧写时,DTR和RTS引脚就能够进行控制一键下载电路在适当的时刻,使STM32复位引脚和BOOT0处于正确的电平,实现STM32复位与程序烧写。

ROS

首先FlyMcu控制DTR置低,则DTR#输出高电平,同时RTS置高,则RTS#输出低电平。 这时三极管Q1和Q2同时导通,NRST引脚被拉低单片机复位,BOOT0引脚拉高为1。 延时一段时间后FlyMcu控制DTR为高电平,则DTR#为低电平,RTS#持续保持为低电平,三极管Q1截止单片机停止复位,此时BOOT0依然维持高电平1,单片机进入ISP模式,这时就可以实现STM32一键烧写程序了。 其中DTR#和RTS#的波形如下图所示。

ROS

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分