本文分享了使用STM32通过DMA处理DBUS协议与遥控器通讯的经验,详细阐述了DMA配置、DBUS协议详情、CubeMX设置步骤以及解码函数的实现。调试过程中,通过观察变量验证了配置的正确性。 摘要由CSDN通过智能技术生成

一. DMA

直接存储器访问( Direct Memory Access,DMA ,当需要将外部设备发来的数据存储在存储器中时,如果不使用DMA方式则首先需要将外部设备数据先读入CPU中,再由CPU将数据存储到存储器中,如果数据量很大的话,那么将会占用大量的CPU时间,而通过使用DMA控制器直接将外部设备数据送入存储器,不需要占用CPU。STM32中的许多通讯如USART,SPI,IIC都支持DMA方式进行数据的收发。

二. DBUS协议

遥控器和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