本文分享了使用STM32通过DMA处理DBUS协议与遥控器通讯的经验,详细阐述了DMA配置、DBUS协议详情、CubeMX设置步骤以及解码函数的实现。调试过程中,通过观察变量验证了配置的正确性。
遥控器和stm32之间采用DBUS协议进行通讯。DBUS通讯协议和串口类似,DBUS的传输速率为100kbit/s,数据长度为8位,奇偶校验位为偶校验,结束位1位。需要注意的是DBUS使用的电平标准和串口是相反的,在DBUS协议中高电平表示0,低电平表示1,如果使用串口进行接收需要在接收电路上添加一个反相器。使用DBUS接收遥控器的数据,一帧数据的长度为18字节,一共144位,根据遥控器的说明书可以查出各段数据的含义,从而进行数据拼接,完成遥控器的解码,如图所示。
这半年有幸得到了一些资金支持,决定尝试用
大疆
的配件做一些有意义的东西。但是真正开始
使用
的时候却遇到了很多问题,
大疆
的产品从硬件到软件方面都有很多让人迷惑的行为,而同时网上的参考资料也很少,这些都让我在前期
使用
的时候摸不着头脑。后期虽然这些问题都得到了解决,但也浪费了大量时间。于是打算把我们
使用
的经历和相关代码做一个
分享
,以便后续其他人的
使用
。如有错误,希望指正。
一. 硬件部分介绍:
这里我
使用
的是
大疆
提供的
A型
开发
板
,
使用
大疆
产品有个缺点便是
大疆
的接口都是配套产品而非通用产品,一旦
使用
了
大疆
的产
CPU写内存的时候有两种方式:
1. write through: CPU直接写内存,不经过cache。
2. write back: CPU只写到cache中。cache的硬件
使用
LRU算法将cache里面的内容替换到内存。通常是这种方式。
DMA
可以完成从内存到外设直接进行数据搬移。但
DMA
不能访问CPU的cache,CPU在读内存的时候,如果cache命中...
本文主要目的是为了制作RoboMaster比赛能量机关的灯条控制,模拟比赛场中大符,搭建出类似场地道具,以供视觉测试
使用
的是RoboMaster开发
板
A型
,芯片为STM32F427IIH6,
使用
的灯条为WS2812B。
采用PWM+
DMA
控制,
使用
CUBEMX
配置
底层,keil5编辑烧录代码
实现:一共
五
片扇叶,每片扇叶均实现流水灯+常亮颜色
参考文章在后面会标记出来
Manifold/TX2/Linux 下相关设置
1、设置程序上电自动执行
设置程序上电自动执行,即为设置开机自动运行可执行文件,Manifold/TX2 中的设置大同小异,均需要借助 bash 脚本(即 sh 脚本,bash 为增强版本),bash 脚本以下图为例:
按照上图的格式建立好 bash 脚本之后,可
使用
gnome 的启动项管理实现该 脚本文件的开机自启(TX2 中已经安装好相关工具):
$ sudo gnome-session