完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我用的一个是探索者板子,一个是NUCLEO_F411RE板子,附上代码求助[AppleScript] 纯文本查看 复制代码
u8 adds[]={0xE7,0xE7,0xE7,0xE7,0xE7};extern u8 num[32];//SPI3õê¼»ˉ PB3=SCK PB4=MISO PB5=MOSI PG8=IRQ PG6=CE PG7=CSNvoid SPI_Set(){RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);GPIO_InitTypeDef GPIO_Structure;GPIO_Structure.GPIO_Mode=GPIO_Mode_AF;GPIO_Structure.GPIO_OType=GPIO_OType_PP;GPIO_Structure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;GPIO_Structure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Structure.GPIO_Speed=GPIO_High_Speed;GPIO_Init(GPIOB,&GPIO_Structure);GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI1); //PB3¸′óÃÎa SPI1GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1); //PB4¸′óÃÎa SPI1GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1); //PB5¸′óÃÎa SPI1GPIO_Structure.GPIO_Pin = GPIO_Pin_14; GPIO_Structure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½ GPIO_Structure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö GPIO_Structure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_Structure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà- GPIO_Init(GPIOB, &GPIO_Structure);//3õê¼»ˉPB14GPIO_Structure.GPIO_Mode=GPIO_Mode_OUT;GPIO_Structure.GPIO_OType=GPIO_OType_PP;GPIO_Structure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;GPIO_Structure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Structure.GPIO_Speed=GPIO_High_Speed;GPIO_Init(GPIOG,&GPIO_Structure);//IRQò»Ö±à-¸ßGPIO_Structure.GPIO_Mode=GPIO_Mode_IN;GPIO_Structure.GPIO_OType=GPIO_OType_PP;GPIO_Structure.GPIO_Pin=GPIO_Pin_8;GPIO_Structure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_Structure.GPIO_Speed=GPIO_High_Speed;GPIO_Init(GPIOG,&GPIO_Structure);GPIO_SetBits(GPIOG,GPIO_Pin_6);GPIO_SetBits(GPIOB,GPIO_Pin_14);SPI_InitTypeDef SPI_Structure;SPI_Structure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_32;//·ÖÆμ,ó|8·ÖÆμòÔéÏSPI_Structure.SPI_CPHA=SPI_CPHA_1Edge;SPI_Structure.SPI_CPOL=SPI_CPOL_Low;SPI_Structure.SPI_CRCPolynomial=1;//CRCSPI_Structure.SPI_DataSize=SPI_DataSize_8b;SPI_Structure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;SPI_Structure.SPI_FirstBit=SPI_FirstBit_MSB;SPI_Structure.SPI_Mode=SPI_Mode_Master;SPI_Structure.SPI_NSS=SPI_NSS_Soft;SPI_Init(SPI1,&SPI_Structure);SPI_Cmd(SPI1,ENABLE);}//·¢Ëí»ò½óêÕò»¸ö×Ö½úu8 Send_Read_Byte (u8 dat){while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);SPI_I2S_SendData(SPI1,dat);while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);return SPI_I2S_ReceiveData(SPI1);}//D′èëò»¸ö×Ö½úμ½¼Ä′æÆ÷,·μ»Ø±ê־λu8 Write_Byte(u8 add,u8 date){u8 status=0;GPIO_ResetBits(GPIOG,GPIO_Pin_7);status=Send_Read_Byte(0x20+add);Send_Read_Byte(date);GPIO_SetBits(GPIOG,GPIO_Pin_7);return status;}//′ó¼Ä′æÆ÷¶áè¡ò»¸ö×Ö½ú£¬·μ»Øêy¾Yu8 Read_Byte(u8 add){u8 date=0;GPIO_ResetBits(GPIOG,GPIO_Pin_7);Send_Read_Byte(add);date=Send_Read_Byte(0xFF);GPIO_SetBits(GPIOG,GPIO_Pin_7);return date;}//D′èë¼Ä′æÆ÷n¸ö×Ö½ú,·μ»Ø±ê־λu8 Write_nBytes(u8 add,u8 num,u8 date[]){u8 status=0,i;GPIO_ResetBits(GPIOG,GPIO_Pin_7);status=Send_Read_Byte(0x20+add);for(i=0;i u8 adds[]={0xE7,0xE7,0xE7,0xE7,0xE7};//SPI3õê¼»ˉ PB3=SCK PB4=MISO PB5=MOSI PG8=IRQ PG6=CE PG7=CSN TX:PA0=IRQ PA1=CE PA4=CSNvoid SPI_Set(){RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);GPIO_InitTypeDef GPIO_Structure;GPIO_Structure.GPIO_Mode=GPIO_Mode_AF;GPIO_Structure.GPIO_OType=GPIO_OType_PP;GPIO_Structure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;GPIO_Structure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Structure.GPIO_Speed=GPIO_High_Speed;GPIO_Init(GPIOB,&GPIO_Structure);GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI1); //PB3¸′óÃÎa SPI1GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1); //PB4¸′óÃÎa SPI1GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1); //PB5¸′óÃÎa SPI1GPIO_Structure.GPIO_Pin = GPIO_Pin_14; GPIO_Structure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½ GPIO_Structure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö GPIO_Structure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_Structure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà- GPIO_Init(GPIOB, &GPIO_Structure);//3õê¼»ˉPB14GPIO_Structure.GPIO_Mode=GPIO_Mode_OUT;GPIO_Structure.GPIO_OType=GPIO_OType_PP;GPIO_Structure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_4;GPIO_Structure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Structure.GPIO_Speed=GPIO_High_Speed;GPIO_Init(GPIOA,&GPIO_Structure);//IRQò»Ö±à-¸ßGPIO_Structure.GPIO_Mode=GPIO_Mode_IN;GPIO_Structure.GPIO_OType=GPIO_OType_PP;GPIO_Structure.GPIO_Pin=GPIO_Pin_0;GPIO_Structure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_Structure.GPIO_Speed=GPIO_High_Speed;GPIO_Init(GPIOA,&GPIO_Structure);GPIO_SetBits(GPIOA,GPIO_Pin_1);GPIO_SetBits(GPIOB,GPIO_Pin_14);SPI_InitTypeDef SPI_Structure;SPI_Structure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_32;//·ÖÆμ,ó|8·ÖÆμòÔéÏSPI_Structure.SPI_CPHA=SPI_CPHA_1Edge;SPI_Structure.SPI_CPOL=SPI_CPOL_Low;SPI_Structure.SPI_CRCPolynomial=1;//CRCSPI_Structure.SPI_DataSize=SPI_DataSize_8b;SPI_Structure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;SPI_Structure.SPI_FirstBit=SPI_FirstBit_MSB;SPI_Structure.SPI_Mode=SPI_Mode_Master;SPI_Structure.SPI_NSS=SPI_NSS_Soft;SPI_Init(SPI1,&SPI_Structure);SPI_Cmd(SPI1,ENABLE);}//·¢Ëí»ò½óêÕò»¸ö×Ö½úu8 Send_Read_Byte(u8 dat){while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);SPI_I2S_SendData(SPI1,dat);while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);return SPI_I2S_ReceiveData(SPI1);}//D′èëò»¸ö×Ö½úμ½¼Ä′æÆ÷,·μ»Ø±ê־λu8 Write_Byte(u8 add,u8 date){u8 status=0;GPIO_ResetBits(GPIOA,GPIO_Pin_4);status=Send_Read_Byte(0x20+add);Send_Read_Byte(date);GPIO_SetBits(GPIOA,GPIO_Pin_4);return status;}//′ó¼Ä′æÆ÷¶áè¡ò»¸ö×Ö½ú£¬·μ»Øêy¾Yu8 Read_Byte(u8 add){u8 date=0;GPIO_ResetBits(GPIOA,GPIO_Pin_4);Send_Read_Byte(add);date=Send_Read_Byte(0xFF);GPIO_SetBits(GPIOA,GPIO_Pin_4);return date;}//D′èë¼Ä′æÆ÷n¸ö×Ö½ú,·μ»Ø±ê־λu8 Write_nBytes(u8 add,u8 num,u8 date[]){u8 status=0,i;GPIO_ResetBits(GPIOA,GPIO_Pin_4);status=Send_Read_Byte(0x20+add);for(i=0;i |
|
相关推荐
15个回答
|
|
|
我知道哪里出问题了
|
|
|
|
|
|
我也是,NRF_Check()可以通过,但是Tx和Rx不行。
|
|
|
|
|
|
我接收端想检测发射端的载波,根本检测不到
|
|
|
|
|
|
我应该也是这种情况,我怀疑最近这批NRF有问题。。。以前我用没出现过这种情况啊
|
|
|
|
|
|
你有没有换新的试试?我手头就一对,暂时没法换。
|
|
|
|
|
|
我手头也就一对啊,没办法。我刚去淘宝买了两对,这要是还不行就是我自己的问题了。
|
|
|
|
|
|
你把你的程序附上来吧
|
|
|
|
|
|
SPI1初始化:
[C] 纯文本查看 复制代码 void SPI1_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE );//PORTB£¬SPI2ê±Öóê1Äü GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //PA5.6.7¸′óÃíÆíì GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); //PA5.6.7éÏà-SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //éèÖÃSPIμ¥Ïò»òÕßË«ÏòμÄêy¾YÄ£ê½:SPIéèÖÃÎaË«ÏßË«Ïòè«Ë«1¤SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//éèÖÃSPI1¤×÷Ä£ê½:éèÖÃÎaÖ÷SPISPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//éèÖÃSPIμÄêy¾Y′óD¡:SPI·¢Ëí½óêÕ8λ֡½á11SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//Ñ¡ÔñáË′®DDê±ÖóμÄÎèì¬:ê±ÖóDü¿Õ¸ßSPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//êy¾Y2¶»ñóúμú¶t¸öê±ÖóÑØSPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//NSSDÅoÅóéó2¼t£¨NSS1ü½Å£©»1êÇèí¼t£¨ê1óÃSSI룩1üàí:Äú2¿NSSDÅoÅóDSSIλ¿ØÖÆSPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;//¶¨òå2¨ìØÂêÔ¤·ÖÆμμÄÖμ:2¨ìØÂêÔ¤·ÖÆμÖμÎa16SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//Ö¸¶¨êy¾Y′«êä′óMSBλ»1êÇLSBλ¿aê¼:êy¾Y′«êä′óMSBλ¿aê¼SPI_InitStructure.SPI_CRCPolynomial = 7;//CRCÖμ¼ÆËãμĶàÏîê½SPI_Init(SPI1, &SPI_InitStructure); //¸ù¾YSPI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèSPIx¼Ä′æÆ÷ SPI_Cmd(SPI1, ENABLE); //ê1ÄüSPIíaéèSPI1_ReadWriteByte(0xff);//Æô¶ˉ′«êä} NRF IO初始化: [C] 纯文本查看 复制代码 //3õê¼»ˉ24L01μÄIO¿úvoid NRF24L012_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_15;//PA11 15 íÆíì GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //íÆíìêä3ö GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉÖ¸¶¨IOGPIO_SetBits(GPIOA,GPIO_Pin_11 | GPIO_Pin_15);//éÏà- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA12 êäèë GPIO_Init(GPIOA, &GPIO_InitStructure); SPI1_Init(); //3õê¼»ˉSPI SPI_Cmd(SPI1, DISABLE); // SPIíaéè2»ê1ÄüSPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //SPIéèÖÃÎaË«ÏßË«Ïòè«Ë«1¤SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//SPIÖ÷»ú SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//·¢Ëí½óêÕ8λ֡½á11SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;//ê±ÖóDü¿ÕμíSPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;//êy¾Y2¶»ñóúμú1¸öê±ÖóÑØSPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//NSSDÅoÅóéèí¼t¿ØÖÆSPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;//¶¨òå2¨ìØÂêÔ¤·ÖÆμμÄÖμ:2¨ìØÂêÔ¤·ÖÆμÖμÎa16SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//êy¾Y′«êä′óMSBλ¿aê¼SPI_InitStructure.SPI_CRCPolynomial = 7;//CRCÖμ¼ÆËãμĶàÏîê½SPI_Init(SPI1, &SPI_InitStructure); //¸ù¾YSPI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèSPIx¼Ä′æÆ÷SPI_Cmd(SPI1, ENABLE); //ê1ÄüSPIíaéèNRF24L012_CE=0; //ê1Äü24L01NRF24L012_CSN=1;//SPIƬѡè¡Ïû } 读写数据: [AppleScript] 纯文本查看 复制代码 u8 SPI1_ReadWriteByte(u8 TxData){ u8 retry=0; while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //¼ì2éÖ¸¶¨μÄSPI±ê־λéèÖÃóë·ñ:·¢Ëí»o′æ¿Õ±ê־λ{retry++;if(retry>200)return 0;} SPI_I2S_SendData(SPI1, TxData); //í¨1yíaéèSPIx·¢Ëíò»¸öêy¾Yretry=0;while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) //¼ì2éÖ¸¶¨μÄSPI±ê־λéèÖÃóë·ñ:½óêü»o′æ·Ç¿Õ±ê־λ{retry++;if(retry>200)return 0;} return SPI_I2S_ReceiveData(SPI1); //·μ»Øí¨1ySPIx×î½ü½óêÕμÄêy¾Y } [AppleScript] 纯文本查看 复制代码 u8 NRF24L012_Check(void){u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};u8 i;SPI1_SetSpeed(SPI_BaudRatePrescaler_4); //spiËù¶èÎa9Mhz£¨24L01μÄ×î′óSPIê±ÖóÎa10Mhz£© NRF24L012_Write_Buf(WRITE_REG_NRF2+TX_ADDR2,buf,5);//D′èë5¸ö×Ö½úμÄμØÖ·.NRF24L012_Read_Buf(TX_ADDR2,buf,5); //¶á3öD′èëμÄμØÖ· for(i=0;i<5;i++)if(buf!=0XA5)break; if(i!=5)return 1;//¼ì2a24L01′íÎóreturn 0; //¼ì2aμ½24L01} //SPID′¼Ä′æÆ÷//reg:Ö¸¶¨¼Ä′æÆ÷μØÖ·//value:D′èëμÄÖμu8 NRF24L012_Write_Reg(u8 reg,u8 value){u8 status; NRF24L012_CSN=0; //ê1ÄüSPI′«êä status =SPI1_ReadWriteByte(reg);//·¢Ëí¼Ä′æÆ÷oÅ SPI1_ReadWriteByte(value); //D′èë¼Ä′æÆ÷μÄÖμ NRF24L012_CSN=1; //½ûÖ1SPI′«êä return(status); //·μ»Ø×′ì¬Öμ}//¶áè¡SPI¼Ä′æÆ÷Öμ//reg:òa¶áμļÄ′æÆ÷u8 NRF24L012_Read_Reg(u8 reg){u8 reg_val; NRF24L012_CSN = 0; //ê1ÄüSPI′«êä SPI1_ReadWriteByte(reg); //·¢Ëí¼Ä′æÆ÷oÅ reg_val=SPI1_ReadWriteByte(0XFF);//¶á衼Ä′æÆ÷ÄúèY NRF24L012_CSN = 1; //½ûÖ1SPI′«êä return(reg_val); //·μ»Ø×′ì¬Öμ}//ÔúÖ¸¶¨Î»Ööá3öÖ¸¶¨3¤¶èμÄêy¾Y//reg:¼Ä′æÆ÷(λÖÃ)//*pBuf:êy¾YÖ¸Õë//len:êy¾Y3¤¶è//·μ»ØÖμ,′Ë′ζáμ½μÄ×′쬼Ä′æÆ÷Öμ u8 NRF24L012_Read_Buf(u8 reg,u8 *pBuf,u8 len){u8 status,u8_ctr; NRF24L012_CSN = 0; //ê1ÄüSPI′«êä status=SPI1_ReadWriteByte(reg);//·¢Ëí¼Ä′æÆ÷Öμ(λÖÃ),2¢¶áè¡×′ì¬Öμ for(u8_ctr=0;u8_ctr |
|
|
|
|
|
贴了,我就是移植原子哥的
|
|
|
|
|
|
调试nRF24L01,先调一方向,比如说发送,或者接收,通了再调另一个,你2个模块同时调,你根本不知道是接收的问题还是发送的问题
最好的用nRF24L01转USB的串口模块,直接解决一端,自己再处理另一端 |
|
|
|
|
|
先调一个需要一个确定好使的模块,可是我现在手头没有确定好使的模块……
|
|
|
|
|
|
是模块的问题,昨天买一对新的模块,刚换上,好了。被气死
|
|
|
|
|
|
我的还在路上,但愿我的也是模块问题
|
|
|
|
|
|
我读FIFO_STATUS寄存器始终都是0x11,也就是说TX和RXFIFO始终都是满的,而且我读取RXFIFO也读取不出来,清空也清空不了…你是怎么读RXFIFO的?还有怎么清空它的?
|
|
|
|
|
|
你看原子哥的例程,我完全没有改过,就改了一下引脚。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
921 浏览 0 评论
如何使用STM32+nrf24l01架构把有线USB设备无线化?
3082 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2982 浏览 5 评论
3844 浏览 3 评论
3308 浏览 8 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
1265浏览 1评论
1211浏览 0评论
880浏览 0评论
971浏览 0评论
923浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 19:07 , Processed in 1.210797 second(s), Total 105, Slave 87 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1152