通信协议

串口通信详解
IIC通信详解
SPI通信详解
CAN通信详解

文章目录

  • 通信协议
  • IIC通信
    • IIC的寻址方式
    • IIC的传输协议
    • IIC的应答机制
    • IIC传输协议函数(根据IIC传输协议,模拟IO口IIC)
    • IIC正常通信过程(很重要!!)
      • 写操作
      • 读操作
    • IIC通信实例——MPU6050陀螺仪模块(模拟IO口模式)
    • IIC通信实例——EEPROM模块(库函数模式)

计算机与外界的信息交互称为通信

基本的通信方式分为两种:
串行通信:所传送的数据各位按顺序一位一位地发送或接受,占用资源少,速度相对较慢。
并行通信:所传送的数据的各个位是同时发送或接受。速度快,占用引脚资源多。

通信的速率
比特率(bit rate):每秒能传输的二进制位数。
波特率(Baud rate):每秒能传输的码元数(不一定是二进制)。
对于数字信号而言,波特率=比特率。

串行通信的种类
同步通信:带时钟同步信号传输,通讯双方是受同一个时钟源控制,如I2C、SPI、USART。
异步通信:不带时钟信号同步,不是同一个时钟源,按照一定规则传输,如USART、UART、单总线、CAN。

串行通信的方式
单工:只允许单方向传输,只需一条信号线
半双工:允许非同时进行的双方向传输,只需一条信号线。
全双工:允许同时进行双方向传输,需要两条信号线。

通信协议是主控MCU与各类驱动器、传感器之间实现信息交互的基本逻辑,搞懂通信协议在机器人的电控系统中占有很重要的地位。在接下来的内容中,我将分别讲解串口IICSPICAN通信协议的区别原理以及结合实际一些模块的代码部分。


IIC通信

由于传统串口传输只能局限于两个固定设备之间,不能满足大量设备之间的通信要求,所以有了IIC,它是一种两线式串行同步半双工传输总线(分别是数据线SDA和时钟线SCL)。尤其适用于短距离的板内通信

IIC的寻址方式

I2C总线上的每一个持有I2C通信协议的设备都有一个唯一的地址,主从设备之间的数据传输是建立在地址的基础上,主设备在传输前需要先指定从设备的地址。

寻址格式

固定地址(4位) + 可编程地址(3位) + 读写控制位(1位)
1010(硬件出产地址) A2A1A0(硬件拉高或拉低) R/W

*根据硬件不同,一般来说一个设备前7位都是固定的。

①如EEPROM芯片AT24C02地址为10100000(写)/10100001(读),它是利用IIC与MCU进行板内通信的。

②又如MPU6050利用IIC通信的陀螺仪芯片,它的地址为01101000(0x68)。


IIC的传输协议

空闲状态:SCL和SDA都保持高电平
传输状态
①起始状态:SCL保持高电平时,SDA由高到低下降沿跳变触发,触发后,整个总线将处于忙状态,由本次数据传输的主从设备独占,其他I2C设备无法访问。
②数据传输:主设备在SCL上的每一个时钟脉冲,都会同时在SDA线上传输一个数据位(先发高位再发低位,注意与串口协议不同)。
③应答信号:每个数据传输的字节完成后,都会跟上一个应答位。在SCL保持高电平期间SDA为低表示应答成功;在SCL保持高电平期间SDA为高表示应答失败。
④停止信号:当一次应答信号结束后,若不想进行数据传输,主机产生一个停止信号。SCL为高期间SDA由低到高上升沿跳变触发。

IIC的应答机制

IIC传输的要点就是,传输一个字节后面必然紧跟一个“响应”信号,这个响应信号可能来自主机或者从机,具体看传输方向。

①主机 发到 从机
主机对从机发送一个字节后,主机读取从机的应答信号(主机读SDA线)。
主机读取SDA为低电平,应答成功。
主机读取SDA为高电平,应答失败。
②从机 发到 主机
主机读取从机发送过来的一个字节后,主机要向从机发送一个应答信号(主机写SDA线)。
主机写SDA为低电平,从机收到后知道主机应答成功,继续传输。
主机写SDA为高电平,从机收到后知道主机无应答,从机停止传输,等待从主机过来的停止信号。

*起始信号和结束信号总是由主设备产生(IIC有主从的区别!!!)


IIC传输协议函数(根据IIC传输协议,模拟IO口IIC)

以IO口模拟IIC协议为例:

初始化状态
①初始化IIC,保持空闲状态

发送状态(主机)
①起始信号

PS:SDA_OUT相当于让SDA对应的IO口配置成输出模式
②停止信号

③发送数据(发送一个字节)

④发送完一个字节后,发送ACK应答位
·应答成功信号

·应答失败信号

接收状态(主机):
①接收数据(接收数据后判断ACK应答位,来判断上次传输是否应答成功)


IIC正常通信过程(很重要!!)

写操作

第一步,主机首先发送从机地址写(可以有多个从机)来确定是与哪一个从机进行通信。
第二步,从机发送“ACK”应答信号。
第三步,主机再发送相应寄存器地址
第四步,从机发送“ACK”应答信号。
第五步,主机将要写入寄存器的数据发送到从机。
第六步,从机发送“ACK”应答信号。

读操作

第一步,主机首先发送从机地址写(可以有多个从机)来确定是与哪一个从机进行通信。
第二步,从机发送“ACK”应答信号。
第三步,主机再发送相应寄存器地址
第四步,从机发送“ACK”应答信号。
第五步,主机重新发送从机地址读(可以有多个从机)来确定是与哪一个从机进行通信。
第六步,从机发送“ACK”应答信号。
第七步,主机读取寄存器的数据,并在读取完成后发送应答信号给从机。

IIC通信实例——MPU6050陀螺仪模块(模拟IO口模式)

①MPU6050 IIC写操作

②MPU6050 IIC读操作

关于地址:
首先,在MPU6050的参考手册中,我们可以得到MPU6050地址和相关一些寄存器的值。

如何初始化MPU6050模块?

整体思路:通过向MPU6050不同寄存器写命令来唤醒MPU6050,设置量程,参考系等。

如何从MPU6050模块读取数据?
(以读取陀螺仪XYZ轴数据为例,同样对其他可读参数也如此)
从MPU6050相应寄存器读取来获得数据。


IIC通信实例——EEPROM模块(库函数模式)

①IIC 库函数配置(设定好模式、设备地址、通信速率/时钟频率

②写操作(库函数)

③读操作(库函数)

搭建机器人电控系统——通信协议——IIC通信原理及其实例(库函数+模拟IO口)相关推荐

  1. 搭建机器人电控系统——通信协议——CAN通信及其实例

    通信协议 串口通信详解 IIC通信详解 SPI通信详解 CAN通信详解 文章目录 通信协议 CAN通信 什么是CAN通信? CAN通信的优点: CAN通信电平格式: CAN通信的结构: CAN通信协议 ...

  2. 搭建机器人电控系统——通信协议——串口通信USART/UART、RS232、RS485及其实例

    通信协议 串口通信详解 IIC通信详解 SPI通信详解 CAN通信详解 文章目录 通信协议 什么是串口? 串口分类 USART/UART.RS232.RS485的区别 串口协议原理 传输协议 需要定义 ...

  3. 搭建机器人电控系统——MCU基石——STM32 GPIO原理

    文章目录 搭建机器人电控系统--MCU基石 GPIO是什么? GPIO的模式 5种输入模式: 4种输出模式: GPIO的输出速度 搭建机器人电控系统--MCU基石 在上一章中,我讲解了搭建一个机器人电 ...

  4. 搭建机器人电控系统——如何从零开发主控?——文件下载、工程配置、烧录

    文章目录 搭建机器人电控系统--如何从零开发主控? 如何开发主控?(软件实现烧录控制功能) 确定你选择的MCU参数 ①首先去ST官网上找到对应的单片机型号: ②找到对应型号的三大关键参数: ③找到官网 ...

  5. 搭建机器人电控系统——PID算法——什么是PID?

    PID算法 PID算法介绍,不同系数仿真,优缺点 位置式.增量式.模糊式PID 大林算法.史密斯算法和PID算法的区别 文章目录 PID算法 控制系统介绍 开环控制系统 前馈控制系统 单闭环控制系统 ...

  6. 搭建机器人电控系统——器件选型——如何选择电机?

    器件选型 电源选择 传感器选择 电机选择 电机选型 电机是机器人电控系统控制机构动力的直接来源,一个好的电机可以解决很多机械的问题,也能解决很多控制的问题.电机的选型不仅和电控有关,也和机械环境密切相 ...

  7. 搭建机器人电控系统——器件选型——如何选择传感器?

    器件选型 电源选择 传感器选择 电机选择 传感器 传感器是电控中非常重要的元件,对于不同的传感器,我们也需要对其进行选型,在学校的时候,也许我们不用考虑到太多的成本问题.对于我们来说,选择一个传感器应 ...

  8. 搭建机器人电控系统——如何从零画一块主控板?——搭建最小系统电路原理图

    文章目录 如何画好一块主控? 搭建最小系统电路原理图 以STM32F407ZET6为例: 晶振电路原理 如何搭建晶振电路? 复位电路原理 如何搭建复位电路? 下载电路 电源电路原理 如何搭建电源电路? ...

  9. 搭建机器人电控系统——器件选型——如何选择机器人系统电源?

    器件选型 电源选择 传感器选择 电机选择 电源的参数 一般来说,一款电池的参数主要如下图所示.其中的电压V.容量MAH.持续放电电流A是我们主要的选型依据,接口端子和重量尺寸也是需要考虑的因素. 如何 ...

  10. 搭建机器人电控系统——常用电路——输入保护,过压保护,过流保护,光耦隔离抗干扰,输入补偿,稳压

    文章目录 一些常用电路的总结 输入保护电路 ①PMOS+电容防反接和缓冲 ②TVS瞬态电压抑制二极管 ③稳压(齐纳)二极管 过压保护电路 ①稳压二极管和三极管配合 ②双稳压二极管的反向串联 过流保护电 ...

最新文章

  1. C#获取文件的当前路径
  2. JBOSS只能本机localhost和127.0.0.1能访问的解决
  3. Android NDK环境搭建
  4. MySQL字符串和二进制
  5. 经典C语言程序100例之三三
  6. 财务一体化项目,进度与计划31
  7. linux中间人攻击工具,[web安全]使用ARPspoof进行中间人(MiTM)攻击
  8. SpringBoot整合mybatis 配置文件备份
  9. 给物体赋值 只改变transform.position的某一维,访问另一个脚本的变量以及给物体用脚本动态添加属性
  10. 深度Linux操作系统使用体验
  11. 泊松分布、二项分布与正态分布
  12. 单片机PWM舵机控制原理
  13. Unity-创建一个小地图
  14. 有关目标的SMART法则
  15. 大一计算机基础试题答案,计算机基础知识试题及答案-(1).doc
  16. iOS 绘图(drawrect)图片裁剪的红色框框
  17. JS创建26个小写字母数组
  18. 第四章:文法中的递归以及消除方法
  19. 关于传递函数的离散化
  20. 【解决方法汇总】SpringBoot项目报错 Could not resolve placeholder ‘‘ in value “${}“

热门文章

  1. 用过企业微信APP 后,微信接收不到消息,解决方案
  2. 小米手机qq邮箱收件服务器,小米手机无法添加邮箱?是你不会设置而已
  3. 高教版《金融学》预习笔记
  4. 深度解析反思型Essay怎么写?
  5. 巨杉数据库登榜互联网周刊“2022中国软件150强”及“2022大数据服务TOP150”
  6. 上行带宽,下行带宽;上传速度,下载速度
  7. 怎么修改数据库服务器名字,sql改数据库名称
  8. 《CCNet: Criss-Cross Attention for Semantic Segmentation》--阅读笔记-ICCV2019
  9. u盘被写保护无法格式化
  10. 百度网盘下载提速小技巧