作为无人机方面做嵌入式编写的飞控总结1-基本协议驱动介绍1

2023-05-16

基本的驱动,要算标准的串口,iic和spi协议不可缺席;

1 作为单片机初学者必备知识点和重要知识点,在linux系统编成之中依然还发挥很大作用,因为这三个协议使用的是在太多了;

首先废话不多说,

协议调试工具,用过两个不同的逻辑分析仪,一个是金沙滩电子工作室的,一个是周立功的,各位道友可以上淘宝搜索;

如果您不屑使用逻辑分析,同时又有良好的示波器,用的习惯就好;不过协议初学者的调试还是建议使用逻辑分析仪;

其次,因为有很多非标准协议,所以先搞明白清楚标准的协议的时序关系,再去分析会更快;

    比如,我在调试飞控的遥控器的时候使用的sbus协议--它是一个很另类的串口协议,串口配置为波特率100kbps8位数据,偶校验(even)2位停止位,无流控

想学习的朋友,可看连接:http://www.eefocus.com/taogashi/blog/14-05/303577_f140d.html

    还有如iic协议,如果你调试smbus协议的时候,会发现它根iic兼容,但是会比iic更苛刻。

    还有,SPI 是一种高速的、全双工、同步通信总线,标准的 SPI也仅仅使用4个引脚,标准的 SPI 是 4 根线,们也可以用 3 根线的 SPI 或者 2 根线的 SPI 进行通信。比如主机只给从机发送命令,从机不需要回复数据的时候,那么 MISO 就可以不要;而在主机只读取从机的数据,不需要给从机发送指令的时候,那 MOSI 就可以不要;当一个主机一个从机的时候,从机的片选有时可以固定为有效电平而一直处于使能状态,那么 SSEL 就可以不要;此时如果再加上主机只给从机发送数据,那么 SSEL 和 MISO 都可以不要;如果主机只读取从机送来的数据,SSEL 和 MOSI 都可以不要;

2.串口


图中,GND 表示单片机系统电源的参考地,TXD 是串行发送引脚,RXD 是串行接收引

脚。两个单片机之间要通信,首先电源基准得一样,所以我们要把两个单片机的 GND 相互
连接起来,然后单片机 1 的 TXD 引脚接到单片机 2 的 RXD 引脚上,即此路为单片机 1 发送
而单片机 2 接收的通道,单片机 1 的 RXD 引脚接到单片机 2 的 TXD 引脚上,即此路为单片
机 2 发送而单片机 1 接收的通道。这个示意图就体现了两个单片机相互收发信息的过程。
当单片机 1 想给单片机 2 发送数据时,比如发送一个 0xE4 这个数据,用二进制形式表
示就是 0b11100100,在 UART 通信过程中,是低位先发,高位后发的原则,那么就让 TXD
首先拉低电平,持续一段时间,发送一位 0,然后继续拉低,再持续一段时间,又发送了一
位 0,然后拉高电平,持续一段时间,发了一位 1……一直到把 8 位二进制数字 0b11100100

全部发送完毕。这里就涉及到了一个问题,就是持续的这“一段时间”到底是多久?由此便


eg:


2.I2C

UART 属于异步通信,比如电脑发送给单片机,电脑只负责把数据通过TXD 发送出来即可,接收数据是单片机自己的事情。

而 I 2 C 属于同步通信,SCL 时钟线负责收发双方的时钟节拍,SDA 数据线负责传输数据。I 2 C 的发送方和接收方都以 SCL 这个时钟节拍为基准进行数据的发送和接收

UART 通信多用于板间通信,比如单片机和电脑,这个设备和另外一个设备之间的通信。而 I 2 C 多用于板内通信;

 UART 串行通信的时候,通信流程分为起始位、数据位、停止位这三部分,同理在 I 2 C 中也有起始信号、数据传输和停止信号;


起始信号:UART 通信是从一直持续的高电平出现一个低电平标志起始位;而 I 2 C 通信的起始信号的定义是 SCL 为高电平期间,SDA 由高电平向低电平变化产生一个下降沿,表示起始信号,如图 14-3 中的 Start 部分所示。

数据传输首先,UART 是低位在前,高位在后;而 I 2 C 通信是高位在前,低位在后。,UART 通信数据位是固定长度,波特率分之一,一位一位固定时间发送完毕就可以了。而 I 2 C 没有固定波特率,但是有时序的要求,要求当 SCL 在低电平的时候,SDA 允许变化,也就是说,发送方必须先保持 SCL 是低电平,才可以改变数据线 SDA,输出要发送的当前数据的一位;而当 SCL 在高电平的时候,SDA 绝对不可以变化,因为这个时候,接收方要来读取当前 SDA 的电平信号是 0 还是 1,因此要保证 SDA 的稳定,如图 14-3 中的每一位数据的变化,都是在 SCL 的低电平位置。8 位数据位后边跟着的是一位应答位,应答位我们后边还要具体介绍。(低读取高确认);

停止信号:UART 通信的停止位是一位固定的高电平信号;而 I 2 C 通信停止信号的定义是 SCL 为高电平期间,SDA 由低电平向高电平变化产生一个上升沿,表示结束信号,如图14-3 中的 Stop 部分所示。

3.SPI

SPI 是英语 Serial Peripheral Interface 的缩写,顾名思义就是串行外围设备接口。SPI 是一种高速的、全双工、同步通信总线,标准的 SPI也仅仅使用4个引脚,常用于单片机和EEPROM、FLASH、实时时钟、数字信号处理器等器件的通信。SPI 通信原理比 I 2 C 要简单,它主要是主从方式通信,这种模式通常只有一个主机和一个或者多个从机,标准的 SPI 是 4 根线,分别是 SSEL(片选,也写作 SCS)、SCLK(时钟,也写作 SCK)、MOSI(主机输出从机输入Master Output/Slave Input)和 MISO(主机输入从机输出 Master Input/Slave Output)。

SSEL:从设备片选使能信号。如果从设备是低电平使能的话,当拉低这个引脚后,从设备就会被选中,主机和这个被选中的从机进行通信。
SCLK:时钟信号,由主机产生,和 I 2 C 通信的 SCL 有点类似。
MOSI:主机给从机发送指令或者数据的通道。

MISO:主机读取从机的状态或者数据的通道。

4线和3线或2线的SPI说明:

比如主机只给从机发送命令,从机不需要回复数据的时候,那么 MISO 就可以不要;而在主机只读取从机的数据,不需要给从机发送指令的时候,那 MOSI 就可以不要;当一个主机一个从机的时候,从机的片选有时可以固定为有效电平而一直处于使能状态,那么 SSEL 就可以不要;此时如果再加上主机只给从机发送数据,那么 SSEL 和 MISO 都可以不要;如果主机只读取从机送来的数据,SSEL 和 MOSI 都可以不要。3 线和 2 线的 SPI 大家要知道怎么回事,实际使用也是有应用的,但是当我们提及 SPI的时候,一般都是指标准 SPI,都是指 4 根线的这种形式;

SPI的读写数据时序的过程中,有四种模式

两个名词:CPOL: Clock Polarity,就是时钟的极性;  CPHA: Clock Phase,就是时钟的相位 ;(确认啥时候进行读取和确认,iic是低读取高确认,spi需要进行设置确认)



时序上,SPI 是不是比 I 2 C 要简单的多?没有了起始、停止和应答,UART 和 SPI 在通信的时候,只负责通信,不管是否通信成功,而 I 2 C 却要通过应答信息来获取通信成功失败的信息,所以相对来说,UART 和 SPI 的时序都要比 I 2 C 简单一些

4.NEC  协议

NEC 协议的数据格式包括了引导码、用户码、用户码(或者用户码反码)、按键键码和键码反码,最后一个停止位。停止位主要起隔离作用,一般不进行判断,编程时我们也不予理会。其中数据编码总共是 4 个字节 32 位,如图 16-7 所示。第一个字节是用户码,第二个字节可能也是用户码,或者是用户码的反码,具体由生产商决定,第三个字节就是当前按键的键数据码,而第四个字节是键数据码的反码,可用于对数据的纠错;


这个 NEC 协议,表示数据的方式不像我们之前学过的比如 UART 那样直观,而是每一
位数据本身也需要进行编码,编码后再进行载波调制。

引导码:

9ms 的载波+4.5ms 的空闲。比特值“0”:560us 的载波+560us 的空闲。比特值“1”:560us 的载波+1.68ms 的空闲



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

作为无人机方面做嵌入式编写的飞控总结1-基本协议驱动介绍1 的相关文章

  • Jetson Tx2上跑MYNT_EYE的ORB SLAM示例

    愁呀 xff0c 按照官网的说明文档 xff0c 好长时间郁闷在跑不起来 每次都是在加载词袋时报bad malloc 打开MYNT EYE ORB SLAM2 Sample Vocabulary ORBvoc txt词袋看见1082073行
  • 解决ST-LINK无法连接设备(解决不了你顺着网线来打我)

    问题分析 问题描述 在mdk中 xff0c 点击下载按钮提示找不到目标设备 xff0c 无法自动下载程序 原因猜想 单片机只有在停止状态下才可以下载程序 xff1f 猜想验证 如果让单片机处在停止状态 xff0c 是不是就能正常下载了呢 x
  • tensorflow 利用tfrecords文件制作数据集

    TensorFlow之tfrecords文件详细教程 制作数据集思路 xff1a 将训练数据和测试数据生成tfrecords文件 为什么呢 xff1f 这种文件以二进制进行存储 xff0c 只占用一个内存块 对于大数据能够提高cpu效率 代
  • 解决mininet运行报错“ImportError: No module named mininet.log”

    解决mininet运行报错 ImportError No module named mininet log 运行环境 系统Ubuntu 04 安装Mininet 2 3 0d6问题描述 运行miniedit py时报错ImportError
  • C++ 用结构体和类创建单向链表

    一 结构体 include lt iostream gt using namespace std 一个链表要实现的操作有 建立链表 xff0c 遍历链表 xff0c 查找链表 xff0c 插入和删除节点 查找和遍历某种程度上来说是一样的 x
  • 巨星星座paper研究

    巨星星座paper研究 ICM1篇 Exploring the Internet from space with Hypatia Hypatia论文 xff1a 摘要 xff1a Hypatia 提出了一个框架 xff0c 通过结合这些星座
  • Ubuntu20.04中安装ns3网络仿真器

    前言 我的环境 Ubuntu 20 04 xff0c 安装的是ns3 3 33 1 安装前的准备工作 建议先了解一下ns3的文件结构 参考博客 xff1a https blog csdn net sinat 36418396 article
  • ubuntu 20.04配置ssh远程root连接

    ubuntu 20 04配置ssh远程服务 1 开启服务 etc init d ssh start 查看ssh服务状态 sudo service ssh status 正常是active xff08 running xff09 2 修改ss
  • docker 遇到的问题

    docker stop container id 失败 显示 root 64 docker stop onos1 Error response from daemon cannot stop container onos1 permissi
  • docker ubuntu20.04 dockerfile 换源

    dockerfile 换源 FROM ubuntu 20 04 ARG span class token assign left variable DEBIAN FRONTEND span span class token operator
  • Prometheus普罗米修斯-入门

    Promethus 普罗米修斯 xff09 适合k8s和docker的监控系统 功能 能够安装prometheus服务器 能够通过安装node exporter监控远程linux 能够通过安装mysqld exporter监控远程mysql
  • 数据库操作

    ubt1804 安装mqsql span class token function apt span span class token function install span mysql server span class token
  • 图的邻接表存储及图的遍历(DFS)

    图的表示方式 邻接矩阵 xff1a G N N xff0c 适合稠密图 xff0c 占用空间大 xff0c O N N 邻接表 xff1a 存储稀疏有向图 xff0c 避免空间浪费十字链表 xff1a 针对有向图 xff0c 把邻接表和逆邻
  • HTML5详细介绍及使用

    HTML5详细介绍及使用 一 HTML5简介 1 HMTL5的定义 HTML是一种用符号来创建结构文档的语义 比如标题 章节 列表 链接 引用和其他各种元素都可以包含在结构文档中 HTML5在W3C中的定义 xff1a HTML 5 是下一
  • AE10.0开发时 System.ComponentModel.LicenseException' occurred in system.windows.forms.dll

    刚开始是System ComponentModel ISupportInitialize this axMapControl1 EndInit 出现问题 后来又出现system windows forms dll 中类未注册 xff0c 您
  • 数据结构学习

    四 树 所有的二叉链表都基于二叉树结点的基本定义 class BinTreeNode public int data BinTreeNode leftChild BinTreeNode rightChild BinTreeNode T n
  • 在线解析二进制报文

    现状 智能设备应用越来越普遍 xff0c 深入到生活的各个方面 xff0c 从智慧农业到智能制造 xff0c 从水利灌溉到电力传输 xff0c 从工业生产到智能家居 智能设备应用在各个领域 xff0c 设备之间都是通过数据交换来达到信息共享
  • 接收和处理客户投诉流程

    接收和处理客户投诉的流程一般包括九个步骤 xff1a 第一个步骤 xff1a 倾听客户的投诉事项和内容 xff1a 耐心和仔细地倾听客户投诉的具体事项和内容 xff1b 第二个步骤 xff1a 复述并确认客户的投诉事项和内容 xff1a 用
  • 如何理解Mapper LongWritable, Text, Text, IntWritable 和Reducer Text, IntWritable, Text, IntWritable

    案例 xff1a WorkCount lt key value gt key xff1a 文件中的行的偏移量 value xff1a 行中的数据 Mapper span class token keyword import span jav
  • 28设计模式中,属于结构型模式的有哪些?

    https www nowcoder com questionTerminal 84f67b12ab674010a1530df559c97e20 toCommentId 61 134868

随机推荐