【嵌入式物联网常用的通信协议UART、RS-232、RS-422、RS-485、CAN、IIC、SPI】

2023-05-16

计算机与嵌入式系统领域的高速串行总线技术

  • 一、串口通信基础知识
    • 1、常见的串行通信标准
    • 2、常见的电平信号及其电气特性
  • 二、UART(通用异步收发器)协议
    • 1、UART消息帧格式
  • 三、RS-232、RS-422、RS-485通信协议
    • 1、RS-232协议
    • 2、RS-422协议
    • 2、RS-485协议
  • 四、CAN通信协议
    • 1、CAN总线具有以下主要特性:
    • 2、 CAN技术规范与标准
    • 3、CAN总线报文信号和网络拓扑
    • 4.、CAN**通信帧**的介绍
      • (1)数据帧
      • (2)遥控帧
      • (3)错误帧
      • (4)过载帧
      • (5)帧间隔
  • 五、I^2^C通信协议
    • 1、总线简介
    • 2、IIC通信过程
    • 3、IIC典型时序
  • 六、SPI通信协议
    • 1、SPI总线的简介
    • 2、SPI通信的过程

一、串口通信基础知识

1、常见的串行通信标准

  • 目前常见串行通信接口标准有RS-232、RS-422、RS-485等。另外,SPI(串行外设接口)、I2C(内置集成电路)和CNA(控制器局域网)通信也属于串口通信。

2、常见的电平信号及其电气特性

  1. TTL电平
逻辑1逻辑0
输入>=2.0V<=0.8V
输出>=2.4V<=0.4V

噪音容限较低,约为0.4V,MCU芯片引脚都是TTL电平
2. CMOS电平

逻辑1逻辑0
输入>=0.7V<=0.3V
输出>=0.8V<=0.1V

噪音容限高于TTL电平,Vcc为供电电压
3. RS-232电平

电平信号名称逻辑1逻辑0
RS-232-15V ~ -3V3V ~ 15V

PC的COM口为RS-232电平
4.USB电平

电平信号名称逻辑1逻辑0
USB电平(Vd+- Vd-)>= 200mV(Vd-- Vd+)>= 200mV

采用差分电压,4线制:Vcc、GND、D+、D-

二、UART(通用异步收发器)协议

是一种通用的串行、异步通信总线,该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信

1、UART消息帧格式

在这里插入图片描述

  • 空闲位:不进行传输数据时,默认为逻辑1,为高电平;
  • 起始位:先发出一个逻辑“0”,表示消息帧的开始;
  • 数据位:紧接着起始位之后,可由5~8位组成,通常传输8位即一个字节。先发送数据的低位,后发送数据的高位;
  • 奇偶校验位:紧接着数据位后面(可有可无),使得“1”的位数应为偶数(偶校验)或奇数(奇校验),校验数据传输是否正确;
  • 停止位:它是消息传输结束的标志,它可以是1位、1.5位、2位的高电平, 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
  • 波特率:是衡量数据传输速率的指标,表示每秒钟传输的位数。例如设置串口的波特率为9600,则表示是1s传输9600个bit的数据,则传送每个位的时间为 1s / 9600 ≈ 104us,从而区分消息帧中每个位传输的数据;

假如从A设备通过串口传输“Hi”给设备B,参数为:波特率9600,无校验位,停止位1位
查询ASCLL表知道 ‘H’对应的二进制表示 0100 1000,‘i’对应的二进制表示 0110 1001,发送效果如下图所示:
在这里插入图片描述
设备A和设备B按照约定的波特率,设备A从start开始,每经过104us向设备B发送一个bit,同时设备B每经过104us向设备A接收一个bit的数据,从而实现数据的传输。
缺点:UART一般直接使用TTL信号来表示0和1,但TTL信号抗干扰能力较差,数据在传输过程中很容易出错;且TTL信号的通信距离也很短;

三、RS-232、RS-422、RS-485通信协议

UART只是对信号的时序进行了定义,而未定义接口的电气特性。
RS-232、RS-422和RS-485标准最初都是由美国电子工业协会制定并发布的。

1、RS-232协议

  1. 现在工业控制的RS-232接口一般只使用RXD、TXD、GND三条线,且PC机一般采用DB-9连接器;在这里插入图片描述
  2. 特性:
  • 工作方式:单端(非平衡);
  • 节点数:点对点通讯(1收1发);
  • 最大传输距离:50ft ( 50 * 0.3048 = 15.24m);
  • 最大传输速率:20kbit/s;
  • 连接方式:点对点(全双工);
  • 电气特性:-3V ~ -15V表示逻辑1,3V ~ 15V表示逻辑0;
    常用芯片有max232、SP232等
    缺点:通信距离短,速率低,而且只能点对点通信,无法组建多机通信系统,且容易受外界电气干扰导致信息传输错误。

2、RS-422协议

RS-422标准定义了一种平衡通信接口,改变了RS-232标准的单端通信的方式,总线上使用差分电压进行信号传输。传输速率提高到10Mbit/s,传输距离长达4000ft=1219.2m(速率低于100kbit/s时),而且运行总线上最多连接10个接收器。

  1. 特性:
  • 工作方式:差分(平衡);
  • 节点数:点对多通讯(1发10收);
  • 最大传输距离:4000ft ( 4000 * 0.3048 = 1219.2m);
  • 最大传输速率:10Mbit/s;
  • 连接方式:一点对多点(四线制,全双工);
  • 电气特性:2V ~ 6V表示逻辑1,-2V ~ -6V表示逻辑0;
    缺点:连接的设备少,抗干扰能力不强,无法完全满足工业需求。
    常用芯片有max232、SP232等

2、RS-485协议

RS-485标准运行连接多个收发器,即具有多站能力,增加了多点、双向的通信能力。

  1. 特性:
  • 工作方式:差分(平衡);
  • 节点数:点对多通讯(1发32收);
  • 最大传输距离:4000ft ( 4000 * 0.3048 = 1219.2m);
  • 最大传输速率:10Mbit/s;
  • 连接方式:多点对多点(两线制,半双工);
  • 电气特性:2V ~ 6V表示逻辑1,-2V ~ -6V表示逻辑0;
    常用芯片有max485、SP3072EEN等,以SP3072EEN收发器芯片的典型应用电路如下
    在这里插入图片描述
    一主多从效果图:在这里插入图片描述

在RS-485总线网络基础下制定的Modbus应用层通信协议可参考传感网应用开发(中级)网络协议报文详解

四、CAN通信协议

CAN(Control Area Network,控制器局域网)由德国Bosch公司于1983年开发出来,最早被应用于汽车内部控制系统的监测与执行机构间的数据通信,目前是国际上应用最广泛的现场总线之一。

1、CAN总线具有以下主要特性:

  • 数据传输距离远(最远10km);
  • 数据传输速率高(最高数据传输速率1Mbit/s);
  • 具备优秀的仲裁机制;
  • 使用筛选器实现多地址的数据帧传递;
  • 借助遥控帧实现远程数据请求;
  • 具备错误检测与处理功能;
  • 具备数据自动重发功能;
  • 故障节点可自动脱离总线且不影响总线上其它节点的正常工作;

2、 CAN技术规范与标准

  • ISO 11898标准的CAN通信数据传输速率为125kbit/s~1Mbit/s,适合高速通信应用场景;而ISO 11519标准的CAN通信数据传输速率为125kbit/s以下,适合低速通信应用场景。
  • CAN技术规范主要主要对OSI基本参考模型中的物理层(部分)、数据链路层和传输层(部分)进行了定义。在这里插入图片描述

3、CAN总线报文信号和网络拓扑

ISO 11898在静态时两条信号线上电平电压均为2.5V左右(电位差0V),此时的状态表示1(称为“隐性电平”状态),当CAN_H上的电压值为3.5V且CAN_L上的电压值为1.5V时,两线的电位差为2V,此时的状态表示逻辑0(称为“显性电平”状态)。在这里插入图片描述
ISO 11519标准在静态时,当CAN_H上的电压值为4.0V且CAN_L上的电压值为1.0V时,两线的电位差为3.0V,,此时的状态表示0(称为“显性电平”状态),当CAN_H上的电压值为1.75V且CAN_L上的电压值为3.25V时,两线的电位差为-1.50V,此时的状态表示逻辑1(称为“隐性电平”状态)。

CAN总线网络拓扑图如下:在这里插入图片描述
高速CAN总线ISO 11898网络被应用在汽车动力与传动系统,它是闭环网络,总线最大长度是40m,求端各有一个120Ω的电阻。
低速CAN总线ISO 11519网络被应用在车身系统,它的两根总线是独立的,不形成闭环,要求每根总线上各串联一个2.2kΩ的电阻
传输介质可用双绞线、同轴电缆和光纤。

4.、CAN通信帧的介绍

(1)数据帧

用途:用于发送单元向接收单元传送数据

  1. 数据帧由7个段构成
  • 帧起始,表示数据帧和远程帧的起始,他仅由一个“显性电平”位组成。
  • 仲裁段,是表示帧优先级的段。标准帧的仲裁段由11bit的标识符ID和RTR(远程发送请求)位组成;扩展帧的仲裁段由29bit的标识符ID、SRR(替代远程请求位)、IDE位和RTR为构成。
  • 控制段,是表示数据的字节数和保留位的段,标准帧与扩展帧的控制段格式不同。
  • 数据段,用于承载数据的内容,它包含0~8B的数据,从MSB(最高有效位)开始输出。
  • CRC段,是用于检查帧传输是否错误的段,它由15bit的CRC序列和1bit的CRC界定符(用于分隔)构成。
  • ACK段,是用于确认接收是否正确的段,它由ACK槽和ACK界定符(用于分隔)构成,长度为2bit
  • 帧结束,用于表示数据帧的结束,它由7bit的隐性位构成。在这里插入图片描述
    在这里插入图片描述

(2)遥控帧

用途:用于接收单元向具有相同ID的发送单元请求数据。
在这里插入图片描述

(3)错误帧

用途:用于当检测出错误时向其他单元通知错误。

在这里插入图片描述

(4)过载帧

用途:用于接收单元通知发送单元其尚未做好接收准备。
在这里插入图片描述

(5)帧间隔

用途:用于分隔数据帧和遥控帧的帧。
帧间隔的构成元素有三个:
一是间隔,它由3bit的隐性位构成。
二是总线空闲,它由隐性电平构成,且无长度限制。只有在总线处于空闲状态下,要发送的单元才开始访问总线。
三是延迟传送,它由8bit的隐性位构成。
在这里插入图片描述

五、I2C通信协议

1、总线简介

IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展;IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步。
在这里插入图片描述

2、IIC通信过程

  1. 主机发送起始信号启用总线;
  2. 主机发送一个字节数据指明从机地址和确定后续主机从机的传递方向
  3. IIC总线上各从机判断主机发送的从机地址是否是自己,匹配的从机发送应答信号回应主机;
  4. 发送器发送一个字节数据;
  5. 接收器发送应答信号回应发送器;
  6. …(循环重复步骤4、5);
  7. 最后通信完成后主机发送停止信号释放总线;

IIC总线发送和停止时序图:
在这里插入图片描述
IIC总线发送数据时序图:
在这里插入图片描述

3、IIC典型时序

  1. 主机向从机发送数据
  2. 从机向主机发送数据
    在这里插入图片描述
    3.主机先向从机发送数据,然后从机再向主机发送数据
    在这里插入图片描述

六、SPI通信协议

1、SPI总线的简介

SPI是由摩托罗拉公司开发的高速全双工同步串行通信协议(一主多从)。 有点类似IIC,但又与IIC选通从设备的方式不同,IIC是通过发送从机地址来选通从机,而SPI是通过拉低连接到从机的NSS引脚对从机进行选通的。

SPI一般应用由四个引脚组成(一主多从):

  • SCLK(Serial Clock):串行时钟,由主机发出;
  • MOSI(Maser Output,Slave Input):主机输出从机输入信号,由主机发出;
  • MISO(Master Input,Slave Output):主机输入从机输出信号,由从机发出;
  • NSS(Slave Selected):选择信号,由主机发出,一般是低电位有效。
    SPI主从连接如图所示:
    在这里插入图片描述

2、SPI通信的过程

SPI是串行通信协议,但是主机占用的引脚明显比IIC和UART多,而主机引脚数会随着从机数量增多而增多。主机在通过MOSI数据线发送数据的同时,从机也会通过MISO将数据传输给主机(收发同时进行),它们以虚拟似缓形拓扑连接。数据通常先移出最高位,在时钟边沿,主机和从机均移出一位,然后在传输线上输出给对方(改变数据)。在下一个时钟沿,主从设备的接收器都从传输线接受该位,并设置为移位寄存器的新的最低有效位(采样数据)。在完成这样一个移出一移入的周期后,主机和从机就交换了寄存器中的一位,传输可能会持续任意数量的时钟周期。传输完成后,主设备会停止时钟信号,并拉高NSS选通线。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【嵌入式物联网常用的通信协议UART、RS-232、RS-422、RS-485、CAN、IIC、SPI】 的相关文章

  • ORB_SLAM系列总结

    1 最早的特征点法 xff0c 并把定位与跟踪分为两个线程是PTAM Parallel Tracking and Mapping for Small AR Workspaces 可以说是特征点法SLAM的起源之一 论文 xff1a http
  • vmware下ubuntu18.04 安装ROS Melodic+gazebo9+PX4并roslaunch运行+QGroundConrtol控制

    官方推荐ubuntu18 04的对应ROS和gazebo版本为ROS Melodic 和 gazebo9 官方指导 xff1a ROS安装 xff1a http wiki ros org Installation Ubuntu gazebo
  • PX4自定义pkg包roslaunch

    创建pkg 首先在Ros工程目录src下 xff0c 创建新的功能包ref catkin create pkg span class token operator lt span pkg name span class token oper
  • PyTorch中FLOPs计算问题

    最近看了很多关于FLOPs计算的实现方法 xff0c 也自己尝试了一些方法 xff0c 发现最好用的还是PyTorch中的thop库 xff08 代码如下 xff09 xff1a device 61 torch device 34 cuda
  • Docker Prometheus(普罗米修斯)监控系统+grafana可视化

    目录 一 Prometheus 概述1 概述2 监控系统作用及Prometheus的特点3 Prometheus 基本服务与作用4 概念 二 Prometheus exporter cadvisor 的部署1 docker部署prometh
  • 收藏的博客 -- Qt有关的GitHub/Gitee开源项目

    收藏的博客 Qt有关的GitHub Gitee开源项目 置顶 libaineu2004 2017 08 18 14 50 30 5843 已收藏 68 分类专栏 xff1a 精品资源推荐 文章标签 xff1a qt github g
  • 【海康摄像头】海康摄像头SDK下载与使用

    文章目录 一 海康摄像头SDK官网下载二 海康摄像头SDK在WinForm WPF中使用三 常用接口函数 xff0c 封装调用函数 一 海康摄像头SDK官网下载 1 进入海康ws官网 xff0c 下载官网SDK和相关文档 2 根据自己应用程
  • 嵌入式面试知识点总结 -- STM32篇

    一 MCU对比 问题 xff1a 问题一 xff1a STM32F1和F4的区别 xff1f 解答 xff1a 参看 xff1a STM32开发 STM32初识 内核不同 xff1a F1是Cortex M3内核 xff0c F4是Cort
  • Linux递归访问文件目录

    Linux递归访问文件目录 include lt iostream gt include lt cstring gt include lt cstdlib gt include lt sys types h gt include lt di
  • 非阻塞connect实现代码

    非阻塞connect实现代码 使用非阻塞IO连接服务端 xff0c 可将sleep替换要执行的任务 xff0c 客户主循环利用epoll监听事标准输入和socket上的事件 xff0c 利用管道将标准输入写入socket 有个问题请教大家
  • make:file not recognized: file format not recognized

    学艺不精 xff0c 在Makefile规则中包含了头文件 xff0c 导致make编译时出现标题错误 去掉Makefile中的 h文件即可 特此记录下
  • C++ accumulate 采坑记录

    C 43 43 accumulate 大数下的采坑记录 总结问题 总结 accumulate 的返回值的类型是第三个参数的类型 xff0c 大数的时候需要注意 问题 具体的思路自行查阅 xff0c 题目给定的数据范围是10 18 xff0c
  • FreerRTOS中的链表概述

    FreerRTOS中的链表概述 一 链表简介二 FreeRTOS中定义过的链表三 任务块中的链表项 一 链表简介 1 FreeRTOS中的链表是结构体模拟的双向链表 xff0c 其链表的内容为 xff1a xff08 1 xff09 lis
  • 【 MDK keil5 生成 .hex文件 .bin文件 stm32】

    MDK keil5 生成 hex文件 bin文件 stm32 1 生成hex文件2 生成bin文件2 1第一种方法2 2高级方式 1 生成hex文件 hex文件的生成通常是默认不选择生成的 xff0c MDK这个IDE对于hex生成还是很友
  • Ubuntu 18.04 拨号上网 PPPoE

    Ubuntu 18 04 拨号上网 PPPoE 解决办法 校园网是深澜系统 xff0c 使用拨号上网进行认证 xff0c 之前在Ubuntu 16 04下拨号比较方便 xff0c 但是到了Ubuntu 18 04下和Ubuntu 16 04
  • IROS2019多传感器融合SLAM方向

    Stereo Visual Inertial LiDAR Simultaneous Localization and Mapping Abstract Simultaneous Localization and Mapping SLAM i
  • C++字符数组中的‘\0’问题

    string 对象没有 0 char text 字符串数组若没有 39 0 39 xff0c 只能当做数组处理 xff0c 若有 39 0 39 xff0c 可以看做字符串 xff0c 可以cou lt lt text xff0c 否则不可
  • IROS2020:全局位置量测与基于优化的VIO紧耦合融合

  • Ubuntu 测试两台电脑之间的网速

    Ubuntu 测试两台电脑之间的网速 前言安装使用服务器端客服端 后续 前言 在Linux下面可以使用命令ping测试两台电脑之间的延迟 类似于下面这样 span class token function ping span 192 168
  • PX4使用FPV DShot电调

    Pixhawk 4使用T MOTOR FPV DShot电调接线教程 前言DShot的优点 接线参数设置开启FMU输出启用 DShot 测试后续 由于种种原因 xff0c 博客停更了好久 xff0c 从现在开始准备把停更许久的博客更新起来

随机推荐

  • 解决rosdep update一直timeout的问题

    解决rosdep update一直timeout 错误内容解决办法 最近在配cartographer的时候需要 rosdep update xff0c 但是一直显示timeout xff0c 简直都要崩溃了 xff0c 一行命令跑一天 xf
  • qgc通过mavros连接到飞控

    qgc通过mavros连接到Pixhawk飞控 mavros设置QGC设置 mavros确实是一个不错的工具 xff0c 在机载电脑上进行无人机开发的时候 xff0c 有时候想调飞控的参数看一下飞控的一些信息 xff0c 但是直接接飞控又不
  • pixhawk使用WiFi模块

    pixhawk使用WiFi 前期准备刷固件安装刷固件软件进入刷固件模式下载固件刷固件 使用接线飞控参数更改使用方法 在使用pixhawk的时候有时候在无人机上不方便搭载处理器 xff0c 这个时候进行外部控制 或者QGC有线方式连接无人机不
  • cartographer+pixhawk飞控+px4固件+ros kinetic+HOKUYO utm-30lx实现无GPS下的起飞

    cartographer 43 pixhawk飞控 43 px4固件 43 ros kinetic实现无GPS下的起飞 cartographer配置launch文件建立更改配置文件 飞控设置测试 前面的博客讲了cartographer和ma
  • 结合无人机室内导航谈谈3DVFH+算法

    无人机室内导航路径规划 障碍规避 在浏览PX4开发手册过程中看见里面提到的一种障碍规避算法 3DVFH 43 该算法在之前做本科毕设时候有所接触 xff0c 不过当时是进行了2D的Matlab仿真 xff0c down个代码改改障碍物形状
  • px4通过QGC地面站测试电机

    px4通过QGC地面站测试电机 打卡控制台测试电机 在安装好旋翼过后其中比较重要的一步就是测试电机的位置和转向是否安装正确 通过地面站的mavlink控制台可以依次对每个电机进行测试 测试过程需要连接电池 xff0c 电机会转 xff0c
  • 提高mavros中IMU话题的发布频率

    提高mavros中IMU话题的发布频率 提高波特率提高方法命令行方式原始IMU数据飞控计算过后的IMU数据总结 更改启动文件 在上位机上很多时候都需要用到无人机的IMU信息 xff0c 我用的飞控硬件是Pixhawk 4 xff0c 感觉I
  • 安装Windows和Ubuntu双系统

    这几天开始动手做毕设啦 xff0c 打算好好过把Linux瘾 xff0c 接下来便是这两天我在联想电脑上安装Windows10和Ubuntu16 04双系统的过程 一 安装方式 一般在Windows下体验Linux的方式有三种 xff1a
  • PX4飞控Avoidance功能包2018论文分享

    PX4飞控Avoidance功能包2018论文分享 PX4官方Avoidance 2018论文引言 xff08 略 xff09 摘要简介相关工作全局障碍规避局部障碍规避对本文启发 方法 3DVFH 算法建立记忆将直方图重投影到3D点从3D点
  • RTAB-Map:适用大范围长周期的开源雷达视觉SLAM库

    RTAB Map xff1a 适用大范围长周期的开源雷达视觉SLAM库 摘要IntroductionROS上的主流SLAM算法基于雷达的算法GmappingHectorICP MapperKarto SLAM和CartographerBLA
  • Ubuntu 16.04安装RealSense ROS功能包

    RealSense ROS安装 安装SDK二进制安装源码编译安装 安装ros包测试 这个包支持D400 系列 SR300 和T265相机 安装SDK 个人推荐源码编译安装 xff0c 源码编译安装比较麻烦 二进制安装 添加RealSense
  • Ubuntu 16.04安装PX4原生固件

    Ubuntu 16 04安装PX4原生固件 添加权限公共依赖安装安装FastRTPS仿真依赖安装硬件编译依赖安装代码下载代码编译总结 本教程参考2019年7月的官网教程写的这片博客 xff0c 个人强烈推荐按照官网的英文版最新教程来配置 x
  • gazebo打不开一直卡在"Preparing your world"

    gazebo打不开一直卡在 34 Preparing your world 34 问题描述解决办法 问题描述 在运行某些程序的功能包的时候 xff0c gazebo启动的时候会一直卡在 34 Preparing your world 34
  • PX4 avoidance 功能包编译问题

    PX4 avoidance 功能包编译问题 问题描述问题排查问题解决 问题描述 在编译的过程中出现下面的错误 CMake Error at span class token operator span usr span class toke
  • mavros 外部控制例程

    mavros 外部控制例程 编写ROS包开始仿真 前期需要安装好ros mavros PX4原生固件 编写ROS包 首先我们为外部控制例程建立一个工作空间 mkdir span class token operator span p Off
  • 解决英伟达NVIDIA Jetson AGX Xavier Desktop Sharing无法运行 + Xavier 配置远程桌面

    解决英伟达NVIDIA Jetson AGX Xavier Desktop Sharing无法运行 43 Xavier 配置远程桌面 修复Desktop Sharing无法打开编译生效配置Desktop Sharing启动远程桌面服务验证
  • ROS Melodic 版本安装+将ROS的源设置为国内的源

    ROS Melodic 版本安装 43 将ROS的源设置为国内的源 添加ROS源下载秘钥安装ROS初始化rosdep配置环境变量完成 前面把Xavier的源改为国内的了 xff0c 更新了一下软件 xff0c 感觉速度还可以 xff0c 接
  • 百度2020校招测试工程师笔试题 石头剪刀布

    Problem Description 西西打算和一头小猪进行N轮剪刀石头布 xff0c 初始时双方的分数都为0 xff0c 对每一轮而言 xff0c 如果不是平局则胜者得1分 xff0c 败者扣1分 小猪告诉西西它会在其中的M轮出石头 x
  • 结构体为什么要内存对齐

    结构体为什么要内存对齐 为什么要内存对齐对齐规则 为什么要内存对齐 不是所有的硬件平台都能访问任意地址上的数据 xff1b 某些硬件平台只能只在某些地址访问某些特定类型的数据 xff0c 否则抛出硬件异常 xff0c 及遇到未对齐的边界直接
  • 【嵌入式物联网常用的通信协议UART、RS-232、RS-422、RS-485、CAN、IIC、SPI】

    计算机与嵌入式系统领域的高速串行总线技术 一 串口通信基础知识1 常见的串行通信标准2 常见的电平信号及其电气特性 二 UART xff08 通用异步收发器 xff09 协议1 UART消息帧格式 三 RS 232 RS 422 RS 48