• 大小: 14KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签: nrf24L01  

资源简介

用DSP控制nrf24L01的c程序,主要是针对ADI公司的bf512芯片

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include “PLL.h“
#include “LED.h“
#include “Key.h“
#include “nRF24L01.h“

//**************************** NRF24L01*********************//
#define nRF_TX_ADDR_WIDTH 5    // x uints TX address width
#define nRF_RX_ADDR_WIDTH   5    // x uints RX address width

#define nRF_TX_PLOAD_WIDTH  5   // x uints TX payload
#define nRF_RX_PLOAD_WIDTH  5   // x uints TX payload

unsigned char nRF_TX_ADDRESS[nRF_TX_ADDR_WIDTH] = {0x340x430x100x100x01}; //要发送数据的目标地址
unsigned char nRF_RX_ADDRESS[nRF_RX_ADDR_WIDTH] = {0x340x430x100x100x01}; //需要接收数据的目标地址

unsigned char nRF_tx_buf[nRF_TX_PLOAD_WIDTH] = {0};
unsigned char nRF_rx_buf[nRF_RX_PLOAD_WIDTH] = {0};

void Start_nRF24L01(void)
{
unsigned char status = 0x00status2 = 0vali = 1;
SetLEDs(7);
Init_Interrupt_nRF24L01();

status = Read_Reg_nRF24L01(nRF_STATUS);
Write_Reg_nRF24L01(nRF_WRITE_REG + nRF_STATUSstatus);
nRF_tx_buf[0] = 6;
SetTX_Mode_nRF24L01(nRF_tx_bufnRF_TX_PLOAD_WIDTH);
SetRX_Mode();
while(1)
{
if(*pPORTFIO & KEY1)
{
Delayus_nRF24L01(10000);
if(*pPORTFIO & KEY1)
{
// SetLEDs(1);
nRF_tx_buf[0] = 1;
// Flush_FIFO_nRF24L01(nRF_FLUSH_TX);
SetTX_Mode_nRF24L01(nRF_tx_bufnRF_TX_PLOAD_WIDTH);
while(*pPORTFIO & KEY1);
SetRX_Mode();
}
}
else if(*pPORTFIO & KEY2)
{
Delayus_nRF24L01(10000);
if(*pPORTFIO & KEY2)
{
// SetLEDs(2);
nRF_tx_buf[0] = 2;
// Flush_FIFO_nRF24L01(nRF_FLUSH_TX);
SetTX_Mode_nRF24L01(nRF_tx_bufnRF_TX_PLOAD_WIDTH);
while(*pPORTFIO & KEY2);
SetRX_Mode();
}
}
else if(*pPORTFIO & KEY3)
{
Delayus_nRF24L01(10000);
if(*pPORTFIO & KEY3)
{
// SetLEDs(3);
nRF_tx_buf[0] = 3;
// Flush_FIFO_nRF24L01(nRF_FLUSH_TX);
SetTX_Mode_nRF24L01(nRF_tx_bufnRF_TX_PLOAD_WIDTH);
while(*pPORTFIO & KEY3);
SetRX_Mode();
}
}
else if(*pPORTFIO & KEY4)
{
Delayus_nRF24L01(10000);
if(*pPORTFIO & KEY4)
{
// SetLEDs(4);
nRF_tx_buf[0] = 4;
// Flush_FIFO_nRF24L01(nRF_FLUSH_TX);
SetTX_Mode_nRF24L01(nRF_tx_bufnRF_TX_PLOAD_WIDTH);
while(*pPORTFIO & KEY4);
SetRX_Mode();
}
}/**/
// status = Write_Reg_nRF24L01(nRF_WRITE_REG + nRF_CONFIG++i);
status = Write_Buf_nRF24L01(nRF_WRITE_REG + nRF_TX_ADDRnRF_RX_ADDRESS5);
status2 = Read_Buf_nRF24L01(nRF_TX_ADDRnRF_rx_buf5);
// val = Read_Reg_nRF24L01(nRF_CONFIG);
asm(“nop;“);
SetRX_Mode();
}

}

EX_INTERRUPT_HANDLER(PORTF_A_ISR)
{
unsigned char statusstatus2;

asm(“nop;“);
if(*pPORTFIO & nRF_IRQ)
{
*pPORTFIO_CLEAR  = nRF_IRQ; //clear interrupt flag
status = Read_Reg_nRF24L01(nRF_STATUS);
Write_Reg_nRF24L01(nRF_WRITE_REG + nRF_STATUSstatus);//clear the interrupt flag
status2 = Read_Reg_nRF24L01(nRF_STATUS);
asm(“nop;“);

if(status & nRF_RX_DR)
{
Read_Buf_nRF24L01(nRF_RD_RX_PLOADnRF_rx_bufn

评论

共有 条评论