NRF24L01 MSP430发送接收程序word文档良心出品Word格式.docx

上传人:b****3 文档编号:13745017 上传时间:2022-10-13 格式:DOCX 页数:10 大小:99.13KB
下载 相关 举报
NRF24L01 MSP430发送接收程序word文档良心出品Word格式.docx_第1页
第1页 / 共10页
NRF24L01 MSP430发送接收程序word文档良心出品Word格式.docx_第2页
第2页 / 共10页
NRF24L01 MSP430发送接收程序word文档良心出品Word格式.docx_第3页
第3页 / 共10页
NRF24L01 MSP430发送接收程序word文档良心出品Word格式.docx_第4页
第4页 / 共10页
NRF24L01 MSP430发送接收程序word文档良心出品Word格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

NRF24L01 MSP430发送接收程序word文档良心出品Word格式.docx

《NRF24L01 MSP430发送接收程序word文档良心出品Word格式.docx》由会员分享,可在线阅读,更多相关《NRF24L01 MSP430发送接收程序word文档良心出品Word格式.docx(10页珍藏版)》请在冰豆网上搜索。

NRF24L01 MSP430发送接收程序word文档良心出品Word格式.docx

这是NRF24L01的头文件配置程序:

#include<

msp430x14x.h>

//=======================NRF24L01_CE端口=========================================

#defineRF24L01_CE_0P3OUT&

=~BIT1

#defineRF24L01_CE_1P3OUT|=BIT1

//=============================RF24L01_CSN端口==================================

#defineRF24L01_CSN_0P3OUT&

=~BIT3

#defineRF24L01_CSN_1P3OUT|=BIT3

//=============================RF24L01_SCK端口======================================

#defineRF24L01_SCK_0P3OUT&

=~BIT2

#defineRF24L01_SCK_1P3OUT|=BIT2

//=============================RF24L01_MISO端口=========================================

#defineRF24L01_MISO_0P3OUT&

=~BIT0

#defineRF24L01_MISO_1P3OUT|=BIT0

//=============================RF24L01_MOSI端口================================

#defineRF24L01_MOSI_0P2OUT&

=~BIT6

#defineRF24L01_MOSI_1P2OUT|=BIT6

//==========================IRQ状态============================================

#defineRF24L01_IRQ_0P2OUT&

=~BIT7

#defineRF24L01_IRQ_1P2OUT|=BIT7

//==========================NRF24L01地址,接收发送数据长度============================================

#defineTX_ADR_WIDTH5//5uintsTXaddresswidth

#defineRX_ADR_WIDTH5//5uintsRXaddresswidth

#defineTX_PLOAD_WIDTH32//32TXpayload//这里可以更改你想要发送和接收的数据长度如果是发指令我喜欢越短越好

#defineRX_PLOAD_WIDTH32//32uintsTXpayload

//=========================NRF24L01寄存器指令===================================

#defineREAD_REG0x00//读寄存器指令

#defineWRITE_REG0x20//写寄存器指令

#defineRD_RX_PLOAD0x61//读取接收数据指令

#defineWR_TX_PLOAD0xA0//写待发数据指令

#defineFLUSH_TX0xE1//冲洗发送FIFO指令

#defineFLUSH_RX0xE2//冲洗接收FIFO指令

#defineREUSE_TX_PL0xE3//定义重复装载数据指令

#defineNOP10xFF//保留

//========================SPI(nRF24L01)寄存器地址===============================

#defineCONFIG0x00//配置收发状态,CRC校验模式以及收发状态响应方式

#defineEN_AA0x01//自动应答功能设置

#defineEN_RXADDR0x02//可用信道设置

#defineSETUP_AW0x03//收发地址宽度设置

#defineSETUP_RETR0x04//自动重发功能设置

#defineRF_CH0x05//工作频率设置

#defineRF_SETUP0x06//发射速率、功耗功能设置

#defineSTATUS0x07//状态寄存器

#defineOBSERVE_TX0x08//发送监测功能

#defineCD0x09//地址检测

#defineRX_ADDR_P00x0A//频道0接收数据地址

#defineRX_ADDR_P10x0B//频道1接收数据地址

#defineRX_ADDR_P20x0C//频道2接收数据地址

#defineRX_ADDR_P30x0D//频道3接收数据地址

#defineRX_ADDR_P40x0E//频道4接收数据地址

#defineRX_ADDR_P50x0F//频道5接收数据地址

#defineTX_ADDR0x10//发送地址寄存器

#defineRX_PW_P00x11//接收频道0接收数据长度

#defineRX_PW_P10x12//接收频道0接收数据长度

#defineRX_PW_P20x13//接收频道0接收数据长度

#defineRX_PW_P30x14//接收频道0接收数据长度

#defineRX_PW_P40x15//接收频道0接收数据长度

#defineRX_PW_P50x16//接收频道0接收数据长度

#defineFIFO_STATUS0x17//FIFO栈入栈出状态寄存器设置

//=============================RF24l01状态=====================================

charTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};

//本地地址

//我刚开始学的时候对这个发送和接收地址不是很明白,为什么他要设置成这样,后来才知道这个地址是用户自己定的,也就是说不是每个芯片只有唯一的地址,只要发送和接收端的地址一致就行

charRX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};

//接收地址

charsta;

charTxBuf[32]=

{

0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08,

0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,

0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,

0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,

};

//这个程序要发送的数据

voidRF24L01_IO_set(void);

voidms_delay(void);

voidInitSys();

voidDelay(ints);

charSPI_RW(chardata);

charSPI_Read(charreg);

charSPI_RW_Reg(charreg,charvalue);

charSPI_Read_Buf(charreg,char*pBuf,charuchars);

charSPI_Write_Buf(charreg,char*pBuf,charuchars);

voidSetRX_Mode(void);

charnRF24L01_RxPacket(char*rx_buf);

voidnRF24L01_TxPacket(char*tx_buf);

voidinit_NRF24L01(void);

//===========================RF24L01端口设置==========================================

voidRF24L01_IO_set(void)

P2DIR&

=0x7f;

P2DIR|=0x40;

P2SEL&

=0x3F;

P2IE=P2IE&

0x3f;

P3DIR&

=0xFE;

P3DIR|=0x0E;

P3SEL&

=0xF0;

}

//******************************************************************************

//系统初始化打开430XT2晶振

voidInitSys()

unsignedintiq0;

_DINT();

BCSCTL1&

=~XT2OFF;

do

IFG1&

=~OFIFG;

//清除振荡器失效标志

for(iq0=0xFF;

iq0>

0;

iq0--);

//延时,等待XT2起振

while((IFG1&

OFIFG)!

=0);

//判断XT2是否起振

BCSCTL2=SELM1+SELS;

//MCLK,SMCLK时钟为XT2

//========================延时约5ms=============================================

voidms_delay(void)

{

unsignedinti=40000;

while(i!

=0)

i--;

//========================================长延时================================

voidDelay(ints)

unsignedinti,j;

for(i=0;

i<

s;

i++);

for(j=0;

j<

j++);

//*******************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1