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

基于FreeRTOS的STM32四轴飞行器: 六.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并根据返回值判读发射成功与否。

配置为发送模式:

根据原理图更改为串口一:

飞控端 串口有数据打印,通讯正常:

相关推荐
测试专家2 分钟前
PCI-1553B板卡在 Windows Server 2016 服务器安装流程详解
服务器·windows·单片机
国科安芯17 分钟前
还是4位?ASC8T245S 与 ASC4T245S 的双向电平转换选型实战
单片机·嵌入式硬件·物联网·fpga开发·机器人·云计算
Freak嵌入式2 小时前
RP2040 内核电源调节器:软件可调电压 + 三种模式,低功耗设计的利器
人工智能·单片机·嵌入式硬件·机器人·开源
SilentSlot2 小时前
【C/C++】手写 DPDK 协议栈(十二):TCP 并发与自实现 epoll 的就绪事件分发
c语言·c++·tcp/ip
SilentSlot2 小时前
【C/C++】手写 DPDK 协议栈(六):TCP 三次握手、状态机与数据回显
c语言·c++·tcp/ip
j7~2 小时前
【C语言】《C语言自定义类型(结构体+联合体+枚举类型)》--详解
c语言·开发语言·深度学习·结构体·位段·联合体·枚举类型
ACP广源盛139246256732 小时前
YLB3118 存储桥接芯片完整机会点@ACP#联动曙光 8000
大数据·人工智能·分布式·单片机·嵌入式硬件
蝎蟹居2 小时前
GBT 4706.1-2024逐句解读系列(31) 第7.21.1条款:说明书怎么写符合标准要求
人工智能·单片机·嵌入式硬件·物联网·安全
hongmai6668882 小时前
乐鑫ESP32-C61-WROOM-1模组:Wi-Fi 6与蓝牙LE双模的RISC-V新选择
单片机·嵌入式硬件·risc-v
电气_空空2 小时前
基于 LabVIEW的数据采集与信号处理系统的设计
嵌入式硬件·毕业设计·信号处理·labview