嵌入式硬件通信串口启用流程

发布者:SparkCrafter最新更新时间:2024-01-11 来源: elecfans关键字:嵌入式  串口 手机看文章 扫描二维码
随时随地手机看文章

一、串口启用流程

开讲前,先找几款芯片的串口demo程序瞄一眼。

依次有STM32的V3.5标准库、nRF52832的官方demo以及51核的STC15系列单片机的官方DEMO。


图片

图片

图片

从以上的部分demo例程来看,在启用串口的时候,需要配置的那几个参数有波特率、数据位、校验位、停止位等,从demo的源码中也是能够体现出来的。

而略有不同的是,在引脚配置灵活的ARM中,需要针对引脚进行配置。

二、验证输入输出

完成了串口的初始化,即可对输入输出进行操作,来验证串口是否可以正常的发送和接收数据。

一般的,最直接的方式就是向输出寄存器写入数据,就可以让芯片去完成UART信号输出到对应的引脚上。

如下图依次有STM32的V3.5标准库、nRF52832的官方demo以及51核的STC15系列单片机的官方DEMO。

图片

图片

图片

验证串口的输出,即在串口初始化成功后,对串口的输出寄存器写入数据,而芯片引脚则使用USB转TTL模块连接,USB端插入计算机的USB口,利用计算机的串口助手软件实现对数据的收发。

三、调试-输出

开发调试过程中,输出的内容基本上就是想查看的变量值、代码的执行位置跟踪、算法或者某些运算的结果等等。这些输出,仅用于调试阶段,而在人机调试过程中,使用计算机的串口助手软件进行交互,则输出的数据应该便于识读和判断。

1. C库函数printf格式输出重定向到串口输出

输出串口数据过程中,需要向寄存器逐字节传入数据的,而在传送之前必不可少的,就是将要发送的数据、字符放到同一个Buffer后,执行轮询的方式传送直到buffer内容全部被传送。

而这个“放”的过程也是需要做些计算、判断,尤其是增加必要的字符来描述输出信息,保证信息的可识读。

在C标准库printf函数就有格式输出的功能,利用这个接口更便于调试输出这个过程。

这就需要将printf函数重定向到串口输出上!

实现重定向只需3步:

  1. Options for target选项卡内勾选UseMicroLIB


    • 在串口实现的 .c文件内,将stdio.h文件和stdarg.h文件包含进来* *

  2. 重新定义int fputc函数的内部实现

图片

图片

完成以上3步,即可利用printf函数来格式化输出,并且能够在串口上接收到。

2. ANSI C标准中有几个标准预定义宏:

LINE :源代码中的行号(字符串形式)

FILE :当前*.c源码文件的文件名(字符串形式)

DATE :编译日期(字符串形式)

TIME :编译时间(字符串形式)

STDC :当要求程序严格遵循ANSI C标准时该标识被赋值为1;

__cplusplus:当编写C++程序时该标识符被定义。

有了上一步实现printf函数的重定向到串口后,基本就可以完美使用串口进行调试程序。

调试过程中可利用ANSIC标准中的内置宏,比如__LINE__可以很方便跟踪代码执行到哪一行。

图片

四、调试-输入

串口的接收,有轮询、中断、DMA等方式。

轮询方式,特点是消耗芯片资源,否则容易丢数据;

中断方式,特点是响应快、资源占用低;

DMA方式,各个芯片的配置不同而无法每款芯片都有该功能,所以代码兼容性可移植性较差。

一般地,对输入的数据进行分析判断时,如果是轮询的方式,则直接在收到后即判断;中断和DMA方式,都可以考虑存到buffer后再分析处理。

图片

图片

五、初见数据协议解析

如果是简单几个字符的指令,可以用上述那样简单判断,但是在稍微中等级别的工程项目中,用那样的方式都已经很不便于处理和扩展了。

比如有一串数据,并且长度不确定,将会超过10个字节、20个字节、100个字节甚至更多,那么这时候就必须使用协议解析的方式。

通常的,数据协议都会有协议头、长度、校验、数据内容等部分组成,数据将以包的形式进行收发,这时候使用解析的方式,对数据包进行解析。

这就是广泛使用的“ 起始式协议 ”。

实际的产品中有IC/ID读卡器模块的接口协议:

图片

也有使用在PM2.5传感器上的:

图片

这些都属于开发的模块产品,对外使用串口通信,并且数据协议采样了“起始式”的帧结构模式。


关键字:嵌入式  串口 引用地址:嵌入式硬件通信串口启用流程

上一篇:基于RT-Thread的RoboMaster电控框架(六)
下一篇:SAR切换电容ADC的基本原理

推荐阅读最新更新时间:2024-10-30 06:27

基于路径覆盖的嵌入式软件动态测试研究
0 引言 目前,嵌入式软件已广泛的应用在各个领域:如工业控制、通信设备、信息家电以及航空航天等领域,应用越来越广泛,复杂性也日益增加。但由于嵌入式软件实时性强、I/O通道少、内存资源受限、与硬件及硬件驱动紧密关联、CPU种类繁多等特点,决定了嵌入式软件的开发和测试必须在交叉编译环境下进行,即开发及测试工具运行在宿主机上,而被测程序运行在软硬件资源紧张的目标机上。仅仅在开发环境下进行嵌入式软件测试,难以保障其测试结果的有效性;而仅在目标机上进行测试,由于软件运行的不可视性,又使得测试者难以知晓程序当前运行状态,以及代码的覆盖情况。因此对嵌入式软件覆盖测试技术的要求也更高。 软件测试是一种有效地保证软件质量的重要手段。常用的软件
[测试测量]
基于路径覆盖的<font color='red'>嵌入式</font>软件动态测试研究
基于LabVIEW和ARM嵌入式数据采集与远程传输控制系统
 基于嵌入式网络的远程数据采集系统具有不受地理环境、气候、时间的影响,小型便携,使用灵活方便,交互操作性好,传输速率高,可靠性高,功耗低和移动性好等优点。目前常用的嵌入式CPU中,ARM由于性价比在同类产品中比较突出,目前用得越来越多,尤其是结合开源的嵌入式Linux操作系统以后,更是得到越来越多设计者的青睐。LabVIW作为一种功能强大,简单易用和设计灵活的图形化编程语言,已经广泛地被工业界、学术界和研究实验室所接受,越来越多地应用在虚拟仪器、测试测量、数据分析、信号处理以及远程控制中。本设计中,远程数据采集系统采用基于ARM和嵌入式Linux的方案来实现。采用高性能的ARM嵌入式微处理器Samsung S3C2440作为系统的核
[测试测量]
基于LabVIEW和ARM<font color='red'>嵌入式</font>数据采集与远程传输控制系统
基于嵌入式Linux的智能手机系统设计
摘要:介绍以MotorolaMX1作为中央处理器、Wavecom公司的Q2403A作为无线收发模块、嵌入式Linux作为操作系统的智能手机系统的设计与实现。该设计可以实现GSM语音通信、GPRS上网及PDA相关应用软件等功能,具有结构清晰、易于开发等优点。 关键词:Linux 嵌入式系统 智能手机 随着手持通信设备市场的快速发展,手机的功能逐渐增多。现在手机已经不只是用于语音通信的手持设备,而成为集成了短信、彩信、上网以及移动办公等附加功能的嵌入式通信平台。集成了这些功能的手机被称为智能手机。近年,嵌入式处理器的运行速度和功能都有了很大的提高,使得许多以前只能在PC上实现的应用,现在都可以在手持设备上实现。目前,市面上的智能
[嵌入式]
嵌入式Linux系统下Microwindows的应用
摘要:通过对嵌入式GUI软件Microwindows进行分析并与X window进行对比,阐述Microwindows用于嵌入式设备上的优点;简要论述Microwindows的体系结构和图形应用程序接口;介绍其设备驱动特性、API、客户机/服务器模型、画图机制和FLTK。 关键词:嵌入式系统 Microwindows Linux 引言 在进入后PC时代以后,嵌入式设备以一种无法抑制的迅猛速度普及和发展到日常生活及工作当中,众多知名开发商为了抢占市场和争夺利润,竞相推出各种性能优异的软硬件及内核芯片。鉴于以视窗为代表的桌面操作模式取得巨大成功,该模式目前已成为国内外开发者们在嵌入式设备中的首选方案。 近几年,随着Linux技
[应用]
嵌入式实时操作系统μC/OS-II下的多串口通信编程方法
本文介绍了以LPC2365为核心处理器、嵌入式实时操作系统μC/OS-II下的多串口通信编程方法。对于固定长度的短字节帧数据,通过设置合适的字节触发深度,一次中断完成数据接收任务;对于变长的长字节帧数据,则通过多次中断和等待延时的方法判断数据稳定并完成帧数据的接收;对于大量数据的接收和发送采用建立FIFO数据队列的方法。 通过这些措施较好地完成了多串口较大数据量的通信任务。 国产某掠海恒高硬体拖靶在拖曳飞行时,需要将自身的各种参数通过无线链路实时上传至拖曳母机,同时实时接收拖曳母机的遥控指令完成相应的动作。拖靶自身的参数包括:开关高控状态、 蓄电池 电压 、无线电高度表值、飞行高度装定值、垂向加速度值、舵翼角、温度值、普通
[单片机]
<font color='red'>嵌入式</font>实时操作系统μC/OS-II下的多<font color='red'>串口</font><font color='red'>通信</font>编程方法
STM32CubeMx新建工程(串口
新建一个具有串口功能的 这个是在线更新,我们取消不用更新。 选择对应的板子型号 点击进行配置 ①②选择串口 ③使能串口 ④可以根据自己需求修改波特率及一些参数(默认也可以) 出现绿色表示配置OK ①选择工程 ②工程名称 ③工程路径 ④ 选择自己的开发环境 打钩 生成.c 和.h 点击右上角生成
[单片机]
STM32CubeMx新建工程(<font color='red'>串口</font>)
STM32 库函数处理 串口的例程
stm32使用库函数编写USART还是很方便的,现在转几个例子: 首先是不使用中断的方法使用usart1,管脚pa9,pa10,此方法已在f3discovery上验证通过,来源:https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2Fusart%20code&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved