NRF24L01动态字节长度接受和发送

上传人:m**** 文档编号:486400992 上传时间:2023-07-22 格式:DOCX 页数:19 大小:26.40KB
返回 下载 相关 举报
NRF24L01动态字节长度接受和发送_第1页
第1页 / 共19页
NRF24L01动态字节长度接受和发送_第2页
第2页 / 共19页
NRF24L01动态字节长度接受和发送_第3页
第3页 / 共19页
NRF24L01动态字节长度接受和发送_第4页
第4页 / 共19页
NRF24L01动态字节长度接受和发送_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《NRF24L01动态字节长度接受和发送》由会员分享,可在线阅读,更多相关《NRF24L01动态字节长度接受和发送(19页珍藏版)》请在金锄头文库上搜索。

1、在STM战舰开发板上测试,接受采用引脚产生外部中断。发送数据字节长度可以动态变化,接受端也可以读取到发送方实际发送字节长度。战舰开发板为接受端。然后将接受数据通过USART发送至电脑,使用DMA传播方式,波。STM32F103ZT6与R2L01S通信速率为9Hz。24L1.c文献代码iclue24l01#incluelc.h#ncuedela.h#inclue picont uin8tTX_ADSX_ADRWDT=0x34,043,0x10,0x0,0x1; /发送地址cons ut_tX_ADDRESXDR_WIDH=0x,0x43,x10,010,x; /发送地址/初始化4L0的O口voi

2、d RF24L01_Init(void) GIOInitTypeDf GIO_IitStrucr; _InTypeDf P_IntSrutur;NV_ITpeDefNVC_IiStructure;ETI_ITypeDefEXTI_Inittcte;RCC_BPerihCcCmd(RCC_AB2erih_GPIB|RC_APB2Piph_GPIOD|RC_AP2Perp_GPIOG |RCC_AP2eriph_F,AB); /使能PB,D,G端口时钟 PIO_IntStructre.GPIO_Pin = GO_Pn_12;/PB12上拉 避免W25的干扰 PI_Inttructr.PIO_Mde

3、 = GPO_Mode_Out_P; /推挽输出 GPIO_InitStutur.PI_Sped = GPpeed_50MH; GP_Init(GIB, &GPIO_Inittruture);/初始化指定I GPISetBits(PIOB,GPIOn_12);/上拉 GPI_IntSrucur.GPIO_Pn =PIO_Pin_2; /P2推挽输出上拉 严禁SD卡的干扰GPIOIittructur.GPIO_Moe POodeutP; /推挽输出 IOtBits(GP,GPIO_i_);/初始化指定IPOIitStrucure.GPPin =GIOPin_|GPO_n_7;/PG67 推挽 P

4、Ini(GPIOG,&GInStrutue);/初始化指定CC_AB2erhlckCm(RCC_PB2PriphAFIO,NABLE);/使能复用功能时钟GPI_nitStucture.GPO_Pi=GPIOPi_; IO_InitStucturGIOMode = GPOoe_IP;GIOitStuctueGPIO_Sed = GIO_Speed_50Hz;GPI_Init(PIOG, GIO_InitStucure);IO_EXLinonfig(GPIOPorSourceGIG,GIOPiSource8);_nitStuctue.XILine = EXI_Line;EXTI_Initucu.

5、ET_Tger TIrigger_Flling;EIInitStuture.EXTI_M EXTI_ModeInterrut;ETInitStructue.XTI_LineCmd = EABE;XTIi(&EXI_Inittuctue);NI_InitSucture.VICIRQCanel = EXTI9_5_Rn;NVICInitSuctur.NVC_IRQCanelPreempionPrirty = 0;I_InitStruture.NVC_IChannelSubPty= 0;NI_nitSructr.NIChanneCmd EABLE;NVI_Int(&NVC_ntStrutre); N

6、R2L01_CE=0; /使能24L01NL0_CSN=;SPI片选用消 PI2Ini(); /初始化SPI S_Cm(SI2,DISABE); SI外设不使能SIInitStture.SPI_Drectio= SPI_Drio_2Lines_Fullple; /SPI设立为双线双向全双工SI_ItStrucue.SPI_Moe SPI_ModeMaser;/SPI主机 SPI_IntStructurSIDaaSe SPI_Datie8b;/发送接受8位帧构造SPIInitStrutur.SICPOL= SPI_CPOLw;/时钟悬空低I_nitStrtue.SP_CPHA =SP_CPHA_

7、1dg;/数据捕获于第1个时钟沿SI_IitStuctur.PN SP_NSSof;NSS信号由软件控制PI_nitStructe.SPI_BadRaerescalr =SPIBdRateescaler_16;/定义波特率预分频的值:波特率预分频值为SPI_IniStrtue.SPirsBt SI_FirsBit_MS;/数据传播从M位开始S_InitStrutue.P_RColynomil 7;/CRC值计算的多项式SP_Int(SPI2,&SPI_IntStructure);/根据PIInitStrt中指定的参数初始化外设SPI寄存器SI_md(SPI2, ENALE); /使能SPI外设

8、PI2_SeSpee(SIBaudRaterescalr_);/9MHz /检测24L01与否存在/返回值:0,成功;1,失败u8R24L01Check(vid)8 f5=0XA5,0XA,0X5,0X5,0X5;;NRF240_Write(WRITE_RE_NF+TX_ADDR,uf,5);/写入5个字节的地址.NR4L01Rauf(X_DD,buf,5); /读出写入的地址 for(i=;i5;i+)i(bui!=0X5)brk; i(i!=5)retun 1;/检测L01错误eun ; /检测到24L01 /SPI写寄存器/g:指定寄存器地址alue:写入的值u8 NRF2L1_Wrie

9、_Re(u8 rg,u8val)u8 stats; RF4L01_SN=0; /使能SP传播 satu2_RadWreyte(reg);/发送寄存器号 SI_eaWritBt(value); /写入寄存器的值 NRFL01_SN=1; /严禁SI传播 etur(tats); /返回状态值/读取SPI寄存器值/reg:要读的寄存器u NF24L1_Read_Rg(u8r)u8 reg_val; F24L01SN 0; /使能SPI传播 I2_eWriteByte(rg); /发送寄存器号 eg_al=P2_RdritBye(XFF);/读取寄存器内容NF24L1_CSN 1; /严禁P传播 re

10、ur(rgva); /返回状态值/在指定位置读出指定长度的数据/eg:寄存器(位置)/*pu:数据指针/l:数据长度/返回值,本次读到的状态寄存器值 8RF241_a_Bu(urg,8 *pBuf,u8 len) tatus,8_tr; RF241CSN =; /使能SPI传播 stts=PI2RaWriteB(eg);/发送寄存器值(位置),并读取状态值 f(8r0;u8_crle;u8_c+) puu8_ctr=SPI_RadriteBye(0FF);/读出数据 NRF2L01_CS=1; /关闭PI传播 trstatus; /返回读到的状态值/在指定位置写指定长度的数据/rg:寄存器(位

11、置)/*pBuf:数据指针len:数据长度/返回值,本次读到的状态寄存器值u8 NR24L_ri_uf(8 re, u8 *pBuf, u8 le)u8 stats,u8_tr; NRF401CSN = 0; /使能SP传播 stats= SPI_RedWrite(g);/发送寄存器值(位置),并读取状态值for(u8_ctr=0; u8_ctrlen; 8_tr+)SPI2_ariteByte(*puf+); /写入数据 N24L0_CSN = 1; /关闭SP传播 reun stats; /返回读到的状态值/启动24L01发送一次数据/txbuf:待发送数据首地址返回值:发送完毕状况 NR2401_TxPacket(u8*xu,u8 lengh) ta;NR2401_E

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号