1 Star 0 Fork 0

mo_yq5/wifi-joystick-c

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
m_nrf2401.h 7.75 KB
一键复制 编辑 原始数据 按行查看 历史
#ifndef M_NRF2401_H
#define M_NRF2401_H "m_nrf2401"
// 寄存器地址
#define M_NRF_REG_CONFIG 0x00 // 配置寄存器
#define M_NRF_REG_EN_AA 0x01 // "自动应答"使能寄存器,配置哪些通道接收数据后自动响应
#define M_NRF_REG_EN_RXADDR 0x02 // "接收地址"使能寄存器,配置哪些通道的地址可用于接收数据
#define M_NRF_REG_SETUP_AW 0x03 // 设置(所有)通道地址宽度寄存器
#define M_NRF_REG_SETUP_RETR 0x04 // 设置重发间隔时间和重发次数寄存器
#define M_NRF_REG_RF_CH 0x05 // 设置射频通道寄存器,配置工作频率
#define M_NRF_REG_RF_SETUP 0x06 // 射频寄存器,配置传输速率和发射功率
#define M_NRF_REG_STATUS 0x07 // 状态寄存器,接收、发送中断状态、重发中断状态、接收数据通道号、数据寄存器满状态等
#define M_NRF_REG_OBSERVE_TX 0x08 // 发送测试寄存器,只读,包含丢包次数和重发次数
#define M_NRF_REG_CD 0x09 // 载波测试寄存器,只读
#define M_NRF_REG_RX_ADDR_P0 0x0A // 数据通道0接收地址寄存器,读写
#define M_NRF_REG_RX_ADDR_P1 0x0B // 数据通道1接收地址寄存器,读写
#define M_NRF_REG_RX_ADDR_P2 0x0C // 数据通道2接收地址寄存器,读写,最低字节写有效,其它字节同P1
#define M_NRF_REG_RX_ADDR_P3 0x0D // 数据通道3接收地址寄存器,读写,最低字节写有效,其它字节同P1
#define M_NRF_REG_RX_ADDR_P4 0x0E // 数据通道4接收地址寄存器,读写,最低字节写有效,其它字节同P1
#define M_NRF_REG_RX_ADDR_P5 0x0F // 数据通道5接收地址寄存器,读写,最低字节写有效,其它字节同P1
#define M_NRF_REG_TX_ADDR 0x10 // 发送地址
#define M_NRF_REG_RX_PW_P0 0x11 // 接收数据通道0有效数据宽度寄存器,1~32,0设置不合法
#define M_NRF_REG_RX_PW_P1 0x12 // 接收数据通道1有效数据宽度寄存器,1~32,0设置不合法
#define M_NRF_REG_RX_PW_P2 0x13 // 接收数据通道2有效数据宽度寄存器,1~32,0设置不合法
#define M_NRF_REG_RX_PW_P3 0x14 // 接收数据通道3有效数据宽度寄存器,1~32,0设置不合法
#define M_NRF_REG_RX_PW_P4 0x15 // 接收数据通道4有效数据宽度寄存器,1~32,0设置不合法
#define M_NRF_REG_RX_PW_P5 0x16 // 接收数据通道5有效数据宽度寄存器,1~32,0设置不合法
#define M_NRF_REG_FIFO_STATUS 0x17 // FIFO状态寄存器,只读,包括数据接收、发送寄存器满、非满、空、非空等状态
#define M_NRF_REG_TX_PLD // 发送数据寄存器,未提供地址
#define M_NRF_REG_RX_PLD // 接收数据寄存器,未提供地址
// 寄存器功能位
#define M_NRF_BIT_CONFIG_MASK_RX_DR 6 // RX_DR中断屏蔽位,1表示屏蔽"收到数据"中断,0表示开启,并在发生中断时IRQ引角为低电平
#define M_NRF_BIT_CONFIG_MASK_TX_DS 5 // TX_DS中断屏蔽位,1表示屏蔽"数据发送完成"中断,0表示开启,并在发生中断时IRQ引角为低电平
#define M_NRF_BIT_CONFIG_MASK_MAX_RT 4 // MAX_RT中断屏蔽位,1表示屏蔽"达到重发次数"中断,0表示开启,并在发生中断时IRQ引角为低电平
#define M_NRF_BIT_CONFIG_EN_CRC 3 // CRC使能,默认为1,如果EN_AA寄存器中任意一位为高,则EN_CRC强迫为高。
#define M_NRF_BIT_CONFIG_CRCO 2 // CRC模式:0->8位CRC校验;1->16位CRC校验
#define M_NRF_BIT_PWR_UP 1 // 1上电;0掉电
#define M_NRF_BIT_PRIM_RX 0 // 1接收模式;0发送模式
#define M_NRF_BIT_EN_AA_P5 5 // 数据通道5自动应答允许,默认为1
#define M_NRF_BIT_EN_AA_P4 4 // 数据通道4自动应答允许,默认为1
#define M_NRF_BIT_EN_AA_P3 3 // 数据通道3自动应答允许,默认为1
#define M_NRF_BIT_EN_AA_P2 2 // 数据通道2自动应答允许,默认为1
#define M_NRF_BIT_EN_AA_P1 1 // 数据通道1自动应答允许,默认为1
#define M_NRF_BIT_EN_AA_P0 0 // 数据通道0自动应答允许,默认为1
#define M_NRF_BIT_EN_RXADDR_P5 5 // 接收数据通道5允许
#define M_NRF_BIT_EN_RXADDR_P4 4 // 接收数据通道4允许
#define M_NRF_BIT_EN_RXADDR_P3 3 // 接收数据通道3允许
#define M_NRF_BIT_EN_RXADDR_P2 2 // 接收数据通道2允许
#define M_NRF_BIT_EN_RXADDR_P1 1 // 接收数据通道1允许,默认为1
#define M_NRF_BIT_EN_RXADDR_P0 0 // 接收数据通道0允许,默认为1
#define M_NRF_BIT_SETUP_AW 0 // 接收/发送地址宽度,占两位,默认为'11','00'->无效;'01'->3字节宽度;'10'->4字节宽度;'11'->5字节宽度
#define M_NRF_BIT_SETUP_RETR_ADR 4 // 重发延时,占4位,'0000'等待250+86us;'0001'等待500+86us;'0010'等待750+86us;...'1111'等待4000+86us
#define M_NRF_BIT_SETUP_RETR_ARC 0 // 自动重发计数,占4位,默认'0011','0000'禁止重发;'0001'自动重发1次;...'1111'自动重发15次
#define M_NRF_BIT_RF_CH_RF_CH 0 // 工作通道频率,占7位,默认'0000010'
#define M_NRF_BIT_RF_SETUP_PLL_LOCK 4 // PLL_LOCK允许,仅应用于测试模式
#define M_NRF_BIT_RF_SETUP_RF_DR 3 // 传输速率,默认1,0->1Mbps;1->2Mbps
#define M_NRF_BIT_RF_SETUP_RF_PWR 1 // 发射功率,占2位,默认'11','00'-18dBm;'01'-12dBm;'10'-6dBm;'11'0dBm;
#define M_NRF_BIT_RF_SETUP_LNA_HCURR 0 // 低噪声放大器增益,默认1
#define M_NRF_BIT_STATUS_RX_DR 6 // 接收数据中断。当收到有效数据后置1,写1清除中断
#define M_NRF_BIT_STATUS_TX_DS 5 // 发送数据完成中断。当数据发送完成后产生中断。如果工作在自动应答模式下,只有当接收到应答信息后置1。写1清除中断
#define M_NRF_BIT_STATUS_MAX_RT 4 // 达到最多生发次数。写1清除中断。如果MAX_RT中断产生则必须清除后系统才能进行通讯
#define M_NRF_BIT_STATUS_RX_P_NO 1 // 接收数据通道号。占3位,000-101:数据通道号;110:未使用;111:RX_FIFO寄存器为空
#define M_NRF_BIT_STATUS_TX_FULL 0 // TX_FIFO寄存器满标志。1满,0未满
#define M_NRF_BIT_FIFO_STATUS_TX_REUSE 6 // 若TX_REUSE=1则当CE位高电平状态时不断发送上一数据包,TX_REUSE通过REUSE_TX_PL设置,通过W_TX_PAYLOAD或FLUSH_TX复位
#define M_NRF_BIT_FIFO_STATUS_TX_FULL 5 // TX FIFO寄存器满标志。1满;0未满
#define M_NRF_BIT_FIFO_STATUS_TX_EMPTY 4 // TX FIFO寄存器空标志。1空;0非空
#define M_NRF_BIT_FIFO_STATUS_RX_FULL 1 // RX FIFO寄存器满标志。1满;0未满
#define M_NRF_BIT_FIFO_STATUS_RX_EMPTY 0 // RX FIFO寄存器空标志。1空;0非空
// 操作指令
#define M_NRF_REG_READ 0x00 // 寄存器读指令,即:0000 0000
#define M_NRF_REG_WRITE 0x20 // 寄存器写指令,即:0010 0000
#define M_NRF_RX_READ 0x61 // 接收数据读指令,即:0110 0001
#define M_NRF_TX_WRITE 0xA0 // 发送数据写指令,即:1010 0000
#define M_NRF_TX_FLUSH 0xE1 // 清除TX FIFO寄存器,应用于发射模式下,即:1110 0001
#define M_NRF_RX_FLUSH 0xE2 // 清除RX FIFO寄存器,应用于接收模式下,即:1110 0010
#define M_NRF_TX_REUSE 0xE3 // 重新使用上一包有效数据,即:1110 0011
// 当CE为高过程中,数据包被不断重新发送。在发射数据包过程中必须禁止数据包重复利用功能
#define M_NRF_NOP 0xFF // 空操作。可以用来读状态寄存器
int m_nrf_init();
int m_nrf_tx_mode();
int m_nrf_host_tx_data(unsigned char *data, int size);
#endif
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/moyq5/wifi-joystick-c.git
[email protected]:moyq5/wifi-joystick-c.git
moyq5
wifi-joystick-c
wifi-joystick-c
master

搜索帮助