ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:457.98KB ,
资源ID:5403569      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5403569.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(xs128和2401.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

xs128和2401.docx

1、xs128和2401CE:使能发射或接收;CSN,SCK,MOSI,MISO:SPI引脚端,微处理器可通过此引脚配置nRF24L01:IRQ:中断;VDD:电源输入端;VSS:电源地:XC2,XC1:晶体振荡器引脚;VDD_PA:为功率放大器供电,输出为1.8 V;ANT1,ANT2:天线接口;IREF:参考电流输入使用IO口模拟SPI,以龙丘科技的无线模块为例,使用M口模拟SPI可如下定义#define NRFIRQ PTM_PTM0#define NRFCE PTM_PTM1#define NRFMISO PTM_PTM2#define NRFCSN PTM_PTM3#define NRF

2、MOSI PTM_PTM4#define NRFSCK PTM_PTM5SPI读模式由图可知,发送时高位在前,低位在后,每写一个bit,返回一个状态字位,每次写操作都可读回一个完整的状态字。以下是读回的状态字Status(地址:0x07)保留RX_DRTX_DSMAX_RTRX_P_NOTX_FULLRX_DR: 接收数据准备好,接收缓冲区有新的数据到达时被置为1,向该位写1可清除该位TX_DS: 缓冲区数据被发送完后被置为1,如果自动应答启用的话,只有在对方应答到达后才会置1,向该位写1可清除该位MAX_RT: 若没有收到对方确认,24L01会自动超时重传,当到达最大重传次数后,该位被置1,

3、向该位写1可清除该位。若不清除该位则无法进一步通信。RX_P_NO: 3bit,表示正在读取缓冲区数据载荷的数据管道编号。000101:数据管道编号。110:没有使用111:接收缓冲区空Ps:接收到新数据,数据发送完毕,重传到达最大次数都会引起中断,通过读取状态字可查询中断事件。中断由IRQ引脚低电平触发。SPI写模式/*SPI读写函数写入一个字节并返回一个字节ch:需要写入的字节*/unsigned char SPI_Byte_RW(unsigned char ch) unsigned char i; for(i=1;i=8;i+) if(ch&0x80)/如果ch最高位为1 NRFMOSI

4、=1; else NRFMOSI=0; NRFSCK=1;/时钟置高 ch=1;/左移一位 _asm(nop); _asm(nop); NRFSCK=0;/时钟置低 ch|=NRFMISO; return(ch);解释:1、 该函数作用为一次SPI数据交换,将ch中一个字节数据按照高位在前低位在后的顺序串行发送,每发送一个bit都读回一个bit,8个比特发送完毕,同时也和24L01完成一次数据交换。2、 该函数是spi通信的基本函数3、 注意spi通信中,可以一次读取或写入多个字节,顺序为低字节在前,高字节在后,每个字节是高位在前,低位在后。4、 参考SPI时序图,可见,上升沿写入1个bit,

5、下降沿读入一个bit。5、 该SPI通信函数只涉及一个字节的读写,没有涉及CS信号线。SPI_Byte_RW()函数应用举例,一次写入多个字节/*函数:byte SPI_Write_Buf(byte reg, byte *pBuf, byte len)功能: 用于写数据:为寄存器地址,pBuf:为待写入数据地址,len:写入数据的个数*/byte SPI_Write_Buf(byte reg, byte *pBuf, byte len) byte status,cnt; NRFCSN = 0; /SPI使能 status = SPI_Byte_RW(reg); /第一个字节返回状态字 for(

6、cnt=0; cntlen; cnt+) / SPI_Byte_RW(*pBuf+); NRFCSN = 1; /关闭SPI return(status); / PS:该函数完成多个字节的写入,返回状态字本函数举例:例:我们要设置本机地址,24L01的地址为5个字节,假设地址放在一个5字节的数组中byte const TX_ADDRESSTX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01; /本地地址写寄存器的指令字为001A AAAA, AAAAA用于表示写入的寄存器地址,各个寄存器地址可查阅数据手册TX_ADDR寄存器在24L01中的地址为00010000,那么完

7、整的指令字应该为00110000,可用如下定义和调用方法/*NRF24L01指令字*#define READ_REG 0x00 / 读寄存器指令#define WRITE_REG 0x20 / 写寄存器指令#define RD_RX_PLOAD 0x61 / 读取接收数据指令#define WR_TX_PLOAD 0xA0 / 写待发数据指令#define FLUSH_TX 0xE1 / 冲洗发送 FIFO指令#define FLUSH_RX 0xE2 / 冲洗接收 FIFO指令#define REUSE_TX_PL 0xE3 / 定义重复装载数据指令#define NOP 0xFF / 保留

8、/*SPI(nRF24L01)寄存器地址*#define CONFIG 0x00 / 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x01 / 自动应答功能设置#define EN_RXADDR 0x02 / 可用信道设置#define SETUP_AW 0x03 / 收发地址宽度设置#define SETUP_RETR 0x04 / 自动重发功能设置#define RF_CH 0x05 / 工作频率设置#define RF_SETUP 0x06 / 发射速率、功耗功能设置#define STATUS 0x07 / 状态寄存器#define OBSERVE_TX

9、 0x08 / 发送监测功能#define CD 0x09 / 地址检测 #define RX_ADDR_P0 0x0A / 频道0接收数据地址#define RX_ADDR_P1 0x0B / 频道1接收数据地址#define RX_ADDR_P2 0x0C / 频道2接收数据地址#define RX_ADDR_P3 0x0D / 频道3接收数据地址#define RX_ADDR_P4 0x0E / 频道4接收数据地址#define RX_ADDR_P5 0x0F / 频道5接收数据地址#define TX_ADDR 0x10 / 发送地址寄存器#define RX_PW_P0 0x11 /

10、 接收频道0接收数据长度#define RX_PW_P1 0x12 / 接收频道0接收数据长度#define RX_PW_P2 0x13 / 接收频道0接收数据长度#define RX_PW_P3 0x14 / 接收频道0接收数据长度#define RX_PW_P4 0x15 / 接收频道0接收数据长度#define RX_PW_P5 0x16 / 接收频道0接收数据长度#define FIFO_STATUS 0x17 / FIFO栈入栈出状态寄存器设置可用以下语句调用SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); /

11、 写本地地址24L01被设置为接收模式后,可通过6个不同的数据通道(data pipe)接收数据。每个数据通道都有一个唯一的地址但是各数据通道的频率是相同的。这意味着可以有6个被配置成发送状态的nRF24L01可以和一个配置成接收状态的nRF24L01通信,并且接收方可以区分。数据通道0有一个唯一的40bit的可设置的地址。其余的通道1到通道5则地址前32位相同,而后8位不同。所有的数据通道都可以实现Enhanced ShockBurst模式。NRF24L01使用数据通道的地址对接收的包进行确认。这意味着24L01在返回ACK的时候使用相同的地址。在发送端,数据通道0被用来接收确认信息,因此通

12、道0的地址必须等于发送地址,这样才能收到确认信息。当一个24L01发送结束后,它会打开接收器并等待确认。如果没有收到确认,则重发,直到收到确认。当重发超过一定次数则发出中断并改变状态寄存器。重发次数的限制在SETUP_RETR_ARC寄存器中设置。无论何时收到确认,都会认为上一个数据包发送成功,这个数据包将被从发送缓冲区清除,并且把TX_DS IRQ置为高。每次开始spi写,读回来的都是状态字。射频收发工作在2.42.4835G收发共用天线接口GFSK调制250k,1M,2M的空中速率发射输出功率最高0dBm,即1mW6路1对6星型网络(使用6个data pipe)增强型ShockBurst包

13、格式前置域1byte地址域3-5byte包控制域9bit载荷0-32字节CRC1-2字节地址域是接收机地址包控制域载荷长度6bitPid2bitNO_ACK1bit载荷长度6bit说明最多32字节Pid用于包编号,用于确定是重发包还是新包NO_ACK用于表示是否自动应答,如为1则表示无需自动应答自动应答的延时和重发次数是可编程的。/*/*函数:void SetRX_Mode(void)/*功能:数据接收配置 /*/void SetRX_Mode(void) NRFCE=0; SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); / IRQ收发完成中断响应,16位CRC ,

14、主接收 NRFCE = 1; Dly_10us(15); /old is 130将00001111写入config寄存器以下是config寄存器说明保留,为0MASK_RX_DRMASK_TX_DSMASK_MAX_RTEN_CRCCRCOPWR_UPPRIM_RXMASK_RX_DR 和MASK_TX_DS和MASK_MAX_RT 主要用于设置status寄存器中的这三位表示的事件发生时 是否通过IRQ引脚来反映,1,不反映在IRQ上,0反映在IRQ上。EN_CRC:1,启用CRC校验,0不启用CRCO:0:1个字节crc,1:两个字节crcPWR_UP:1:powerup 0:powerd

15、ownPRIM_RX:1:PRX 0:PTX24L01的工作模式和寄存器及IO口的关系如下CE引脚的作用增强型Shockburst模式时序图一个ESB(Enhanced ShockBurst)周期,发送一个字节连带收到ACK大约339us从powerdown状态需要先进入standyby状态,该状态转换需要1.5ms延迟,从standyby状态进入rx/tx状态,需要130us置高CE维持最少10us,启动Enhanced ShockBurst发射直接传送模式发送1.CONFIG寄存器:地址00保留,为0MASK_RX_DRMASK_TX_DSMASK_MAX_RTEN_CRCCRCOPWR_

16、UPPRIM_RXMASK_RX_DR 和MASK_TX_DS和MASK_MAX_RT 主要用于设置status寄存器中的这三位表示的事件发生时 是否通过IRQ引脚来反映,1,不反映在IRQ上,0反映在IRQ上。EN_CRC:1,启用CRC校验,0不启用CRCO:0:1个字节crc,1:两个字节crcPWR_UP:1:powerup 0:powerdownPRIM_RX:1:PRX 0:PTX2.EN_AA寄存器:地址01保留,0保留,0ENAA_P5ENAA_P4ENAA_P3ENAA_P2ENAA_P1ENAA_P0是否启用各data pipe的自动应答功能,1启用,0,不启用,复位默认为

17、启用3. EN_RXADDR寄存器:地址02保留,0保留,0ERX _P5ERX _P4ERX _P3ERX _P2ERX _P1ERX _P0是否启用各data pipe, 1启用,0,不启用,复位为00000011,即默认启用datapipe1和datapipe 04. SETUP_AW寄存器:地址03保留,0保留,0保留,0保留,0保留,0保留,0AW1AW0地址宽度,所有data pipe 都一样AW1,AW0=00,非法,01,3字节地址,10,4字节地址,11,5字节地址,默认为11,即5字节地址5. SETUP_RETR寄存器:地址04(设置自动重传参数)ARD(复位为0000)

18、ARC(复位为0011)ARD=0000,重传间隔为250+86us 0001,重传间隔为500+86us. 1111, 重传间隔为4000+86usARC=0000,禁止自动重传 0001,重传1次 . 1111,重传15次6. RF_CH寄存器:地址0x05,设置频道保留,0RF_CH7个bit用于设置通信频道,共126个频道,复位为00000010,频道27. RF_SETUP寄存器:地址0x06保留,0保留,0保留,0PLL_LOCKRF_DRRF_PWRLNA_HCURRPLL_LOCK:RF_DR:速率,0:1M 1:2MRF_PWR:00 18dbm01 12dbm10 6dbm

19、11 0dbm8. STATUS寄存器:地址0x07保留 0RX_DRTX_DSMAX_RTRX_P_NOTX_FULLRX_DR: 接收数据准备好,接收缓冲区有新的数据到达时被置为1,向该位写1可清除该位TX_DS: 缓冲区数据被发送完后被置为1,如果自动应答启用的话,只有在对方应答到达后才会置1,向该位写1可清除该位MAX_RT: 若没有收到对方确认,24L01会自动超时重传,当到达最大重传次数后,该位被置1,向该位写1可清除该位。若不清除该位则无法进一步通信。RX_P_NO: 3bit,表示正在读取缓冲区数据载荷的数据管道编号。000101:数据管道编号。110:没有使用111:接收缓冲

20、区空Ps:接收到新数据,数据发送完毕,重传到达最大次数都会引起中断,通过读取状态字可查询中断事件。中断由IRQ引脚低电平触发。9. OBSERVE_TX寄存器:地址0x08(发送观察寄存器,用于观察发送状态)PLOS_CNTARC_CNTPLOS_CNT:丢包计数器,最大到15,写RF_CH寄存器可清除计数值ARC_CNT:重发次数计数10. CD寄存器:地址0x09(载波检测寄存器)保留 0保留 0保留 0保留 0保留 0保留 0保留 0CDCD:检测到载波则置1,否则为011. RX_ADDR_P0寄存器:地址0x0A(data pipe 0接收地址)共5个字节,低字节在前,高字节在后默认

21、为0xe7e7e7e7e712. RX_ADDR_P1寄存器:地址0x0B(data pipe 1接收地址)共5个字节,低字节在前,高字节在后默认为0xC2C2C2C2C213. RX_ADDR_P2寄存器:地址0x0C(data pipe 2接收地址)共5个字节,低字节在前,高字节在后0xC2C2C2C2C314. RX_ADDR_P3寄存器:地址0x0D(data pipe 3接收地址)共5个字节,低字节在前,高字节在后0xC2C2C2C2C415. RX_ADDR_P4寄存器:地址0x0E(data pipe 4接收地址)共5个字节,低字节在前,高字节在后0xC2C2C2C2C516.

22、RX_ADDR_P5寄存器:地址0x0F(data pipe 5接收地址)共5个字节,低字节在前,高字节在后0xC2C2C2C2C617. TX_ADDR寄存器:地址0x10(发送地址寄存器,对发送端而言,相当于源地址,也是接收端发回确认的目的地址)共5个字节,默认为0xe7e7e7e7e718. RX_PW_P0寄存器:地址0x11保留 0保留 0RX_PW_P0RX_PW_P0:DATA PIPE0 的接收数据载荷长度 0:非法 1:1个字节 . 32:32个字节19. RX_PW_P1寄存器:地址0x12保留 0保留 0RX_PW_P1RX_PW_P1:DATA PIPE1 的接收数据载

23、荷长度 0:非法 1:1个字节 . 32:32个字节20. RX_PW_P2寄存器:地址0x13保留 0保留 0RX_PW_P2RX_PW_P2:DATA PIPE2 的接收数据载荷长度 0:非法 1:1个字节 . 32:32个字节21. RX_PW_P3寄存器:地址0x14保留 0保留 0RX_PW_P3RX_PW_P3:DATA PIPE3 的接收数据载荷长度 0:非法 1:1个字节 . 32:32个字节22. RX_PW_P4寄存器:地址0x15保留 0保留 0RX_PW_P4RX_PW_P4:DATA PIPE4 的接收数据载荷长度 0:非法 1:1个字节 . 32:32个字节23.

24、RX_PW_P5寄存器:地址0x16保留 0保留 0RX_PW_P5RX_PW_P5:DATA PIPE5 的接收数据载荷长度 0:非法 1:1个字节 . 32:32个字节24. FIFO_STATUS寄存器:地址0x17保留 0TX_REUSETX_FULLTX_EMPTY保留 0保留 0RX_FULLRX_EMPTYTX_REUSE:Enhanced ShockBurst 模式下发送数据流程1. 配置config寄存器,将PRIM_RX置为0,表示发送模式2. 当需要发送数据时,首先需要配置地址TX_ADDR,这个地址应该是接收端地址,即应该是接收端6个data pipe地址中的一个即可保

25、证对方收到。如果要使用自动应答,当对方进行自动应答时也会使用这个地址,应答消息由发送端的datapipe0接收,所以发送的datapipe0的地址应等于TX_ADDR,若需要自动应答则。(若是和上一次发送是相同地址,则可不用重写地址)3. 配置TX_PLD,将需要发送的数据送入nrf24L01,通过SPI连续写入数据载荷时,nrf24L01将自动对字节数计数。(数据载荷必须在cs为低的时候连续写入)4. 将CE置高并维持最少10us,这个脉冲将启动ShockBurst发送5. NRF24L01:a) 打开射频b) 启动晶振c) 数据打包d) 发送6. 如果启动了自动应答(且重传次数未达到最大值

26、),NRF24L01将自动转入接收状态。若在规定时间内收到了应答包,则这是一次成功的发送,TX FIFO中的数据被清除,同时置高status寄存器中的TX_DS位。如果在规定时间内未收到应答包则自动重传(当启用自动重传时,由SETUP_RETR寄存器中的ARC位指定重传次数)。当重传次数到达最大值依然没有收到应答,则status寄存器中的MAX_RT被置高,TX FIFO缓冲区中的数据并不被移除。MAX_RT 或 TX_DS被置高都会在IRQ引脚上引起中断(低电平有效,重写status寄存器中的对应位可清除)。在到达最大重传次数并引发中断后,在没有清除MAX_RT之前,任何数据都不能发送。每次

27、发生MAX_RT 中断,PLOS_CNT计数器都会加1,用于统计丢包数。7. CE置低以后,设备进入STANDBY_I状态。否则TX FIFO缓冲区中的下一个数据载荷将被发送。如果数据缓冲区空,而CE仍然为高,设备将进入STANDBY-II模式。8. 如果设备处于STANDBY-II模式,当CE置低后,设备将进入STANDBY-I模式。(STANDBY模式可减少电流的消耗,在该模式下,SPI通信仍然可以完成)Enhanced ShockBurst 模式下接收数据流程1. 设置config寄存器中的PRIM_RX为1,且置CE为高2. 130us之后,NRF24L01开始监视射频信号3. 当合法的包被接收到(地址匹配),数据被存储到RX-FIFO缓冲区中,status寄存器中的RX_DR被置高,IRQ引脚同时发出中断信号(如果未屏蔽该信号)。Status寄存器中的RX_P_NO指示这个应该接收

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

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