OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4494|回复: 7

急急急。。。求51+24L01的程序。。。。

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-5-7
在线时间
0 小时
发表于 2013-5-7 15:11:34 | 显示全部楼层 |阅读模式
我想用两个无线模块24L01实现在两块单片机之间通信。。。。急求程序。。。。。。。。。。。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-5-7
在线时间
0 小时
 楼主| 发表于 2013-5-7 15:12:21 | 显示全部楼层
回复【楼主位】pPyingying:
<br>---------------------------------
<br>51单片机。。。。一个收,一个发。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-5-7
在线时间
0 小时
 楼主| 发表于 2013-5-7 15:16:08 | 显示全部楼层
我用厂家给我的程序测试我的无线模块,为什么没反应,硬件焊接没有问题。。。程序如下
<br>#include&nbsp;&lt;reg52.h&gt;
<br>#include&nbsp;&lt;intrins.h&gt;
<br>
<br>typedef&nbsp;unsigned&nbsp;char&nbsp;uchar;
<br>typedef&nbsp;unsigned&nbsp;char&nbsp;uint;
<br>//****************************************IO端口定义***************************************
<br>//****************************************NRF24L01端口定义***************************************
<br>sbit&nbsp;        MISO        =P1^5;
<br>sbit&nbsp;        MOSI        =P1^1;
<br>sbit        SCK        &nbsp;&nbsp;&nbsp;&nbsp;=P1^6;
<br>sbit        CE        &nbsp;&nbsp;&nbsp;&nbsp;=P1^7;
<br>sbit        CSN                =P1^2;
<br>sbit        IRQ                =P1^0;
<br>//************************************按键***************************************************
<br>sbit        KEY1=P3^4;
<br>//************************************蜂明器***************************************************
<br>sbit&nbsp;        LED=P3^5;
<br>//*********************************************NRF24L01*************************************
<br>#define&nbsp;TX_ADR_WIDTH&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;        //&nbsp;5&nbsp;uints&nbsp;TX&nbsp;address&nbsp;width
<br>#define&nbsp;RX_ADR_WIDTH&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;        //&nbsp;5&nbsp;uints&nbsp;RX&nbsp;address&nbsp;width
<br>#define&nbsp;TX_PLOAD_WIDTH&nbsp;&nbsp;20&nbsp;&nbsp;        //&nbsp;20&nbsp;uints&nbsp;TX&nbsp;payload
<br>#define&nbsp;RX_PLOAD_WIDTH&nbsp;&nbsp;20&nbsp;&nbsp;        //&nbsp;20&nbsp;uints&nbsp;TX&nbsp;payload
<br>uint&nbsp;const&nbsp;TX_ADDRESS[TX_ADR_WIDTH]=&nbsp;{0x34,0x43,0x10,0x10,0x01};        //本地地址
<br>uint&nbsp;const&nbsp;RX_ADDRESS[RX_ADR_WIDTH]=&nbsp;{0x34,0x43,0x10,0x10,0x01};        //接收地址
<br>//***************************************NRF24L01寄存器指令*******************************************************
<br>#define&nbsp;READ_REG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00&nbsp;&nbsp;        //&nbsp;读寄存器指令
<br>#define&nbsp;WRITE_REG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x20&nbsp;        //&nbsp;写寄存器指令
<br>#define&nbsp;RD_RX_PLOAD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x61&nbsp;&nbsp;        //&nbsp;读取接收数据指令
<br>#define&nbsp;WR_TX_PLOAD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xA0&nbsp;&nbsp;        //&nbsp;写待发数据指令
<br>#define&nbsp;FLUSH_TX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xE1&nbsp;        //&nbsp;冲洗发送&nbsp;FIFO指令
<br>#define&nbsp;FLUSH_RX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xE2&nbsp;&nbsp;        //&nbsp;冲洗接收&nbsp;FIFO指令
<br>#define&nbsp;REUSE_TX_PL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xE3&nbsp;&nbsp;        //&nbsp;定义重复装载数据指令
<br>#define&nbsp;NOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xFF&nbsp;&nbsp;        //&nbsp;保留
<br>//*************************************SPI(nRF24L01)寄存器地址****************************************************
<br>#define&nbsp;CONFIG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00&nbsp;&nbsp;//&nbsp;配置收发状态,CRC校验模式以及收发状态响应方式
<br>#define&nbsp;EN_AA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x01&nbsp;&nbsp;//&nbsp;自动应答功能设置
<br>#define&nbsp;EN_RXADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x02&nbsp;&nbsp;//&nbsp;可用信道设置
<br>#define&nbsp;SETUP_AW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x03&nbsp;&nbsp;//&nbsp;收发地址宽度设置
<br>#define&nbsp;SETUP_RETR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x04&nbsp;&nbsp;//&nbsp;自动重发功能设置
<br>#define&nbsp;RF_CH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x05&nbsp;&nbsp;//&nbsp;工作频率设置
<br>#define&nbsp;RF_SETUP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x06&nbsp;&nbsp;//&nbsp;发射速率、功耗功能设置
<br>#define&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x07&nbsp;&nbsp;//&nbsp;状态寄存器
<br>#define&nbsp;OBSERVE_TX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x08&nbsp;&nbsp;//&nbsp;发送监测功能
<br>#define&nbsp;CD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x09&nbsp;&nbsp;//&nbsp;地址检测&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>#define&nbsp;RX_ADDR_P0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0A&nbsp;&nbsp;//&nbsp;频道0接收数据地址
<br>#define&nbsp;RX_ADDR_P1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0B&nbsp;&nbsp;//&nbsp;频道1接收数据地址
<br>#define&nbsp;RX_ADDR_P2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0C&nbsp;&nbsp;//&nbsp;频道2接收数据地址
<br>#define&nbsp;RX_ADDR_P3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0D&nbsp;&nbsp;//&nbsp;频道3接收数据地址
<br>#define&nbsp;RX_ADDR_P4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0E&nbsp;&nbsp;//&nbsp;频道4接收数据地址
<br>#define&nbsp;RX_ADDR_P5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0F&nbsp;&nbsp;//&nbsp;频道5接收数据地址
<br>#define&nbsp;TX_ADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x10&nbsp;&nbsp;//&nbsp;发送地址寄存器
<br>#define&nbsp;RX_PW_P0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x11&nbsp;&nbsp;//&nbsp;接收频道0接收数据长度
<br>#define&nbsp;RX_PW_P1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x12&nbsp;&nbsp;//&nbsp;接收频道0接收数据长度
<br>#define&nbsp;RX_PW_P2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x13&nbsp;&nbsp;//&nbsp;接收频道0接收数据长度
<br>#define&nbsp;RX_PW_P3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x14&nbsp;&nbsp;//&nbsp;接收频道0接收数据长度
<br>#define&nbsp;RX_PW_P4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x15&nbsp;&nbsp;//&nbsp;接收频道0接收数据长度
<br>#define&nbsp;RX_PW_P5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x16&nbsp;&nbsp;//&nbsp;接收频道0接收数据长度
<br>#define&nbsp;FIFO_STATUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x17&nbsp;&nbsp;//&nbsp;FIFO栈入栈出状态寄存器设置
<br>//**************************************************************************************
<br>void&nbsp;Delay(unsigned&nbsp;int&nbsp;s);
<br>void&nbsp;inerDelay_us(unsigned&nbsp;char&nbsp;n);
<br>void&nbsp;init_NRF24L01(void);
<br>uint&nbsp;SPI_RW(uint&nbsp;uchar);
<br>uchar&nbsp;SPI_Read(uchar&nbsp;reg);
<br>void&nbsp;SetRX_Mode(void);
<br>uint&nbsp;SPI_RW_Reg(uchar&nbsp;reg,&nbsp;uchar&nbsp;value);
<br>uint&nbsp;SPI_Read_Buf(uchar&nbsp;reg,&nbsp;uchar&nbsp;*pBuf,&nbsp;uchar&nbsp;uchars);
<br>uint&nbsp;SPI_Write_Buf(uchar&nbsp;reg,&nbsp;uchar&nbsp;*pBuf,&nbsp;uchar&nbsp;uchars);
<br>unsigned&nbsp;char&nbsp;nRF24L01_RxPacket(unsigned&nbsp;char*&nbsp;rx_buf);
<br>void&nbsp;nRF24L01_TxPacket(unsigned&nbsp;char&nbsp;*&nbsp;tx_buf);
<br>//*****************************************长延时*****************************************
<br>void&nbsp;Delay(unsigned&nbsp;int&nbsp;s)
<br>{
<br>        unsigned&nbsp;int&nbsp;i;
<br>        for(i=0;&nbsp;i&lt;s;&nbsp;i++);
<br>        for(i=0;&nbsp;i&gt;&lt;s;&nbsp;i++);
<br>}
<br>//******************************************************************************************
<br>uint&nbsp;        bdata&nbsp;sta;&nbsp;&nbsp;&nbsp;//状态标志
<br>sbit        RX_DR        =sta^6;
<br>sbit        TX_DS        =sta^5;
<br>sbit        MAX_RT        =sta^4;
<br>/******************************************************************************************
<br>/*延时函数
<br>/******************************************************************************************/
<br>void&nbsp;inerDelay_us(unsigned&nbsp;char&nbsp;n)
<br>{
<br>        for(;n&gt;0;n--)
<br>                _nop_();
<br>}
<br>//****************************************************************************************
<br>/*NRF24L01初始化
<br>//***************************************************************************************/
<br>void&nbsp;init_NRF24L01(void)
<br>{
<br>&nbsp;&nbsp;&nbsp;&nbsp;inerDelay_us(100);
<br>&nbsp;        CE=0;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;chip&nbsp;enable
<br>&nbsp;        CSN=1;&nbsp;&nbsp;&nbsp;//&nbsp;Spi&nbsp;disable&nbsp;
<br>&nbsp;        SCK=0;&nbsp;&nbsp;&nbsp;//&nbsp;Spi&nbsp;clock&nbsp;line&nbsp;init&nbsp;high
<br>        SPI_Write_Buf(WRITE_REG&nbsp;+&nbsp;TX_ADDR,&nbsp;TX_ADDRESS,&nbsp;TX_ADR_WIDTH);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;写本地地址       
<br>        SPI_Write_Buf(WRITE_REG&nbsp;+&nbsp;RX_ADDR_P0,&nbsp;RX_ADDRESS,&nbsp;RX_ADR_WIDTH);&nbsp;//&nbsp;写接收端地址
<br>        SPI_RW_Reg(WRITE_REG&nbsp;+&nbsp;EN_AA,&nbsp;0x01);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;频道0自动        ACK应答允许       
<br>        SPI_RW_Reg(WRITE_REG&nbsp;+&nbsp;EN_RXADDR,&nbsp;0x01);&nbsp;&nbsp;//&nbsp;&nbsp;允许接收地址只有频道0,如果需要多频道可以参考Page21&nbsp;&nbsp;
<br>        SPI_RW_Reg(WRITE_REG&nbsp;+&nbsp;RF_CH,&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;设置信道工作为2.4GHZ,收发必须一致
<br>        SPI_RW_Reg(WRITE_REG&nbsp;+&nbsp;RX_PW_P0,&nbsp;RX_PLOAD_WIDTH);&nbsp;//设置接收数据长度,本次设置为20字节
<br>        SPI_RW_Reg(WRITE_REG&nbsp;+&nbsp;RF_SETUP,&nbsp;0x07);&nbsp;&nbsp;&nbsp;                //设置发射速率为1MHZ,发射功率为最大值0dB
<br>}
<br>/****************************************************************************************************
<br>/*函数:uint&nbsp;SPI_RW(uint&nbsp;uchar)
<br>/*功能:NRF24L01的SPI写时序
<br>/****************************************************************************************************/
<br>uint&nbsp;SPI_RW(uint&nbsp;uchar)
<br>{
<br>        uint&nbsp;bit_ctr;
<br>&nbsp;&nbsp;&nbsp;        for(bit_ctr=0;bit_ctr&lt;8;bit_ctr++)&nbsp;//&nbsp;output&nbsp;8-bit
<br>&nbsp;&nbsp;&nbsp;        {
<br>                MOSI&nbsp;=&nbsp;(uchar&nbsp;&&nbsp;0x80);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;output&nbsp;'uchar',&nbsp;MSB&nbsp;to&nbsp;MOSI
<br>                uchar&nbsp;=&nbsp;(uchar&nbsp;&lt;&lt;&nbsp;1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;shift&nbsp;next&nbsp;bit&nbsp;into&nbsp;MSB..
<br>                SCK&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Set&nbsp;SCK&nbsp;high..
<br>                uchar&nbsp;|=&nbsp;MISO;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                &nbsp;&nbsp;//&nbsp;capture&nbsp;current&nbsp;MISO&nbsp;bit
<br>                SCK&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                &nbsp;&nbsp;//&nbsp;..then&nbsp;set&nbsp;SCK&nbsp;low&nbsp;again
<br>&nbsp;&nbsp;&nbsp;        }
<br>&nbsp;&nbsp;&nbsp;&nbsp;return(uchar);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                &nbsp;&nbsp;//&nbsp;return&nbsp;read&nbsp;uchar
<br>}
<br>/****************************************************************************************************
<br>/*函数:uchar&nbsp;SPI_Read(uchar&nbsp;reg)
<br>/*功能:NRF24L01的SPI时序
<br>/****************************************************************************************************/
<br>uchar&nbsp;SPI_Read(uchar&nbsp;reg)
<br>{
<br>        uchar&nbsp;reg_val;
<br>       
<br>        CSN&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CSN&nbsp;low,&nbsp;initialize&nbsp;SPI&nbsp;communication...
<br>        SPI_RW(reg);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Select&nbsp;register&nbsp;to&nbsp;read&nbsp;from..
<br>        reg_val&nbsp;=&nbsp;SPI_RW(0);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;..then&nbsp;read&nbsp;registervalue
<br>        CSN&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CSN&nbsp;high,&nbsp;terminate&nbsp;SPI&nbsp;communication
<br>       
<br>        return(reg_val);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;register&nbsp;value
<br>}
<br>/****************************************************************************************************/
<br>/*功能:NRF24L01读写寄存器函数
<br>/****************************************************************************************************/
<br>uint&nbsp;SPI_RW_Reg(uchar&nbsp;reg,&nbsp;uchar&nbsp;value)
<br>{
<br>        uint&nbsp;status;
<br>       
<br>        CSN&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CSN&nbsp;low,&nbsp;init&nbsp;SPI&nbsp;transaction
<br>        status&nbsp;=&nbsp;SPI_RW(reg);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;select&nbsp;register
<br>        SPI_RW(value);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;..and&nbsp;write&nbsp;value&nbsp;to&nbsp;it..
<br>        CSN&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CSN&nbsp;high&nbsp;again
<br>       
<br>        return(status);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;nRF24L01&nbsp;status&nbsp;uchar
<br>}
<br>/****************************************************************************************************/
<br>/*函数:uint&nbsp;SPI_Read_Buf(uchar&nbsp;reg,&nbsp;uchar&nbsp;*pBuf,&nbsp;uchar&nbsp;uchars)
<br>/*功能:&nbsp;用于读数据,reg:为寄存器地址,pBuf:为待读出数据地址,uchars:读出数据的个数
<br>/****************************************************************************************************/
<br>uint&nbsp;SPI_Read_Buf(uchar&nbsp;reg,&nbsp;uchar&nbsp;*pBuf,&nbsp;uchar&nbsp;uchars)
<br>{
<br>        uint&nbsp;status,uchar_ctr;
<br>       
<br>        CSN&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                //&nbsp;Set&nbsp;CSN&nbsp;low,&nbsp;init&nbsp;SPI&nbsp;tranaction
<br>        status&nbsp;=&nbsp;SPI_RW(reg);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                //&nbsp;Select&nbsp;register&nbsp;to&nbsp;write&nbsp;to&nbsp;and&nbsp;read&nbsp;status&nbsp;uchar
<br>       
<br>        for(uchar_ctr=0;uchar_ctr&lt;uchars;uchar_ctr++)
<br>                pBuf[uchar_ctr]&nbsp;=&nbsp;SPI_RW(0);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;
<br>       
<br>        CSN&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>       
<br>        return(status);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;nRF24L01&nbsp;status&nbsp;uchar
<br>}
<br>/*********************************************************************************************************
<br>/*函数:uint&nbsp;SPI_Write_Buf(uchar&nbsp;reg,&nbsp;uchar&nbsp;*pBuf,&nbsp;uchar&nbsp;uchars)
<br>/*功能:&nbsp;用于写数据:为寄存器地址,pBuf:为待写入数据地址,uchars:写入数据的个数
<br>/*********************************************************************************************************/
<br>uint&nbsp;SPI_Write_Buf(uchar&nbsp;reg,&nbsp;uchar&nbsp;*pBuf,&nbsp;uchar&nbsp;uchars)
<br>{
<br>        uint&nbsp;status,uchar_ctr;
<br>       
<br>        CSN&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SPI使能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>        status&nbsp;=&nbsp;SPI_RW(reg);&nbsp;&nbsp;&nbsp;
<br>        for(uchar_ctr=0;&nbsp;uchar_ctr&gt;&lt;uchars;&nbsp;uchar_ctr++)&nbsp;//
<br>                SPI_RW(*pBuf++);
<br>        CSN&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关闭SPI
<br>        return(status);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;
<br>}
<br>/****************************************************************************************************/
<br>/*函数:void&nbsp;SetRX_Mode(void)
<br>/*功能:数据接收配置&nbsp;
<br>/****************************************************************************************************/
<br>void&nbsp;SetRX_Mode(void)
<br>{
<br>        CE=0;
<br>        SPI_RW_Reg(WRITE_REG&nbsp;+&nbsp;CONFIG,&nbsp;0x0f);&nbsp;&nbsp;&nbsp;                //&nbsp;IRQ收发完成中断响应,16位CRC        ,主接收
<br>        CE&nbsp;=&nbsp;1;&nbsp;
<br>        inerDelay_us(130);
<br>}
<br>/******************************************************************************************************/
<br>/*函数:unsigned&nbsp;char&nbsp;nRF24L01_RxPacket(unsigned&nbsp;char*&nbsp;rx_buf)
<br>/*功能:数据读取后放如rx_buf接收缓冲区中
<br>/******************************************************************************************************/
<br>unsigned&nbsp;char&nbsp;nRF24L01_RxPacket(unsigned&nbsp;char*&nbsp;rx_buf)
<br>{
<br>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;revale=0;
<br>        sta=SPI_Read(STATUS);        //&nbsp;读取状态寄存其来判断数据接收状况
<br>        if(RX_DR)                                //&nbsp;判断是否接收到数据
<br>        {
<br>        &nbsp;&nbsp;&nbsp;&nbsp;CE&nbsp;=&nbsp;0;&nbsp;                        //SPI使能
<br>                SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);//&nbsp;read&nbsp;receive&nbsp;payload&nbsp;from&nbsp;RX_FIFO&nbsp;buffer
<br>                revale&nbsp;=1;                        //读取数据完成标志
<br>        }
<br>        SPI_RW_Reg(WRITE_REG+STATUS,sta);&nbsp;&nbsp;&nbsp;//接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志
<br>        return&nbsp;revale;
<br>}
<br>/***********************************************************************************************************
<br>/*函数:void&nbsp;nRF24L01_TxPacket(unsigned&nbsp;char&nbsp;*&nbsp;tx_buf)
<br>/*功能:发送&nbsp;tx_buf中数据
<br>/**********************************************************************************************************/
<br>void&nbsp;nRF24L01_TxPacket(unsigned&nbsp;char&nbsp;*&nbsp;tx_buf)
<br>{
<br>        CE=0;                        //StandBy&nbsp;I模式       
<br>        SPI_Write_Buf(WRITE_REG&nbsp;+&nbsp;RX_ADDR_P0,&nbsp;TX_ADDRESS,&nbsp;TX_ADR_WIDTH);&nbsp;//&nbsp;装载接收端地址
<br>        SPI_Write_Buf(WR_TX_PLOAD,&nbsp;tx_buf,&nbsp;TX_PLOAD_WIDTH);&nbsp;                        &nbsp;//&nbsp;装载数据       
<br>        SPI_RW_Reg(WRITE_REG&nbsp;+&nbsp;CONFIG,&nbsp;0x0e);&nbsp;&nbsp;&nbsp;                &nbsp;//&nbsp;IRQ收发完成中断响应,16位CRC,主发送
<br>        CE=1;                &nbsp;//置高CE,激发数据发送
<br>        inerDelay_us(10);
<br>}
<br>//************************************主函数************************************************************
<br>void&nbsp;main(void)
<br>{
<br>        unsigned&nbsp;char&nbsp;tf&nbsp;=0;
<br>        unsigned&nbsp;char&nbsp;TxBuf[20]={0};        &nbsp;//&nbsp;
<br>        unsigned&nbsp;char&nbsp;RxBuf[20]={0};       
<br>&nbsp;&nbsp;&nbsp;&nbsp;init_NRF24L01()&nbsp;;
<br>        TxBuf[1]&nbsp;=&nbsp;1&nbsp;;
<br>        TxBuf[2]&nbsp;=&nbsp;1&nbsp;;
<br>        nRF24L01_TxPacket(TxBuf);        //&nbsp;Transmit&nbsp;Tx&nbsp;buffer&nbsp;data
<br>        Delay(6000);
<br>        while(1)
<br>        {
<br>&nbsp;&nbsp;&nbsp;&nbsp;        if(KEY1&nbsp;==0&nbsp;)&nbsp;
<br>        &nbsp;&nbsp;        {
<br>                &nbsp;&nbsp;&nbsp;&nbsp;TxBuf[1]&nbsp;=&nbsp;1&nbsp;;
<br>                &nbsp;&nbsp;&nbsp;&nbsp;tf&nbsp;=&nbsp;1&nbsp;;&nbsp;LED=0;
<br>        &nbsp;&nbsp;&nbsp;&nbsp;}
<br>        &nbsp;&nbsp;&nbsp;if&nbsp;(tf==1)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{       
<br>                        nRF24L01_TxPacket(TxBuf);        //&nbsp;Transmit&nbsp;Tx&nbsp;buffer&nbsp;data
<br>                        TxBuf[1]&nbsp;=&nbsp;0x00;
<br>                        TxBuf[2]&nbsp;=&nbsp;0x00;
<br>                        tf=0;
<br>                        Delay(1000);LED=1;
<br>        &nbsp;&nbsp;&nbsp;}
<br>//***********************************************************************************************
<br>                SetRX_Mode();
<br>                nRF24L01_RxPacket(RxBuf);                                       
<br>                        if(        RxBuf[1]==1)
<br>                        {        &nbsp;       
<br>                                LED=0;
<br>                        }
<br>                        Delay(1000);LED=1;
<br>                        RxBuf[1]&nbsp;=&nbsp;0x00;
<br>                        RxBuf[2]&nbsp;=&nbsp;0x00;
<br>        }
<br>       
<br>}&gt;
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-5-7
在线时间
0 小时
 楼主| 发表于 2013-5-7 15:18:09 | 显示全部楼层
厂家给的使用说明
<br>系统平时处于循环接收检测状态,当有按键动作后发送数据&nbsp;,对方收到数据后LED闪烁,
<br>任何一方可以发数据也可以收数据。
<br>
<br>1.        当检测到按键动作后发送数据,自身LED闪烁
<br>2.        当收到数据后LED闪烁
<br>
<br>
<br>
<br>我的接收板子一侧,LED没有闪烁。。。。。。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-5-7 18:06:34 | 显示全部楼层
问问厂家吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2012-9-14
在线时间
2 小时
发表于 2013-5-11 23:03:13 | 显示全部楼层
这个好用哦。我也在搞L01.
我只是个过客。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-6-4
在线时间
0 小时
发表于 2013-6-4 22:25:26 | 显示全部楼层
回复【3楼】pPyingying:
<br>---------------------------------
<br>呵呵&nbsp;你测试了吗&nbsp;&nbsp;是不是有警告啊&nbsp;&nbsp;我着两天也弄的和你原来一样。那个厂家坑爹啊,你现在弄出来没?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-6-4
在线时间
0 小时
发表于 2013-6-4 22:25:58 | 显示全部楼层
回复【6楼】ruoyuzhiji:
<br>---------------------------------
<br>高手能不能教教我啊&nbsp;,这个东西都快给我弄疯了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 19:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表