?? 2401_tx.c
字號:
#include "nrf24l01.h"
uchar nRF_data[33]; // 發送數據緩沖區
uchar nRF_R_data[33]; // 接收數據緩沖區
void nrf24l01_init(void); // nRF24L01初始化
void nrf24l01_send(uchar *s, uchar No); // nRF24L01發送數據
void nrf24l01_init()
{
// UINT i;
IO0DIR |= nRF_CE;
IO0DIR &= ~nRF_IRQ;
IO0CLR = nRF_CE; // 空閑模式,不進行數據傳輸
nRF_data[0] = 0x21; // EN_AA
nRF_data[1] = 0x01; // 通道0自動應答
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x22; // EN_RXADDR:激活接收地址
nRF_data[1] = 0x01; // 使能接收通道0
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x23; // SETUP_AW:設置地址寬度
nRF_data[1] = 0x03; // 5byte地址寬度
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x24; // SETUP_RETR
nRF_data[1] = 0x0a; // 不轉發
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x25; // RF_CH:射頻頻道
nRF_data[1] = 0x40; // 頻點2
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x26; // RF_SETUP:射頻設置寄存器
nRF_data[1] = 0x09; // 2Mbps, 0-18 dBm,Setup LNA gain
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x27; // STATUS:狀態寄存器
nRF_data[1] = 0x70; // 清空各中斷
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x2A; // RX_ADDR_P0:接收數據通道0的地址40位
nRF_data[1] = 0x01; // 接收數據通道0的地址LSB
nRF_data[2] = 0x02;
nRF_data[3] = 0x03;
nRF_data[4] = 0x04;
nRF_data[5] = 0x05; // 接收數據通道0的地址MSB
SSP_SendData(nRF_data, nRF_data, 6);
nRF_data[0] = 0x30; // TX_ADDR:發送數據通道地址,40位
nRF_data[1] = 0x01; // 接收數據通道0的地址LSB
nRF_data[2] = 0x02;
nRF_data[3] = 0x03;
nRF_data[4] = 0x04;
nRF_data[5] = 0x05; // 接收數據通道0的地址MSB
SSP_SendData(nRF_data, nRF_data, 6);
nRF_data[0] = 0x31; // RX_PW_P0 :接收數據通道0的有效載荷字節數
nRF_data[1] = 20; // 32byte
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x20; // CONFIG:PRx, CRC 1byte
nRF_data[1] = 0x0f;
SSP_SendData(nRF_data, nRF_data, 2);
IO0SET = nRF_CE; // 進入發送或接收模式
nRF_data[0] = 0xe1; //
SSP_SendData(nRF_data, nRF_data, 1);
nRF_data[0] = 0xe2; //
SSP_SendData(nRF_data, nRF_data, 1);
}
void nrf24l01_send(uchar *s, uchar No)
{
uchar i;
IO0CLR = nRF_CE;
nRF_data[0] = 0x23; // CONFIG:
nRF_data[1] = 0x03; // PTx, CRC 1byte
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x30; // TX_ADDR:發送數據通道地址,40位
nRF_data[1] = 0x01; // 接收數據通道0的地址LSB
nRF_data[2] = 0x02;
nRF_data[3] = 0x03;
nRF_data[4] = 0x04;
nRF_data[5] = 0x05; // 接收數據通道0的地址MSB
SSP_SendData(nRF_data, nRF_data, 6);
nRF_data[0] = 0x2A; // RX_ADDR_P0:接收數據通道0的地址40位
nRF_data[1] = 0x01; // 接收數據通道0的地址LSB
nRF_data[2] = 0x02;
nRF_data[3] = 0x03;
nRF_data[4] = 0x04;
nRF_data[5] = 0x05; // 接收數據通道0的地址MSB
SSP_SendData(nRF_data, nRF_data, 6);
nRF_data[0] = 0xa0; // 寫Tx數據
for(i=1; i<21; i++)
{
nRF_data[i] = 3; // No<32byte
}
SSP_SendData(nRF_data, nRF_data, 21);
nRF_data[0] = 0x27; // STATUS:狀態寄存器
nRF_data[1] = 0x70; // 清空各中斷
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x21; // EN_AA
nRF_data[1] = 0x01; // 通道0自動應答
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x22; // EN_RXADDR:激活接收地址
nRF_data[1] = 0x01; // 使能接收通道0
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x24; // SETUP_RETR
nRF_data[1] = 0x0a; // 不轉發,重發一次
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x25; // RF_CH:射頻頻道
nRF_data[1] = 0x40; // 頻點2
SSP_SendData(nRF_data, nRF_data, 2);
nRF_data[0] = 0x20; // CONFIG:PRx, CRC 1byte
nRF_data[1] = 0x0e;
SSP_SendData(nRF_data, nRF_data, 2);
IO0SET = nRF_CE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -