欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    nrf24l01发送程序 .pdf

    • 资源ID:70008562       资源大小:69.58KB        全文页数:8页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    nrf24l01发送程序 .pdf

    #include#include typedef unsigned char uchar;typedef unsigned char uint;/*IO端口定义*sbit MISO=P12;sbit MOSI=P32;sbit SCK =P16;sbit CE =P15;sbit CSN =P17;sbit IRQ =P13;/*数码管0-9编码*uchar seg10=0 xC0,0 xCF,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;/09段码 uchar TxBuf32=0 x01,0 x02,0 x03,0 x4,0 x05,0 x06,0 x07,0 x08,0 x09,0 x10,0 x11,0 x12,0 x13,0 x14,0 x15,0 x16,0 x17,0 x18,0 x19,0 x20,0 x21,0 x22,0 x23,0 x24,0 x25,0 x26,0 x27,0 x28,0 x29,0 x30,0 x31,0 x32,;/*按键*sbit KEY1=P36;sbit KEY2=P37;/*数码管位选*sbit led1=P21;sbit led0=P20;sbit led2=P22;sbit led3=P23;/*NRF24L01*#define TX_ADR_WIDTH 5 /5 uints TX address width#define RX_ADR_WIDTH 5 /5 uints RX address width#define TX_PLOAD_WIDTH 32 /20 uints TX payload#define RX_PLOAD_WIDTH 32 /20 uints TX payload uint const TX_ADDRESSTX_ADR_WIDTH=0 x34,0 x43,0 x10,0 x10,0 x01;/本地地址 uint const RX_ADDRESSRX_ADR_WIDTH=0 x34,0 x43,0 x10,0 x10,0 x01;/接收地址/*NRF24L01寄存器指令*#define READ_REG 0 x00 /读寄存器指令#define WRITE_REG 0 x20 /写寄存器指令#define RD_RX_PLOAD 0 x61 /读取接收数据指令#define WR_TX_PLOAD 0 xA0 /写待发数据指令#define FLUSH_TX 0 xE1 /冲洗发送 FIFO 指令#define FLUSH_RX 0 xE2 /冲洗接收 FIFO 指令#define REUSE_TX_PL 0 xE3 /定义重复装载数据指令#define NOP 0 xFF /保留/*SPI(nRF24L01)寄存器地址*#define CONFIG 0 x00 /配置收发状态,CRC 校验模式以及收发状态响应方式#define EN_AA 0 x01 /自动应答功能设置#define EN_RXADDR 0 x02 /可用信道设置#define SETUP_AW 0 x03 /收发地址宽度设置#define SETUP_RETR 0 x04 /自动重发功能设置#define RF_CH 0 x05 /工作频率设置#define RF_SETUP 0 x06 /发射速率、功耗功能设置#define STATUS 0 x07 /状态寄存器#define OBSERVE_TX 0 x08 /发送监测功能#define CD 0 x09 /地址检测#define RX_ADDR_P0 0 x0A /频道 0 接收数据地址#define RX_ADDR_P1 0 x0B /频道 1 接收数据地址#define RX_ADDR_P2 0 x0C /频道 2 接收数据地址#define RX_ADDR_P3 0 x0D /频道 3 接收数据地址#define RX_ADDR_P4 0 x0E /频道 4 接收数据地址#define RX_ADDR_P5 0 x0F /频道 5 接收数据地址#define TX_ADDR 0 x10 /发送地址寄存器#define RX_PW_P0 0 x11 /接收频道 0 接收数据长度#define RX_PW_P1 0 x12 /接收频道 0 接收数据长度#define RX_PW_P2 0 x13 /接收频道 0 接收数据长度#define RX_PW_P3 0 x14 /接收频道 0 接收数据长度#define RX_PW_P4 0 x15 /接收频道 0 接收数据长度#define RX_PW_P5 0 x16 /接收频道 0 接收数据长度#define FIFO_STATUS 0 x17 /FIFO 栈入栈出状态寄存器设置/*void Delay(unsigned int s);void inerDelay_us(unsigned char n);void init_NRF24L01(void);uint SPI_RW(uint uchar);uchar SPI_Read(uchar reg);void SetRX_Mode(void);uint SPI_RW_Reg(uchar reg,uchar value);uint SPI_Read_Buf(uchar reg,uchar*pBuf,uchar uchars);uint SPI_Write_Buf(uchar reg,uchar*pBuf,uchar uchars);unsigned char nRF24L01_RxPacket(unsigned char*rx_buf);void nRF24L01_TxPacket(unsigned char*tx_buf);/*长延时*void Delay(unsigned int s)unsigned int i;for(i=0;is;i+);for(i=0;i0;n-)_nop_();/*/*NRF24L01 初始化/*/void init_NRF24L01(void)inerDelay_us(100);CE=0;/chip enable CSN=1;/Spi disable SCK=0;/Spi clock line init high SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);/写本地地址 SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);/写接收端地址 SPI_RW_Reg(WRITE_REG+EN_AA,0 x01);/频道 0 自动 ACK 应 答 允 许 SPI_RW_Reg(WRITE_REG+EN_RXADDR,0 x01);/允许接收地址只有频道 0,如 果需要多频道可以参考 Page21 SPI_RW_Reg(WRITE_REG+RF_CH,0);/设置信道工作为 2.4GHZ,收发必须一致 SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);/设置接收数据长度,本次设置为 32 字节 SPI_RW_Reg(WRITE_REG+RF_SETUP,0 x07);/设置发射速率为 1MHZ,发射功率为最大值 0dB SPI_RW_Reg(WRITE_REG+CONFIG,0 x0e);/IRQ 收发完成中断响应,16位 CRC,主发送 /*/*函数:uint SPI_RW(uint uchar)/*功能:NRF24L01 的 SPI 写时序/*/uint SPI_RW(uint uchar)uint bit_ctr;for(bit_ctr=0;bit_ctr8;bit_ctr+)/output 8-bit MOSI=(uchar&0 x80);/output uchar,MSB to MOSI uchar=(uchar 1);/shift next bit into MSB.SCK=1;/Set SCK high.uchar|=MISO;/capture current MISO bit SCK=0;/.then set SCK low again return(uchar);/return read uchar /*/*函数:uchar SPI_Read(uchar reg)/*功能:NRF24L01 的 SPI 时序/*/uchar SPI_Read(uchar reg)uchar reg_val;CSN=0;/CSN low,initialize SPI communication.SPI_RW(reg);/Select register to read from.reg_val=SPI_RW(0);/.then read registervalue CSN=1;/CSN high,terminate SPI communication return(reg_val);/return register value /*/*功能:NRF24L01 读写寄存器函数/*/uint SPI_RW_Reg(uchar reg,uchar value)uint status;CSN=0;/CSN low,init SPI transaction status=SPI_RW(reg);/select register SPI_RW(value);/.and write value to it.CSN=1;/CSN high again return(status);/return nRF24L01 status uchar /*/*函数:uint SPI_Read_Buf(uchar reg,uchar*pBuf,uchar uchars)/*功能:用于读数据,reg:为寄存器地址,pBuf:为待读出数据地址,uchars:读出数据的个数/*/uint SPI_Read_Buf(uchar reg,uchar*pBuf,uchar uchars)uint status,uchar_ctr;CSN=0;/Set CSN low,init SPI tranaction status=SPI_RW(reg);/Select register to write to and read status uchar for(uchar_ctr=0;uchar_ctruchars;uchar_ctr+)pBufuchar_ctr=SPI_RW(0);/CSN=1;return(status);/return nRF24L01 status uchar /*/*函数:uint SPI_Write_Buf(uchar reg,uchar*pBuf,uchar uchars)/*功能:用于写数据:为寄存器地址,pBuf:为待写入数据地址,uchars:写入数据的个数 /*/uint SPI_Write_Buf(uchar reg,uchar*pBuf,uchar uchars)uint status,uchar_ctr;CSN=0;/SPI 使能 status=SPI_RW(reg);for(uchar_ctr=0;uchar_ctruchars;uchar_ctr+)/SPI_RW(*pBuf+);CSN=1;/关闭 SPI return(status);/*/*函数:void SetRX_Mode(void)/*功能:数据接收配置 /*/void SetRX_Mode(void)CE=0;SPI_RW_Reg(WRITE_REG+CONFIG,0 x0f);/IRQ 收发完成中断响应,16位 CRC,主接收 CE=1;inerDelay_us(130);/*/*函数:unsigned char nRF24L01_RxPacket(unsigned char*rx_buf)/*功能:数据读取后放如 rx_buf 接收缓冲区中/*/unsigned char nRF24L01_RxPacket(unsigned char*rx_buf)unsigned char revale=0;sta=SPI_Read(STATUS);/读取状态寄存其来判断数据接收状况 if(RX_DR)/判断是否接收到数据 CE=0;/SPI 使能 SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);/read receive payload from RX_FIFO buffer revale=1;/读取数据完成标志 SPI_RW_Reg(WRITE_REG+STATUS,sta);/接收到数据后 RX_DR,TX_DS,MAX_PT都置高为 1,通过写 1 来清楚中断标志 return revale;/*/*函数:void nRF24L01_TxPacket(unsigned char*tx_buf)/*功能:发送 tx_buf 中数据/*/void nRF24L01_TxPacket(unsigned char*tx_buf)CE=0;/StandBy I 模式 SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);/装载接收端地址 SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);/装 载 数据 /SPI_RW_Reg(WRITE_REG+CONFIG,0 x0e);/IRQ 收发完成中断响应,16位 CRC,主发送 CE=1;/置高 CE,激发数据发送 inerDelay_us(10);/*主函数*void main(void)uchar temp=0;init_NRF24L01();led0=0;led1=0;led2=0;led3=0;P0=0 x00;nRF24L01_TxPacket(TxBuf);/Transmit Tx buffer data Delay(6000);P0=0 xBF;while(1)if(temp4)switch(temp)case 1:P0=0 xBF;break;case 2:P0=0 xf7;break;case 3:P0=0 xFE;break;default:break;if(temp=3)temp=0;nRF24L01_TxPacket(TxBuf);/Transmit Tx buffer data Delay(20000);SPI_RW_Reg(WRITE_REG+STATUS,0XFF);temp+;

    注意事项

    本文(nrf24l01发送程序 .pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开