📄 nrf2401.c
字号:
/*
项目: 人员定位
文件: nRF2401.c
日期: 2007.09.12
作者: 邵子扬
说明: nRF2401相关函数,包括配置、初始化、发送数据等。
*/
#include <avr/io.h>
#include "cfg.h"
#include "typedef.h"
#include "hardware.h"
#define ADDR1_INDEX (7 + 5 - (RF_ADDRW + 7)/8)
#define AADR2_INDEX (2 + 5 - (RF_ADDRW + 7)/8)
//地址长度
#define RF_ADDR_LEN (RF_ADDRW + 7)/8
//缓冲区长度
#define RF_BUF_LEN (RF_DATAW1 + 7)/8
//数据缓冲区:收发共用
uint8 RFBuf[RF_BUF_LEN];
//配置字,相关宏在cfg.h中定义
const uint8 configdata[15] =
{
//通道2数据长度
RF_DATAW2,
//通道1数据长度bits
RF_DATAW1,
//通道2地址
RF_ADDR24,
RF_ADDR23,
RF_ADDR22,
RF_ADDR21,
RF_ADDR20,
//通道1地址
RF_ADDR14,
RF_ADDR13,
RF_ADDR12,
RF_ADDR11,
RF_ADDR10,
//地址长度+CRC使能
RF_CRCEN|(RF_CRCL << 1)|(RF_ADDRW << 2),
//功率+晶体+速率+模式+双通道
RF_PWR|(RF_CRYS << 2)|(RF_BPS << 5)|(RF_MODE << 6)|(RF_RX2EN << 7),
RF_RXEN|(RF_FREQ << 1) //收发+频率
};
//使用通道2
#if (RF_RX2EN == 1)
#endif
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
//初始化
void nRF2401_init()
{
//stand by 模式
cs_low();
ce_low();
}
//配置参数
void nRF2401_config()
{
uint8 i;
cs_high();
ce_low();
//发送配置字
for(i = 0; i < 15; i++)
spi_wr(configdata[i]);
cs_low();
}
//发送数据
void nRF2401_transmit()
{
uint8 i;
ce_high();
cs_low();
//发送地址
for(i = 0; i < RF_ADDR_LEN; i++)
spi_wr(configdata[8 + i]);
//发送数据
for(i = 0; i < RF_BUF_LEN; i++)
spi_wr(RFBuf[i]);
ce_low();
}
void nRF2401_receiver()
{
uint8 i;
// ce_high();
cs_low();
//接收数据
for(i = 0; i < RF_BUF_LEN; i++)
RFBuf[i] = spi_wr(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -