[嵌入式专栏](系列一 、协议 - 串口详解)

文章目录

    • 1 . 概要
    • 2 . 物理层
    • 3 . 协议层
    • 4 . 应用层
    • 5 . 小结


【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485


1 . 概要

1 . 作为嵌入式玩家,串口是必备的技能
2 . 串口之所以称之为串口,是因为数据串行传输,这篇文章详述异步串口
3 . 接下来从物理层,协议层,应用层,从下往上深入浅出剖析

2 . 物理层

  1. 无图无真相,直接上图,如图所示,结构及其简洁,双方共地情况下,TX,RX互联,TX发送,RX接收,需要注意双方的电平识别“0”,“1”的阈值电压,若一方5V供电,另一方3.3V供电,此时需要加电平转换电路
    [嵌入式专栏](系列一 、协议 - 串口详解)_第1张图片

3 . 协议层

  1. 无论任何协议,直接看通信波形分析直截了当,如图所示,数据量一共由三个部分组成,起始位,数据位,停止位。最后就是波特率,常用波特率9600,115200,若设9600,则一秒内传输9600个位,则一个位的持续时长为104.16us

[嵌入式专栏](系列一 、协议 - 串口详解)_第2张图片

  • 起始位:串口常态为高电平,第一个下降沿后的电平为起始位
  • 数据位:高电平则为1,低电平则为0,一般8个数据位组成一个字节,个别场合选择9个数据位,第9个数据位为基偶校验位
  • 停止位:当传输完数据位后,最后一个位就是停止位,状态为高电平

4 . 应用层

  1. 芯片自带串口 : 当物理层,协议层都明确后,就可以把数据交给应用层,一般来说芯片外设都自带了串口,因此,软件中配置好串口寄存器,就可以进行收发了,这里建议一种异步轮询方式进行串口通信,即发送数据后,在发送中断轮询下一个字节,莫要在后台循环等待发送完成,我个人框架从时间上考虑向往无阻塞运行。
  2. 普通IO模拟 : 有时候串口数量过多,芯片无额外资源时,可尝试此方案,不过这个方案比较考验芯片以及个人对时序上的把控,对于发送,只需卡好预设波特率时长轮询发送,主要难点在于接收,这里分享一个接收思路,把接收口设为外部中断口,若持续一段时间高电平,触发了下降沿,则串口进行接收,并启动定时中断根据波特率设置中断间隔轮询接收,轮询次数完毕停止往复循环,虽然这里提供了方案,但还是能不用则不用,此方案远不如硬件串口可靠。
  3. 应用层主要再次制定用户通信协议,一般通信的组成部分由帧头,数据长度,数据内容,校验码组成,根据此结构制定的通信协议一般比较可靠且简洁,因此行业内多数采用此结构

5 . 小结

个人风格秉承深入浅出,简洁风格描述,谢谢观看。

技术交流QQ群 : 745662457
群内专注 - 问题答疑,项目外包,技术研究

图片资源本人在网上下载,若有侵权行为,请告知,本人会立刻删除

你可能感兴趣的:(嵌入式,单片机,嵌入式硬件,mcu)