首页 > 其他分享 >入门秘籍来啦!串口设计如何避免踩坑?看这篇!

入门秘籍来啦!串口设计如何避免踩坑?看这篇!

时间:2024-12-26 11:42:39浏览次数:4  
标签:MAIN 模组 秘籍 电平 串口 波特率 管脚 入门

无论是设计简单的串口通信系统,还是复杂的串口屏应用,掌握这些基础知识都将助你一臂之力。快来动手实践吧,探索串口设计的无限可能!
本文将以Air700ECQ/EAQ/EMQ为例,带你从硬件设计的角度,一起来了解串口设计中的一些关键注意点;软件开发或者AT设置方面不做深入探讨。

一、串口相关管脚

Air700ECQ/EAQ/EMQ系列模组支持2个串口,分别是:

主串口MAIN_UART

调试串口DBG_UART

对应的管脚如下:

注:MAIN_DTR,MAIN_RI管脚严格意义来说,并不能归为串口功能;MAIN_DTR、MAIN_RI是独立的控制功能管脚。

二、串口功能描述

模组的AT指令控制,数据传输都是通过主串口来实现。注意,即使采用二次开发方式,也建议优先用主串口进行外部通信和模组控制。

1. 主串口特性

1)均为TTL电平串口

Air700ECQ/EAQ/EMQ所有串口均为TTL电平串口,电平默认只能为1.8V电平。

注意这点与Air780E/Air780EP等不同:

Air700ECQ/EAQ/EMQ无法通过软硬件配置为3.3V默认电平。

2)默认波特率115200

可以通过AT+IPR指令来配置波特率,最大支持921600波特率,支持自适应波特率。

3)只有主串口支持模组休眠唤醒功能(LPUART)

Air700ECQ/EAQ/EMQ模组在休眠时,所有串口均为关闭状态,只有主串口支持接收串口数据唤醒模组。

注意:在非9600的其他波特率下,进行串口收发数据唤醒时,会丢失前几个字节。

4)MAIN_DTR管脚

为中断输入管脚,用于唤醒模组。DTR管脚内部串联5.6K电阻,而且内部上拉,外部直连即可,不建议外接上拉。

5)MAIN_RI管脚

振铃管脚,当模组收到短信时,会输出120ms低脉冲通知主控来信。

同时也可以通过AT+CFGRI指令设置URC上报提醒:

当AT+CFGRI=1时,网络URC来到时,也会产生120ms低脉冲。

▼ 详细功能逻辑 ▼

待机状态下:

MAIN_RI管脚为高电平。

短信接收:

当收到短信时,MAIN_RI管脚会产生一个120ms的低脉冲。

数据传输:

数据业务(包括 TCP/IP、HTTP、MQTT、FTP)到来时的URC上报,会产生一个120ms 低脉冲。

注:需要 AT+CFGRI=1将功能使能。

其他的URC上报:

当模块主动发起对上位机的URC上报时,也会在 MAIN_RI管脚会产生一个120ms的低脉冲,以通知上位机进行接收。

注:需要AT+CFGRI=1将功能使能。

2. 调试串口

调试串口DBG_UART,用来输出模组的运行日志。无法通过AT指令来操作,但是可以通过AT指令(内部指令)来关闭调试串口的日志输出功能,但不建议。

调试串口固定波特率961200不可更改,不建议连接任何外设,但建议设计时预留测试点。调试串口日志数据有专门的协议,如果用普通的串口工具抓取会显示乱码,只有用专用调试工具,如有需要请联系官方技术人员。

三、硬件设计指导

1. 串口的连接方式

主串口的型号命名很容易让人联想到RS232标准的DB9接口,其实不然,模组的串口连接方式与标准RS232连接方式有所不同。

标准RS232串口连接方式如下图所示,特点是交叉连接。

模组串口遵循的是早期贺氏(HAYES)公司制定的MODEM串口标准,在这个标准下,DTR/DSR/CTS/RTS信号的功能有所不同。

MODEM串口标准标准下,DTR/DSR/CTS/RTS采用的是直连方式。

如下图示:

在逐渐的演变过程中,DCD/DSR/RI逐渐演变为其他的独立功能,在物联网串口应用中仅保留T/RX加流控管脚的5线串口的形式。

但是CTS/RTS的命名规则保留了下来,虽然CTS/RTS采用直连的方式,但是实际上模组的CTS管脚起到的功能是标准RTS功能;模组RTS管脚起到的功能是标准CTS功能。

连接方式如下:

甚至流控管脚也不是必须,就变成了3线串口。

也就是Air700ECQ/EAQ/EMQ支持的方式:

2. 串口的电平转换

Air700ECQ/EAQ/EMQ的串口是TTL电平串口,TTL电平串口会有输入输出判别门限,如下图。

同时,外接MCU或者外设的TTL电平串口同样有判别门限。

一般来说,TTL电平的判别门限高低取决于IO供电电平VDD的高低。如果串口双方的判别门限差别较大,一方的输出高电平落在对方的高电平判别门限下,就容易出现误判的现象。

在串口双方电平不一致的情况,就要增加电平转换电路来转换通信电平。

1)晶体管的电平转换方案:

在串口波特率不高的情况下(如115200),可以通过NPN晶体管的方式进行电平转换。

参考设计如下图:

这种方式的优劣也比较明显,实际应该须注意。

优点:成本低;

劣势:低电平下会被三极管的饱和管压降抬高(通常在0.1V左右,不影响通信);开关速度不够,超过460800波特率时不建议用这种方式。

▼ 设计注意要点 ▼

RXD上拉电源选择:

参考设计选择AGPIO做上拉而没有选择VDD_EXT电源做上拉,是因为VDD_EXT在模组休眠时会关闭,会导致RXD上产生一个低电平,又由于主串口支持休眠唤醒,就导致这个低电平让串口产生中断将模组唤醒,最终导致模组无法休眠。

所以在需要休眠的应用设计上,禁止用VDD_EXT电源上拉串口。

对Air700ECQ/EAQ/EMQ来说,VDD_EXT没有引出,而是由RefVolt代替,其作用与图中的AGPIO3一样。

三极管的基极:

要用较低电平的一方参考电平来上拉,否则容易找出三级管不能完截止。

RXD和TXD的上拉电阻:

在不影响信号质量的情况下尽量加大,一方面是降低休眠功耗,一方面是降低RefVolt的驱动负荷。

对于三极管选型:

选型方面并没有严格要求,通用的3904NPN三极管都能满足要求。

2)电平转换芯片方案:

对成本不敏感的话,优先考虑用电平转换芯片,无论速度,可靠性都很完美。

对于设计方面只要注意芯片选型,同时模组端参考电平注意用AGPIO3,其他的参考具体芯片参考设计即可,没有太多注意事项。

考虑到电平转换芯片价格与通道数量成正相关,也可以采用TX RX用双通道电平转换芯片,其他流控信号用晶体管或者分压方式来做电平转换,兼顾性能和成本。

电平转换芯片选型参考:

TXS0102/TXS0104/TXS0108系列

2/4/8通道,品牌TI

RS0102/RS0104/RS0108系列

2/4/8通道,品牌润石

SGM4553,双通道,品牌圣邦威

今天的内容就分享到这里了~

标签:MAIN,模组,秘籍,电平,串口,波特率,管脚,入门
From: https://www.cnblogs.com/luatos/p/18627242

相关文章

  • USB上网快速入门:RNDIS网卡,手把手教你!
    本文将带你使用RNDIS的方式,搭配Linux主控终端,快速实现USB上网。RNDIS是指RemoteNDIS,基于USB实现RNDIS实际上就是TCP/IPoverUSB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡,从而使Linux可以通过USB设备连接网络。一、Linux驱动配置1.虚拟串口通过串口发送AT指令,Air78......
  • Hal库串口中断接收
    当RXbuff的大小为1024字节,并且使用HAL_UART_Receive_IT进行中断接收时,STM32HAL库会根据配置在接收到一半数据(512字节)和全部数据(1024字节)时调用相应的回调函数。具体来说,以下是如何工作的:工作原理启动接收:调用 HAL_UART_Receive_IT(&huartx,RXbuff,sizeof(RXbuff))......
  • 49、Python入门 Python与AJAX:构建高效Web交互体验
             在现代Web开发中,Python作为后端语言以其简洁高效和丰富的库支持而广受欢迎,而AJAX(AsynchronousJavaScriptandXML)技术则为前端与后端的交互带来了革命性的变化。二者的结合能够构建出高效、流畅且具有卓越用户体验的Web应用。 一、AJAX技术概述AJAX不是......
  • Scala入门基础(28)泛型
    一.泛型二.泛型类三.泛型特质一.泛型需求:定义一个函数,用来将Array中的中间位置的元素值返回Array:表示是一个数组[Int]:表示数组中的元素是整形泛型函数:在定义函数的时候,把参数的类型提取出来,变成一个参数,用[]包起来(演示)泛型是对Array这个数据内部的元素的类型的......
  • Scala入门基础(29)泛型界定
    一.泛型的边界二.泛型的上下界三.泛型的上界四.泛型的下界一.泛型的边界.求list中最大元素需要类型的限定 二.泛型的上下界泛型的上界,下界,对类型的更加具体的约束//爷爷>叔叔>兄弟如果给某个泛型设置了上界:这里的类型必须是上界,及其子类如果给某个泛型设置了下......
  • 掌握Linux命令行的艺术:从入门到精通
    本章目录掌握Linux命令行的艺术:从入门到精通3.1终端介绍与常用命令终端是什么?常用命令速览3.2文件与目录操作文件操作命令目录操作命令文件操作示例图3.3用户与权限管理查看权限修改权限更改所有者创建新用户3.4文本处理工具3.5管道与重定向管道示例重定向示例3......
  • Kotlin入门到深入加强(1):基本介绍和第一个程序
    吧,一.关于本章和Kotlin本章内容如要简单介绍一下Kotlin和创建并执行第一个Kotlin程序什么是Kotlin,优势是什么,它和JAVA的关系又是什么Kotlin是一种静态类型的编程语言,它运行在Java虚拟机上,并且可以与现有的Java代码无缝集成。Kotlin由JetBrains开发,于2011年首次发布,并于2......
  • Git 入门指南:如何高效管理你的代码库
    文章目录Git的介绍安装`Git`创建仓库`Git`三板斧`add``commit``push`冲突问题常用`Git`指令Git的介绍Git是一个分布式版本控制系统,用于跟踪文件的变化并支持团队协作开发。最初由LinusTorvalds(Linux操作系统的创始人)开发,Git在开发者中变得非常流行,尤其是......
  • AE2024零基础入门
    【AE教程】从零开始学剪辑(新手入门AE2024实用版)AE2024零基础入门教程!!!https://www.bilibili.com/video/BV1iH4y1E7Vy 3 6【AE2024基础课】课程大钢【AE2024基础课】1.界面布局【AE2024基础课】2.首选项设置【AE2024基础课】3.导入素材【AE2024基础课】4.新建合成·课程知......
  • Python数据分析_Pandas_数据分析入门_3
    文章目录今日内容大纲介绍1.DataFrame-保存数据到文件2.DataFrame-读取文件数据3.DataFrame-数据分析入门4.DataFrame-分组聚合计算5.Pandas-基本绘图6.Pandas-常用排序方法7.Pandas案例-链家数据分析7.Pandas案例-链家数据分析_GIF_demo了解数据df1.info()df1.describ......