完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用STM32和LPC1114无线通信,STM32下载的是“无线通信实验”源程序。 LPC1114做为发射方,STM32做为接收方,加自动应答和16位CRC校验,可以正常通信。 LPC1114做为接收方,STM32做为发射方,不能通信!后来我把STM32和LPC1114的自动应答和CRC校验取消,STM32显示可以发送出数据,但LPC1114就是接收不到! 没有取消双方的自动应答和CRC校验时,STM32显示发送失败,取消了双方的自动应答和CRC校验后,STM32开始显示发送出去的数据,证明STM32发送是没问题的; 所以我想应该是LPC1114接收不到数据!我的LPC1114和nrf24L01是用杜邦线连接的,连线大约有10CM,不过我想应该和连线没有关系吧,因为它只是SPI读写用的。我一直在监视接收时IRQ,不产生中断! 请问:问题可能出在哪里? 谢谢! |
|
相关推荐
20个回答
|
|
回复【楼主位】richgood518:
------------------------------- 都是用我的代码么? 我觉得你可以参考下我的代码,然后对照下. 应该不会有问题的. |
|
|
|
回复【2楼】发烧友:
------------------------------- LPC1114上的程序和你的几乎是一模一样的,当STM32做为接收方,LPC1114做为发送方时,演示效果和你用两个STM32开发板做的无线通信实验室一模一样的。换成STM32发送,LPC1114接收时,就不行了!头大呀!我在想想吧! |
|
|
|
试试无ack的条件先.
|
|
|
|
我的问题搞定了,真是麻烦原子老师了!问题是怎么搞定的呢?说出来真是太可笑了!
|
|
|
|
回复【5楼】richgood518:
------------------------------- 恭喜. 不知道可否把LPC1114的代码上传,给需要的朋友一个参考? |
|
|
|
它哥M3终于和它弟M0通上话了(同父异母的)下面是LPC1114上的代码,都是照抄发烧友的,只是对应M0上的寄存器做了相应的修改!实验成功!放心使用! /*****************************************/ SYSCON->RESETCTRL |= (0x1<<2); //禁止SSP1复位 IOCON->IO2_1 &= ~0x07; /*******************************************/ } uint8 NRF24L01_Write_Reg(uint8 reg,uint8 value) GPIO0->DATA &= ~(1<<3); //CSN=0; return status; uint8 NRF24L01_Read_Reg(uint8 reg) GPIO0->DATA &= ~(1<<3); //CSN=0; return value; uint8 NRF24L01_Write_Buf(uint8 reg, uint8 *pBuf, uint8 len) NRF24L01_Write_Buf(WRITE_REG+TX_ADDR, check_in_buf, 5); NRF24L01_Read_Buf(READ_REG+TX_ADDR, check_out_buf, 5); if((check_out_buf[0] == 0x11)&& void NRF24L01_RX_Mode(void) GPIO3->DATA &= ~(1<<5); //CE拉低,使能24L01配置 } void NRF24L01_TX_Mode(void) state=NRF24L01_Read_Reg(STATUS); //读取状态寄存器的值 |
|
|
|
多谢共享.
|
|
|
|
顶。工程师不是一般的辛苦。再接再厉
|
|
|
|
这是个好贴,顶起来
|
|
|
|
这么好的帖子!顶!
|
|
|
|
|
|
|
|
ERROR
|
|
|
|
学习了
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
呵呵!高手就是高手!一下就说到重点. 用LPC1114驱动24L01要注意两点: 1、按照nRF24L01芯片手册,"The content of the STATUS register is always read to MISO after a high to low transition on CSN",也就是说,在CSN信号由高变低时,nRF24L01模块要返回Status寄存器的值。因此,在操作nRF24L01模块时,不能直接使用SSP0的SSEL0信号,因为SSEL0在发送每个字节都有一个由高到低的跳变。 2、必须使用一个IO引脚作为输出,从而控制CSN信号。这里还有一个需要注意的问题,就是例子程序里,读写一字节SPI数据时,等待发送缓冲区是否为空的判断,即:while ((SSP0SR&0x01)==0);,当这样使用时,会造成CSN信号在发送完第1字节的命令后,立即变高,也就是第2字节的数据尚未读取回来的时候,CSN信号已经发生了跳变。这里,需要改为等待SSP0忙信号,即:while((SSP0SR&0x10)!=0); 如上两点加以注意,使用LPC1114驱动nRF24L01模块没有任何问题。 |
|
|
|
楼上高手.
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2571 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2366 浏览 5 评论
3212 浏览 3 评论
2839 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2791 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
669浏览 1评论
907浏览 0评论
1027浏览 0评论
672浏览 0评论
500浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 11:51 , Processed in 1.455260 second(s), Total 115, Slave 98 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号