您的位置 首页 应用

nRF2401无线通信模块调试 2

最近有人过来问2401的调试问题,在这里把调试过程中应该注意的问题简要说明如下:1nRF2401是33V供电的,电压过低或过高都会对通信造成影

最近有人过来问2401的调试问题,在这里把调试过程中应该留意的问题扼要阐明如下:

1.nRF2401是3.3V供电的,电压过低或过高都会对通讯形成影响,要么不能彻底通讯要么时断时续地通讯,至于怎样稳压到3.3V,能够选用稳压二级管,能够运用LM317,这几种办法都试用过,都可行。
2.一般的微处理器的I/O口电压为5V,而2401的I/O口电压为3.3V,若直接相连,简单烧坏2401,能够选用串连2K电阻的办法,也能够运用3.3V和5V电平转化芯片如74LVX3245。

3.至于程序部分,一两句话也说不清楚,请仔细阅读nRF2401的运用阐明书。下面发布一段2401程序仅供参考,此程序屡次修正,久经考验,应该没有问题。

2401.h下面的代码//阐明:nRF2401 CE脚操控收发使能,CS操控片选,均为高电平有用//===============引脚界说=======================#define nRF2401_CE_PORT       PORTD.1//#define nRF2401_CE_DDR        DDRD.1//#define nRF2401_PWR_PORT    PORTD.0//#define nRF2401_PWR_DDR     DDRD.0//#define nRF2401_CS_PORT       PORTD.3//#define nRF2401_CS_DDR      DDRD.3//  #define nRF2401_CLK1_PORT   PORTD.5//#define nRF2401_CLK1_DDR  DDRD.5// #define nRF2401_DATA1_PORT   PORTD.4#define nRF2401_DATA1_DDR  DDRD.4 #define nRF2401_DATA1_PIN  PIND.4#define nRF2401_DR1_PORT     PORTD.2//#define nRF2401_DR1_DDR    DDRD.2//#define nRF2401_DR1_PIN    PIND.2//unsigned char Address[4]={0x00,0x00,0x00,0x99};                                   //===================装备字界说================================unsigned char nRF2401_InitData[15]={    //设装备字                          //test8,8,                        //通道2与通道1数据宽度设置为8位0,0,0,0,57,                 //通道2接纳地址0x00,0x00,0x00,0x00,0x99,  //通道1接纳地址0x83,                      //通道1和通道2地址宽度为32位,开CRC,16位,CRC 校验0x6F, //4F                 //双频道功用禁用,ShockBurst mode,传输速率1M,晶振频率16M0x02                       //Channel = 2400MHz + RF_CH * 1.0MHz ,发送形式};                         //0:Tx 1:Rx                                                                   //===========================================================//===================发送单字节数据==============================void nRF2401_SendByte(unsigned char Data){unsigned char i;nRF2401_DATA1_DDR = 1;for(i=0;i<8;i++){if((Data&0x80)!=0)nRF2401_DATA1_PORT=1;else  nRF2401_DATA1_PORT=0;delay_us(1);  //最小500ns   nRF2401_CLK1_PORT=1;delay_us(1);//最小500nsData<<=1;nRF2401_CLK1_PORT=0;delay_us(1);} }//===========================================================//==================从nRF2401A数据缓冲区读取数据==================void nRF2401_GetData(unsigned char *DataBuffer){unsigned char i=0,temp=0;nRF2401_DATA1_DDR =  0;//数据输入while(nRF2401_DR1_PIN){for(i=0;i<8;i++){temp<<=1;  nRF2401_CLK1_PORT=1;delay_us(1);temp|=nRF2401_DATA1_PIN;nRF2401_CLK1_PORT=0;delay_us(1); }}*DataBuffer=temp;}                                  //=====================nRF2401A发送/接纳方法设置=================//Mode=0:发送方法   Mode=1:接纳方法void nRF2401_SetMode(unsigned char Mode){ nRF2401_PWR_PORT=1;nRF2401_CE_PORT=0;nRF2401_CS_PORT=1;//设置形式nRF2401_DATA1_DDR = 1;delay_us(10);  //最小5us进入装备形式nRF2401_DATA1_PORT=Mode;                                    nRF2401_CLK1_PORT=1;delay_us(1);nRF2401_CLK1_PORT=0;delay_us(1);       //写入最低装备位nRF2401_PWR_PORT=1;nRF2401_CS_PORT=0;nRF2401_CE_PORT=1;         //进入收发形式、delay_us(300);}//===========================================================//====================数据发送=================================void nRF2401_SendData(unsigned char *Address,unsigned char DataBuffer){unsigned char i=4; nRF2401_PWR_PORT=1;nRF2401_CS_PORT=0;nRF2401_CE_PORT=1;  //进入收发形式    delay_us(10);while(i--)nRF2401_SendByte(*Address++);                //发送地址字节 nRF2401_SendByte(DataBuffer);            //发送数据字节nRF2401_CE_PORT=0;                                                                          //发射数据delay_us(300);    //等候完毕}				   

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/255228.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部