首页 > 其他分享 >单片机通信协议

单片机通信协议

时间:2022-12-24 18:26:23浏览次数:42  
标签:SCLK 通信协议 发送 单片机 从机 主机 空闲 时钟

ADC

工作原理

采样——保持——量化——编码

采样:间隔一定时间对模拟信号进行采样,单位时间对信号的采样次数被称为采样率

保持:保持电路将模拟信号保持一段时间,让后级的数字电路完成量化和编码

量化:将连续的模拟信号用有限个离散数字信号近似化

编码:将量化后的结果用二进制或其他进制的形式表示出来

  1. 分辨率:数字量变化最小量时模拟信号的变化量,定义为满刻度与2^n的比值,通常以数字信号的位数来表示
  2. 转换速率:AD转换一次所需时间的倒数,单位时间完成AD转换的次数
  3. 采样速率:两次采样(转换)的时间间隔的倒数,为了保证转换的正确完成,采样率必须小于等于转换速率,即采样时间大于转换时间

UART

UART:通用异步收发器,全双工,串行通信

UART帧格式

image

总线空闲时,处于高电平

起始位:拉低发送一个0表示起始位,随后进行数据发送

发送8位数据,先发送最低位,后发送最高位

奇偶校验位:校验数据的正确性

奇校验:1的数量为偶数则为1,反之为0,偶校验:1的数量为偶数则为0,反之为1

停止位:高电平表示传输停止

波特率

波特率用于描述UART通信时的通信速度,单位为bps,即每秒钟传输的bit数量

通信双方的波特率必须一致,使收发双方的时钟一致

RS232

规定逻辑1的电平在-5到-15V,逻辑0的电平为+5V到+15V,目的是提升抗干扰能力,传送距离可以达到15m

由于TTL电平不符合RS232的要求,往往需要加一个电平转换芯片,如MAX232
存在的问题:

  1. 通信速度较低
  2. 易产生通信干扰
  3. 传输距离短(15m)

RS485

半双工,允许连接多个收发器,使用差分信号进行传输

规定两线之间的电压差在+2V到+6V之间为逻辑1,-2V到-6V之间为逻辑0

A端>B端为1,A端<B端为0

需要使用电平转换芯片将TTL信号转换为485信号,如MAX485

  1. 抗干扰能力强
  2. 通信距离可达1500m
  3. 通信速度快
  4. 可以多节点组网

ModBus协议

基于RS485

帧与帧之间应间隔3.5字符的时间

1字符=1个UART帧

例:9600波特率 1UART帧 = 1bit起始位+8bit数据+1bit停止位

3.5 * 10 * 1 / 9600 = 0.0036s = 3.6ms

ModBus帧格式

地址码(ID) 功能码 数据区 校验码(CRC)
8bit 8bit N * 8bit 16bit
0为广播地址,地址范围1~247,广播时,从机不回应指令 0x03读0x06写0x16写多个

主机命令帧

地址码(ID) 功能码 寄存器地址 寄存器个数 校验码(CRC)
8bit 8bit 16bit 16bit 16bit
01 0x03 0x00 0x00 0x00 0x02 0xC4 0x0B
向地址为01的从机发送 读从机数据,要求从机返回数据 从地址00开始读 读两个寄存器,包含起始地址指向的寄存器 CRC校验

从机回应帧

地址码(ID) 功能码 字节数 数据1 数据2 校验码(CRC)
8bit 8bit 8bit 16bit 16bit 16bit
01 0x03 0x04 0x00 0x01 0x00 0x02 0x2A 0x32
向地址为01的从机发送 读从机数据,要求从机返回数据 寄存器个数 * 2 CRC校验

I2C

半双工

I2C为多主机总线,I2C有冲突检测和仲裁的功能防止错误产生

每个连接到I2C的器件都有一个唯一地址(7bit)

同一时刻只能有一个主机,使用主机进行管理

使用一根时钟线SCL和数据线SDA进行通信

空闲时:SCL和SDA同时高电平

起始信号和停止信号都由主机发出

起始信号:SCL为高电平时,SDA由高电平跳变为低电平

停止信号:SCL为高电平时,SDA由低电平跳变为高电平

数据传输:

  1. 先发送高位后发送低位
  2. SCL为低电平时,允许发送数据,
  3. 发送完一个bit的数据后,要将SCL拉高,SDA不允许变化,保持稳定,等待接收器接收这个bit的数据
  4. 应答位:接收器将SDA拉低为应答(ACK),保持高为非应答(NACK)

应答位:接收器将SDA拉低为应答(ACK),保持高为非应答(NACK)

通信过程

  1. 主机发送起始信号启用总线,发送一个字节数据指名从机地址和读写方向(0:写,1:读)
  2. 被寻址的从机向主机回应应答信号
  3. 主机发送一个字节
  4. 从机回应
  5. ...
  6. 通信完成主机发送停止信号

I2C通信时序

1. 主机向从机发数据

起始信号 从机地址7bit 读写位1bit 从机ACK 数据8bit 从机ACK 数据8bit 从机ACK/NAK 终止信号
主机发送 主机发 主机发:0写 从机发:0 主机发 从机发:0 主机发 从机发:0/1 主机发送

当主机不想继续发送时,发送一个终止信号(SCL拉高的同时,SDA从低电平跳变到高电平)
当从机不想接收时,在接收完主机发送的最后一个字节后,向主机发送NAK

2. 从机向主机发送数据

起始信号 从机地址7bit 读写位1bit 从机ACK 数据8bit 主机ACK 数据8bit 主机NAK 终止信号
主机发送 主机发 主机发:1读 从机发:0 从机发 主机发:0 从机发 主机发:1 主机发

主机不想接收数据时,接收完最后一个字节后,发送一个NAK,再发送一个终止信号

3. 主机发完从机发

起始信号 从机地址 读写位 从机ACK 数据 从机ACK/NAK 起始信号 从机地址 读写位 从机ACK 数据 主机NAK 终止信号
主机发 主机发 主机发:0写 从机发:0 主机发 从机发:0/1 主机发 主机发 主机发:1读 从机发:0 从机发 主机发:1 主机发

主机发完一次数据后,重新开始一次(从起始信号开始),改变读写方向
第一次通信没有发送停止信号,不释放对总线的控制,可以继续进行通信

SPI

SPI有四根线,分别是SCLK时钟线,MOSI主出从入线,MISO主入从出线,CS片选线
全双工,不允许多主机
数据传输时,先发送高位

寻址方式

当主机要与从机通信时,需要相对应从机的片选线上发送使能信号(高电平/低电平,根据从机而定)

同步方式

1 bit数据传输:时钟线在上升沿或下降沿时,发送器发送数据,下一个下降沿或上升沿时,接收器从数据线读取数据

八个时钟周期可以完成1 Byte数据传输

极性和相位

极性(CPOL)表示SCLK空闲时的状态

  1. CPOL=0,空闲时SCLK为低电平
  2. CPOL=1,空闲时SCLK为高电平

相位(CPHA)表示采样时刻

  1. CPHA=0,每个时钟周期的第一个时钟沿(总线空闲时的第一个边沿,下降或上升沿)采样(从机接收数据)
  2. CPHA=1,每个时钟周期的第二个时钟沿采样

SPI有四种模式

CPOL CPHA 说明
0 0 上升沿采样:SCLK空闲时(低电平),主机发1bit数据,SCLK上升沿(本时钟周期总线空闲后的第一个边沿)从机接收该数据,这是一个时钟周期;下一个时钟周期,SCLK拉低,总线空闲,主机发数据,上升沿,从机接数据...
0 1 下降沿采样:SCLK空闲时(低电平),SCLK上升沿,主机发1bit数据,SCLK下降沿(本时钟周期总线空闲后的第二个边沿)从机接收数据,这是一个时钟周期;下一个时钟周期,SCLK拉低,总线空闲,上升沿,主机发数据,下降沿,从机接数据...
1 0 下降沿采样:SCLK空闲时(高电平),主机发送1bit数据,SCLK下降沿(本时钟周期总线空闲后的第一个边沿)从机接收数据,这是一个时钟周期;下一个时钟周期,SCLK拉高,总线空闲,主机发数据,下降沿,从机接收数据...
1 1 上升沿采样:SCLK空闲时(高电平),SCLK下降沿,主机发送1bit数据,SCLK上升沿(本时钟周期总线空闲后的第二个边沿)从机接收数据,这是一个时钟周期;下一个时钟周期,SCLK拉高,总线空闲,下降沿,主机发数据,上升沿,从机接数据...

标签:SCLK,通信协议,发送,单片机,从机,主机,空闲,时钟
From: https://www.cnblogs.com/HelliWrold1/p/17002810.html

相关文章

  • 单片机控制W5300
    /*********************************************************************************@fileW5100.c*本文件包括5个部分:*1.W5100初始化......
  • 单片机
         单片机就是一个小的计算机,不过他没有计算机那么好,方便的输入输出设备,计算机的输入设备就是鼠标,键盘等,方便的很,输出设备就是显示器,将输出非常清晰的显示在屏幕上......
  • 《安富莱嵌入式周报》第296期:硬件电路实现SPI转以太网,单片机3D游戏图形引擎,Linux基金
    往期周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版:https://www.bilibili.com/video/BV1Nv4y1X7Tx1、硬件......
  • MC30P6280单片机OTP芯片IC做马达LED灯饰开发
    产品特性 8 位 CPU 内核 精简指令集,5 级深度硬件堆栈 CPU 为单时钟,仅在系统主时钟下运行 系统主时钟下 FCPU 固定为 2 分频 程序存储器 1K×14 位 OTP 型......
  • 月薪5K单片机工程师逆袭2w+:明白这一点,你的人生也能开挂!
    常常看到这样的观点:1.只要你够坚持,总有一天会成功;2.只要你够勤奋,月薪过万很轻松;3.只要你够努力,老天一定不会辜负你……你是不是很认同这样的说法?恭喜你,又被忽悠了!你有没有想......
  • 针对单片机flash和ram的分析(stm32)
    单片机型号(STM32H750IBKx)STM32H系列问题描述:在裸机开发中,当代码量越来越大的时候,生成的需要烧写的二进制文件也越来越大,片内的flash之后128KB,超过这个数之后......
  • 蓝桥杯之单片机学习(一)——LED指示灯的基本控制
    文章目录​​一、前言​​​​课程内容结构​​​​二、训练任务​​​​三、训练重点​​​​四、74HC138​​​​五、74HC573​​​​六、代码展示​​一、前言课程内容结......
  • 蓝桥杯之单片机学习(三)——共阳数码管的静态显示
    文章目录​​一、训练任务​​​​二、训练重点​​​​三、训练准备​​​​3.1原理图展示​​​​3.2数字对照表​​​​3.3数码管分路​​​​3.4一些解释​​​​四......
  • 项目一 51单片机蓝牙控制继电器
    前言:作者想要帮助一些童鞋和爱好者进行项目构建,但自知能力有限,不喜可论,创作不易,勿喷。系统由STC89C51单片机、4路继电器、蓝牙模块及电源组成。可以说是一个非常简单的设计......
  • STM32单片机的最小系统的组成详解
    经常使用STM32开发的工程师对于它的开发环境的最小系统是必须要有所了解的,特别是硬件工程师在设计硬件的时候对这个最小系统就要更加的深入了解了,如果最小系统的搭建都有问......