在STM32上对EV1527等无线编码格式的C程序编码实现

2023-05-16

测调 西安.老雷子 2020年6月1日
软件平台 WINDOWS Keil uVision,STM32 ST-LINK
硬件平台 STM32S108C8B6 通用32开发板调试
发射端: 蜂鸟远T1 输入需要用MCU进行编码,利于指定编码
接收端: 蜂鸟灵R1 输出有五种模式,其中模式5就是串口直接输出编码的
编码模式 EV1527
在这里插入图片描述一、 系统调试硬件结构说明
发射端硬件示意图 接收端硬件示意图

在这里插入图片描述二、 如何对位进行编码
先简单了解一下编码中如何把二进制体现出来,如下图,芯片本身调制解调不是调整频率而是采用调幅模式,换句话说,用发射和不发射的时长和间隔来体现是逻辑1还是逻辑0;如下,看懂这个逻辑关系也就注意到了后面发射的时候怎么编1的码,怎么编0的码了。
在这里插入图片描述上面的对于1位的编码按照从高位到低位顺序连接起来,再在开始加上一个同步码就完成了一个字节的传输,实现起来还是很方便的。
发射一个字节流程如下:
1、 发射同步:逻辑1持续1T然后逻辑0持续3T
2、 顺序发射bit7、bit6、bit5、bit4、bit3、bit2、bit1、bit0(逻辑0和1按照上面规则)
三、 如何对一个发射码进行编码?
对于一个发射码而言,按照EV1527的编码规范,发送/接收的码总共应该是8个字节,而这八个字节,并不是将上面单一字节内容直接拼接完成的。
例如编码“80A7E40B”
字节 0x80 0xA7 0xE4 0x0B
顺序 Z1 Z2 Z3 Z4 Z5 Z6 Z7 Z8
Bit数 4 4 4 4 4 4 4 4
值 8 0 A 7 E 4 0 B
在这里插入图片描述上面4个字节,每个字节8位。但需要注意的是蓝色部分(Z1Z5)是遥控器对码时候用的内部编码(对于远R1自学习过程而言),总共2^20个也就是编码规范中常说的百万编码,以此确保不会串码;黄色部分(Z6)只有半个字节,但这4位才对应实际按键编码,这个四位键盘编码在标准用法中只有四个值(1,2,4,8),也可以扩展直接用115(0x01~0x0F)。绿色部分的字节在发射编码的时候可以忽略不处理(芯片自己会生成一个校验码加上去的)
如果要完成80A7E40B代码的发射,流程如下:
1、 准备一个缓冲区unsigned char Ask_send_buf[12]
2、 Ask_send_buf[0]=0x80;Ask_send_buf[1]=0xA7;Ask_send_buf[2]=0Xe4;
3、 Ask_send_buf[2]的低4位清零并给Ask_send_buf[2]加上键盘码(1~15);
4、 发射Ask_send_buf[0]
5、 发射Ask_send_buf[1]
6、 发射Ask_send_buf[2]
7、 发射同步码(这个过程在编码规范里面是在前面的,但放在这个位置通讯更稳)
8、 暂停发射做一个发射间歇(一般有15毫秒合适)
上述实际上,按照通讯编码规约,完成一个发射码的过程必须要先后发送四次才符合1527的编码规范,因此,需要将上述过程中4~8步骤重复4次接收端才能认可。
四、 调试注意事项
1、 硬件连接逻辑确认(前面给出的连接关系别搞错线,注意所选用的模块电压不要出现烧片)
2、 如何确认发射端开始发码?
无线模块开始发射以后,由于无线433信号不依赖专用设备比较难以判断是否已经发射,建议可采用其他无线设备检查是否已经开始发射,可以用对讲机将频率调整为433MHz,发射端发码时候会有明显噪音出现。(凡带有自学习功能的遥控器或者遥控模块在未成功学习之前即使收到信号也没反映的)
3、 如何确认发射码正确?
接收端用灵R1模块,在确认发射端发射时进入学习状态进行学习,调整R1的输出模式为第5模式,然后通过R1模块自带串口输出功能将接受到的发射码发送到上位机查看。(需要注意模块接收的代码会自动加上前置字符串“LC:”,还会有后面的通讯校验字节)
4、 如何确认MCU的机器周期时钟
不同的MCU和不同的时钟配置,指令周期都可能不同,采用代码延时(计时器更方便大家可自己移植)时,为了保证第一个时序图中一个T的时间基本准确在400纳秒,最好采用示波器来矫正正确的循环次数。
示波器不方便的时候,先搞个1分钟或者几分钟的延时通过秒表来反向推算一下400纳秒到底需要多少个等待周期;

五、 硬件照片
顺手把丑陋的调试硬件照片发上来,看看这么简单的连接就搞定了,还有,这无线模块缺失做的太小了,红色是灵R1,蓝色带螺旋天线的是远T1你不小心估计都没看到那个模块,调试通过发现这对模块真心好用,通讯非常稳定可靠。

在这里插入图片描述
顺便看看我用的调试板背面,手动飞了两根线,USB接口就直接可以SWD方式下载调试这个STM32的开发板了,比较方便。

在这里插入图片描述
六、 上位机接收到的代码
调试过程中,灵R1模块除了完成与串口通讯模块的三根线连接之外,需要按照手册进行对码学习过程和输出模式设置过程。标准9600的串口通讯,使用还是比较简单的。

在这里插入图片描述源代码也给大家分享一下吧,免得朋友们走弯路啦
完整实现的代码下载

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

在STM32上对EV1527等无线编码格式的C程序编码实现 的相关文章

  • SLAM精度评估常见问题——GPS时间戳与bag包时间戳如何对齐

    在使用evo进行精度评估时 xff0c 由于evo是通过时间戳来进行配准和比较的 xff0c 为了使结果更准确 xff0c 需要将GPS与bag包的时间戳进行转换对齐 在这里更方便的方法是转换GPS时间戳到bag包 首先查看GPS文件 他的
  • Ubuntu20搭建pytorch深度学习框架——使用增强样本运行Dlinknet提取道路水体(五)——样本增强

    之前运行的样本是未进行过样本增强的 做出来多少样本就使用了多少样本来进行训练 这里复盘一下样本训练结果 首先是道路 使用512512分辨率的16461张标签和16461张原图进行训练 接下来是水体 使用512512分辨率的11503张标签和
  • Ubuntu20运行SegNeXt代码提取道路水体(二)——SegNeXt源代码安装到测试环境配置全过程摸索

    首先我们在第一篇里面已经下载了SegNeXt代码 打开源代码 查看readme文件 我们先安装一下里面提到的torchprofile 链接在这 其实只要这个语句就能安装 pip install torchprofile 这一步没什么问题 很
  • pyqt5页面美化全流程摸索(二)——为控件增加下拉选项及增加鼠标悬停后改变按钮颜色功能

    我想为我的一个控件增加菜单栏 搞了半天 查阅了大量文章 都失败了 没法给ToolButton增加menu啊 xff01 我是这么尝试的 首先查阅下列文章 pyqt5学习 菜单栏 xff08 QMenu xff09 工具栏QToolBar学习
  • 什么是NullReferenceException,如何解决?

    这篇文章是 社区维基 编辑现有答案以改善此职位 它当前不接受新的答案 我有一些代码 xff0c 执行时会抛出NullReferenceException xff0c 说 xff1a 你调用的对象是空的 这是什么意思 xff0c 我该怎么做才
  • 七、使用arcgis对道路结果进行后处理及iou优化步骤详解

    最近在研究对道路的后处理 废话不多说 直接放我的教程了 分别对real真实和predict预测的图片进行镶嵌操作 教程在这里 工具在这里 结果如下 矢量化提取道路中心线 经过很多尝试 arcscan是提取效果最好的一个方法 xff0c 操作
  • 八、使用代码对道路结果进行后处理及iou优化步骤详解

    老师又给我画了大饼 没办法 只能按照他们的想法做个尝试 上一篇的方法还没进行下去 就被叫停 又更新了一个新的想法 这里记录一下 我的尝试过程 一 图片膨胀 首先使用代码对道路进行膨胀 这里的代码 import cv2 import nump
  • add_library cannot create target “XXXX“ because another target with the same name already exists.

    CMake Error at CMakeLists txt add library cannot create target xxx because another target with the same name already exi
  • FreeRTOS的同步机制---事件event

    目录 1 event的基本概念 2 event的特点 3 event的运行机制 4 event与semphore的区别 5 event的应用场景 6 demo分析 1 event的基本概念 事件event是用于任务间通信的机制 xff0c
  • FreeRTOS同步机制--互斥信号量

    1 为什么引入互斥量 普通的信号量在任务之间同步时 xff0c 会出现优先级翻转问题 xff0c 如下 xff1a 执行流程如下 xff1a 1 xff09 此时 xff0c 任务就绪列表中 xff0c 低优先级任务L的优先级最高 xff0
  • 为何某些公司不允许使用 C++ STL

    作者 xff1a 陈甫鸼 链接 xff1a https www zhihu com question 20201972 answer 23454845 来源 xff1a 知乎 著作权归作者所有 xff0c 转载请联系作者获得授权 最初开始禁
  • 如何发明新算法(一)

    如何发明新算法 xff08 一 xff09 算法一直是计算机科学的核心 xff0c 算法改变世界 xff0c 算法创造未来 xff01 这篇文章我主要从复杂化 简单化两个方面谈谈怎么样发明一个新的算法 新算法在时间复杂度 xff0c 空间复
  • python进行http登录

    摘要 xff1a 有时需要用python做一些自动化页面请求 xff0c 但请求又需要登录权限 xff0c 好比如抢票 在有账号密码的情况下 xff0c 可以用request Session进行带session的http请求 xff0c 这
  • Ubuntu14.04 for ROS indigo的安装(电脑配置)

    前言 由于个人需要 xff0c 将笔记本电脑重新装了系统 首先用空白U盘进行系统刻盘 xff0c 然后电脑所有数据备份 xff0c 最后重新安装 装入的系统是exbot 机器人提供的Ubuntu14 04 for ros indigo xf
  • Django自带的加密算法及加密模块

    Django 内置的User类提供了用户密码的存储 验证 修改等功能 xff0c 可以很方便你的给用户提供密码服务 默认的Ddjango使用pbkdf2 sha256方式来存储和管理用的密码 xff0c 当然是可以自定义的 Django 通
  • 如何在Python中使用“ with open”打开多个文件?

    我想一次更改几个文件 xff0c 前提是我可以写入所有文件 我想知道我是否可以将多个打开调用与with语句结合with xff1a try with open 39 a 39 39 w 39 as a and open 39 b 39 39
  • 工业控制领域的期刊

    我们都知道目前做控制的大体分两大类人 xff0c 一类是做纯控制理论的 xff0c 主要是跟数学打交道 xff1b 另一类是做控制理论在各个行业的应用的 xff0c 其中包括电力系统 xff0c 机器人 xff0c 智能交通 xff0c 航
  • VNC 灰屏

    用vnc连接服务器的时候 xff0c 出现了灰屏 xff0c xff08 在xshell可以正常运行 xff09 上面会显示三个checkbox xff1a Accept clipboard from viewers Send clipbo
  • Ubuntu卸载python3.6

    注意 xff1a 这里说一下 xff0c 系统自带的python3 6可别乱删 xff0c 这个是我自己下载的python3 6 若你们有想卸载系统自带的python3 6 xff0c 可千万别去卸载 xff01 一般会开机都开不起 xff
  • 深度学习之BP神经网络

    深度学习之BP神经网络 BP xff08 Back Propagation xff09 网络是1986年由Rumelhart和McCelland为首的科学家小组提出 xff0c 是一种按误差逆传播算法训练的多层前馈网络 它的学习规则是使用最

随机推荐

  • 【ROS】源码分析-消息订阅与发布

    说明 本文通过NodeHandle subscribe和Publication publish 源码作为入口 xff0c 来分析PubNode SubNode之间是网络连接是如何建立的 xff0c 消息是如何发布的 xff0c topic队
  • Opencv-cvtColor

    cvtColor不是cv的成员 头文件的问题 include lt opencv2 opencv hpp gt 这个就可以
  • java听课笔记——9.25

    记录今天所学的东西 xff1a 1 Random 用于随机生成一个值 xff0c 可以有限定范围 xff0c 没有尝试过不设限制的随机 用法如下 xff1a Random random 61 new Random int temp 61 r
  • java听课笔记——10.09

    1 局部变量和全局变量 xff1a 2 匿名内部类比较和外部比较 匿名内部类的比较 xff0c 即在需要进行比较的类名后加上implements comparator lt 类名 gt 然后 xff0c 使用sort xff0c 对于sor
  • java听课笔记——10.10

    1 String与常量池 xff1a 常量池是java中的一个存储常量的存储器 xff0c 栈是一个临时的存储器 xff0c 在递归的时候比较明显 xff0c 函数的运行压缩在栈里 String str3 61 new String 34
  • Java听课笔记——10.30

    感觉今天没讲什么东西唉 一开始 xff0c 解释了一下ArrayList里的每个元素如果不进行类型约束的话 自然赋值为Object类 xff0c 而且是兼收并蓄的 同时讲了使用迭代器对ArrayList数组进行遍历 xff0c 直接上代码
  • 如何在Python中声明一个数组?

    如何在Python中声明数组 xff1f 我在文档中找不到任何对数组的引用 1楼 这个怎么样 gt gt gt a 61 range 12 gt gt gt a 0 1 2 3 4 5 6 7 8 9 10 11 gt gt gt a 7
  • openrave0.9安装遇到依赖问题及解决流程

    问题 cmake 时输出下面的失败信息 xff0c 虽然最后可以make install xff08 其实就是拷贝了库文件 xff09 安装上 xff0c 但是由于过程中有些步骤失败 xff0c 导致执行时缺少一些库文件 xff0c 无法执
  • Python入门--一篇搞懂什么是类

    写一篇Python类的入门文章 xff0c 在高级编程语言中 xff0c 明白类的概念和懂得如何运用是必不可少的 文章有点长 xff0c 3000多字 Python是面向对象的高级编程语言 xff0c 在Python里面 一切都是对象 xf
  • SQL Server访问远程数据库--使用openrowset/opendatasource的方法

    一 使用openrowset opendatasource前首先要启用Ad Hoc Distributed Queries xff0c 因为这个服务不安全SqlServer默认是关闭的 SQL Server 阻止了对组件 39 Ad Hoc
  • 我的2014碎碎念—学习篇、实习篇、工作篇、生活篇

    继去年作了一次年度总结过后 xff0c 我就发誓说以后每年年末都要做一次总结 xff0c 这对自己是非常有帮助的 xff0c 无奈由于天性懒散 xff0c 2015年都过去好几天了 xff0c 才花了点心思整理下自己在过去一年里的所得所失
  • 百度2014研发类校园招聘笔试题解答

    先总体说下题型 xff0c 共有3道简答题 xff0c 3道算法编程题和1道系统设计题 xff0c 题目有难有易 xff0c 限时两小时完成 一 简答题 动态链接库和静态链接库的优缺点轮询任务调度和可抢占式调度有什么区别 xff1f 列出数
  • CSDN-markdown语法之如何插入图片

    目录 图片上传方式 插入在线图片插入本地图片图片链接方式 行内式图片链接参考式图片链接几个问题探讨 问题1 xff1a 图片上传和图片链接两种方式的区别 问题2 xff1a Markdown中如何指定图片的高和宽 xff1f 问题3 xff
  • 京东2013校园招聘软件研发笔试题

    时间 xff1a 2012 9 11 地点 xff1a 川大 我只能说第一家公司 xff0c 不是一般的火爆 不得不吐槽一下 xff1a 京东宣讲完全没有计划 xff0c 只看到个下午两点半宣讲 xff0c 结果跑过去 xff0c 下午两点
  • C运行时库函数和API函数区别

    C运行时库函数 是指 C语言本身支持的一些基本函数 xff0c 通常是汇编直接实现的 API函数是操作系统提供给用户方便设计应用程序的函数 xff0c 实现一些特定的功能 xff0c API函数也是C语言的函数实现的 他们之间区别是 xff
  • Docker常用命令详解

    docker命令大全 命令说明docker attach将本地标准输入 输出和错误流附加到正在运行的容器docker build从 Dockerfile 构建镜像docker builder管理构建docker checkpoint管理检查
  • PIX飞控中POS数据读取方法(实用工具)

    前些日子用到PIX飞控 xff0c 后来急用生成的日志需要导出里面的POS数据 xff0c 结果发现比较麻烦 xff0c 网上教程倒是很多 xff0c 对于不同版本的地面站情况又不一样 xff0c 当时就那样导出来简单用了用 xff0c 今
  • 在不丢失堆栈跟踪的情况下重新抛出Java中的异常

    在C xff03 中 xff0c 我可以使用throw 保留堆栈跟踪时重新抛出异常的语句 xff1a try catch a href http www javaxxz com thread 368216 1 1 html Exceptio
  • JPG图像exif和XPM信息中GPS数据姿态数据航向角数据的提取

    JPG图像的编码相关内容太多不在多说了大家随手能查很多资料 今天重点说说图像数据中的GPS信息以及飞机 相机姿态角度数据提取 JPG作为复杂的图像数据很多人都知道存在一个叫做EXIF的数据规范 xff0c 在这个数据规范中 xff0c 包含
  • 在STM32上对EV1527等无线编码格式的C程序编码实现

    测调 西安 老雷子 2020年6月1日 软件平台 WINDOWS Keil uVision STM32 ST LINK 硬件平台 STM32S108C8B6 通用32开发板调试 发射端 xff1a 蜂鸟远T1 输入需要用MCU进行编码 xf