0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:帝核 作者:中断 2023-07-05 17:22 次阅读

一、串口启用流程

开讲前,先找几款芯片的串口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传感器上的:

图片

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

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

    关注

    31

    文章

    5363

    浏览量

    121114
  • STM32单片机
    +关注

    关注

    59

    文章

    549

    浏览量

    58801
  • 射频读卡器
    +关注

    关注

    0

    文章

    4

    浏览量

    6615
  • nRF52832
    +关注

    关注

    11

    文章

    206

    浏览量

    32406
  • 嵌入式通信
    +关注

    关注

    0

    文章

    2

    浏览量

    2151
收藏 人收藏

    评论

    相关推荐

    串口通信系统的设计流程是什么?

    本文设计了一种基于PowerPC嵌入式内核MPC565和串口模块EMM-8M-XT的多串口通信系统,给出了系统总体的硬件架构和软件设计
    发表于 09-05 07:58

    ZYNQ嵌入式系统的开发流程

    部分的始发点。通过本次实验我们将了解 ZYNQ 嵌入式系统的开发流程,熟悉 ZYNQ 嵌入式最小系统的搭建。本章包括以下几个部分:1.1 简介1.2 实验任务1.3 硬件设计1.4
    发表于 10-27 07:50

    嵌入式开发流程

    嵌入式开发流程一般是在PC机的Windows系统下安装Ubuntu虚拟机,搭建嵌入式开发环境及交叉编译环境,开发完成后,编译得到bin文件,然后在Windows下将bin文件通过串口
    发表于 11-05 06:06

    嵌入式开发流程是怎样的?

    嵌入式开发环境及交叉编译环境,开发完成后,编译得到bin文件,然后在Windows下将bin文件通过串口或网络下发到嵌入式板卡,程序在嵌入式板卡上运行。1. RS232
    发表于 11-08 06:24

    嵌入式产品的研发流程是怎样的

    嵌入式软件和嵌入式硬件两大部分,针对嵌入式硬件和软件的开发,在普通的电子产品开发过程中,是不需要涉及的。
    发表于 11-09 07:38

    嵌入式硬件开发的流程是怎样的

    关注、星标公众号,直达精彩内容来源:网络素材整理:李肖遥传送门: 总结了一份嵌入式产品研发的具体流程之前,我们详细讲述了嵌入式产品的研发流程,那么在这一节,我们具体以
    发表于 11-09 06:58

    嵌入式系统串口通信分层结构设计与实现

    介绍了以STC89C54RD+为核心具有ISP(在线可编程)特性的嵌入式系统中,PC 机与该系统串口全双工通信的实现。给出了串口通信协议,提
    发表于 08-29 10:43 23次下载

    基于S3C2410的嵌入式串口通信设计

    本文通过基于S3C2410的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串行
    发表于 12-23 16:11 120次下载

    嵌入式系统的USB虚拟串口设计

    嵌入式系统的USB虚拟串口设计 现代嵌入式系统中,异步串行通信接口往往作为标准外设出现在单片机和嵌入式系统中。但是随着个人计算机通用外
    发表于 09-27 16:07 1089次阅读
    <b class='flag-5'>嵌入式</b>系统的USB虚拟<b class='flag-5'>串口</b>设计

    嵌入式硬件通信接口协议中的串行通信接口-SPI

    本节继续讲嵌入式硬件通信接口协议中的另外一个串行通信接口-SPI。相比于UART串口协议,SPI又有着其独特之处。
    发表于 02-05 11:35 1667次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>硬件</b><b class='flag-5'>通信</b>接口协议中的串行<b class='flag-5'>通信</b>接口-SPI

    基于有限状态机的嵌入式系统串口通信帧同步方法设计

    串口通信是日前单片机和DSP等嵌入式系统之间,以及嵌入式系统与PC机或无线模块之间的一种非常重要且普遍使用的通信方式。在
    发表于 04-10 08:48 2737次阅读
    基于有限状态机的<b class='flag-5'>嵌入式</b>系统<b class='flag-5'>串口</b><b class='flag-5'>通信</b>帧同步方法设计

    嵌入式串口间的通信

    嵌入式串口间的通信1. 操作内容2. 操作步骤3. 操作结果4. 串口通信5. 操作步骤6. 具体操作7. 具体结果1. 操作内容利用
    发表于 10-20 19:36 9次下载
    【<b class='flag-5'>嵌入式</b>】<b class='flag-5'>串口</b>间的<b class='flag-5'>通信</b>

    视频教程-嵌入式Linux文件与串口编程-嵌入式

    嵌入式Linux文件与串口编程 嵌入式工程师、嵌入式讲师、10多年
    发表于 11-02 15:06 15次下载
    视频教程-<b class='flag-5'>嵌入式</b>Linux文件与<b class='flag-5'>串口</b>编程-<b class='flag-5'>嵌入式</b>

    嵌入式产品开发流程

    嵌入式软件和嵌入式硬件两大部分,针对嵌入式硬件和软件的开发,在普通的电子产品开发过程中,是不需要涉及的。
    发表于 11-04 10:06 36次下载
    <b class='flag-5'>嵌入式</b>产品开发<b class='flag-5'>流程</b>

    总结了一份嵌入式硬件开发的具体流程

    关注、星标公众号,直达精彩内容来源:网络素材整理:李肖遥传送门: 总结了一份嵌入式产品研发的具体流程之前,我们详细讲述了嵌入式产品的研发流程,那么在这一节,我们具体以
    发表于 11-04 10:51 18次下载
    总结了一份<b class='flag-5'>嵌入式</b><b class='flag-5'>硬件</b>开发的具体<b class='flag-5'>流程</b>