[项目]基于FreeRTOS的STM32四轴飞行器: 六.2.4g通信

devtools/2025/3/16 8:51:50/

基于FreeRTOS的STM32四轴飞行器: 六.2.4g通信

  • 一.Si24Ri原理图
  • 二.Si24R1芯片手册解读
  • 三.驱动函数讲解
  • 五.移植2.4g通讯(飞控部分)
  • 六.移植2.4g通讯(遥控部分)

一.Si24Ri原理图

Si24R1芯片原理图如下:
右侧为晶振。
在这里插入图片描述
模块芯片与主控芯片连接引脚如下:
在这里插入图片描述
SI-EN:使能引脚。
SI-IRO:可屏蔽中断信号,低电平有效。
SPI1-NSS:片选信号。
SPI1-CLK:时钟信号。
SPI1-MOSI:主设备输出从设备输入。
SPI1-MISO:主设备输入从设备输出。

二.Si24R1芯片手册解读

在这里插入图片描述
信道取值范围1到126,如果两个人同时使用一个信道会导致干扰。
状态机转换图:
在这里插入图片描述
TX工作模式:
在这里插入图片描述
RX工作模式:
在这里插入图片描述
在这里插入图片描述
当芯片数据过多处理不过来时,FIFO中可以存储三个数据包起到存储缓冲作用,当满了时接收到的数据包被自动丢掉。所以最好协调发送接收的频率相等,或者发送稍微慢一些。
数据包处理协议:
在这里插入图片描述
在实际代码编写时在负载数据中加入自己的数据校验。
在这里插入图片描述

三.驱动函数讲解

定义两个地址:
在这里插入图片描述
定义两个缓冲区:
在这里插入图片描述
在.h文件中extern两个缓冲区:
在这里插入图片描述
标记位:
在这里插入图片描述
写寄存器:
在这里插入图片描述
读寄存器:
在这里插入图片描述
写多个字节:
在这里插入图片描述
在这里插入图片描述
自检判断校验是否成功:
在这里插入图片描述
在这里插入图片描述

五.移植2.4g通讯(飞控部分)

文件夹创建.c.h文件,将代码复制粘贴进文件:
在这里插入图片描述
配置为全双工模式,不能超过18M,设置为4分频:
在这里插入图片描述
观察配置引脚是否与原理图一致:
在这里插入图片描述
配置片选信号NSS低电平有效,所以PA4引脚设置为高电平,使用时拉低电平:
在这里插入图片描述
配置使能信号,默认使能:
在这里插入图片描述
配置IRQ中断输入引脚,低电平有效默认上拉:
在这里插入图片描述
在这里插入图片描述
.h文件2.4g通道设置:
在这里插入图片描述
将该函数Driver_SPI_SwapByte定义:
在这里插入图片描述
在应用层编写Start函数,在中间自检:
在这里插入图片描述
App_Task中编写通信任务:
与飞控任务优先级保持一致,与飞控任务重要性差不多。
在这里插入图片描述
测试通讯任务:
因为通讯任务和飞控任务优先级相同,所以可能会导致硬件出问题,在该处开头延时1000ms。使用Inf_Si24R1_TxPacket函数接受数据包,将数据保存在RX_BUFF中,返回值0接收到数据,1未接收到数据。
在这里插入图片描述
在这里插入图片描述

六.移植2.4g通讯(遥控部分)

根据原理图配置SPI接口:
在这里插入图片描述
在这里插入图片描述
在keil中配置.h文件:
在这里插入图片描述
管理目录结构:
在这里插入图片描述
删除多余功能后,编写通讯任务:
将数据填入TX_BUFF并根据返回值判读发射成功与否。
在这里插入图片描述
配置为发送模式:
在这里插入图片描述
根据原理图更改为串口一:
在这里插入图片描述
飞控端串口有数据打印,通讯正常:
在这里插入图片描述


http://www.ppmy.cn/devtools/167503.html

相关文章

一次Milvus迁移的记录

前言 希望把Linux上生产环境中使用docker compose运行的milvus迁移到本地(mac os)的docker compose中 操作过程 找到了官方有两个相关的项目: https://github.com/zilliztech/milvus-backup https://github.com/zilliztech/vts 但是…我都没用,因为使…

iOS应用程序开发(图片处理器)

续上篇 iOS 编程开发图片浏览器,继续实现一个图标生成功能。 功能。 操作系统平台:MacBook(macOS) IDE:xcode 编程语言:Objective-c 以下是小程序在 iPhone 模拟器中的运行视频。也可以在 iPad 模拟器中运行。 效果图如下所示&#xff1a…

2. qt写带有槽的登录界面(c++)

我们在1.Qt写简单的登录界面(c)_c qt 设计一个简单界面-CSDN博客中写了个简单的登录界面&#xff0c;但没有槽&#xff0c;在这里写一个带有槽的界面。 1.代码 代码目录如下&#xff1a; main.cpp的代码如下&#xff1a; #include "MainWindow.h" #include <Qt…

【SpringBoot】实现登录功能

在上一篇博客中&#xff0c;我们讲解了注册页面的实现。在此基础上会跳转到登录页面&#xff0c;今天给大家带来的是使用 SpringBoot&#xff0c;MyBatis&#xff0c;Html&#xff0c;CSS&#xff0c;JavaScript&#xff0c;前后端交互实现一个登录功能。 目录 一、效果 二、…

MySQL数据库知识总结

MySQL数据库知识总结 一、基本概念及其介绍二、数据库中的数据类型&#xff08;一&#xff09;数值类型&#xff08;二&#xff09;字符串类型&#xff08;三&#xff09;日期类型 三、数据库基础语法&#xff08;一&#xff09;数据库的常用操作&#xff08;二&#xff09;数据…

golang算法回溯

字符集回溯 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#x…

【2025】基于python+django的驾校招生培训管理系统(源码、万字文档、图文修改、调试答疑)

课题功能结构图如下&#xff1a; 驾校招生培训管理系统设计 一、课题背景 随着机动车保有量的不断增加&#xff0c;人们对驾驶技能的需求也日益增长。驾校作为驾驶培训的主要机构&#xff0c;面临着激烈的市场竞争和学员需求多样化等挑战。传统的驾校管理模式往往依赖于人工操作…

Certbot实现SSL免费证书自动续签(CentOS 7版 + Docker部署的nginx)

前置安装&#xff0c;可参考Certbot实现SSL免费证书自动续签&#xff08;CentOS 7 nginx/apache&#xff09; 如果是通过 Docker 运行 Nginx&#xff0c; certbot 无法直接检测到本地的 Nginx 配置。解决方案是 使用 standalone 模式 或 挂载 Webroot 方式获取 SSL 证书&…