天线|RF射频
直播中

汤赫禧

7年用户 219经验值
私信 关注
[问答]

无线模块24l01探索历程和一些问题谁来解答一下

搞了一晚的24l01模块,在网上查了好多资料,并没有太多有的的,但也不能全否,看的帖子了解了很多,程序倒是没多少适合新手的,快要抓狂把模块扔一边时,想想不行!人家都一两个礼拜搞定,我得坚持,于是就把原子哥的无线通信视频又看了一遍,,之前遇到的问题是我手里只有一个战舰版,再有就是51板和一个c8t6的小模块板,c8t6小板的引脚少,没有战舰的PG678,我直接改历程的引脚还通信不了(这里有很大问题后来解决,也是关键),然后我就以为引脚不能随意改,就去看芯片的数据手册,看了看也是蒙圈,就开始各种找历程,找了几个全都是工程上的,,,!@#¥%&**,,,,后来我就不信邪,我感觉引脚配置对了应该没问题的,我就把PG789改成了c8t6上有的PB68,PC13,配置都是按原子哥历程的来的,搞了两个程序,一个专门用战舰来接收,一个专门用c8t6发送,不废话了,我最后就是把c8t6发送的程序中,lcd.c给移走了,然后就好使了,战舰上的屏幕一直刷着字符串,然后我就激动的来发个帖子,这肯定是个好开头,我会继续改下去,继续深究,弄到差不多了我在传上来程序,好啦,继续搞起。

回帖(11)

胡卫伟

2020-6-17 07:18:51
那么问题来了,为什么lcd。c去掉 之后就好使了,是不是lcd里的io没连,程序卡主了,还是什么原因,求解答
举报

tijing忽忽

2020-6-17 07:32:34
还有个问题,发送现在是这样的
NRF24L01_TX_Mode();
                mode=' ';//′ó¿Õ¸ñ¼ü¿aê¼  
                while(1)
                {                
                        if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
                        {
          
                                key=mode;
                                for(t=0;t<32;t++)
                                {
                                        key++;
                                        if(key>('~'))key=' ';
                                        tmp_buf[t]=key;       
                                }
                                mode++;
                                if(mode>'~')mode=' ';            
                                tmp_buf[32]=0;        //¼óèë½áêø·û       
                        }                            
                }       
为什么接收端会无线循环,我在结尾放了break,就不显示了,不放就一直循环,如何设置才能让发送想要的字符,接收应该没有问题
举报

黄玫玫

2020-6-17 07:51:56
我做过一个多设备双向的,不过是基于UCOSIII的,感觉这个24L01还是有一点问题的,接收方如果很快的将数据接收并清除中断和接收FIFO的话,发射方会判定为发送超时、、、按道理都有接收中断出来了,肯定是ACK成功了的,所以这点一直找不到原因,最后只能抛弃传输数据量,幸好是用于传输控制命令而不是传输大数据、、、、以后可以相互交流交流
举报

彭玉林

2020-6-17 08:08:12
int main(void)
{                             
        delay_init();                     //Ñóê±oˉêy3õê¼»ˉ          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÖD¶ÏóÅÏè¼¶·Ö×éÎa×é2£o2λÇàÕ¼óÅÏè¼¶£¬2λÏìó|óÅÏè¼¶
        uart_init(115200);                 //′®¿ú3õê¼»ˉÎa115200
        LED_Init();                                          //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
        KEY_Init();                                        //3õê¼»ˉ°′¼ü
        NRF24L01_Init();                    //3õê¼»ˉNRF24L01
                                               
  NRF24L01_TX_Mode();
        while(1)
        {       
                NRF24L01_TxPacket("aaa");
                delay_ms(500);
  }
}
费劲千辛万苦,一直写好多行函数还用数组去实现发送指定数据,真是走了坎坷路,没想到一行就可以,确实怪我不够仔细,c语言也不够扎实,感觉犯了好低级的错误,幸好偶然发现lcd的显示函数字符串格式和这个是一个类型,继续搞继续搞去l
举报

更多回帖

发帖
×
20
完善资料,
赚取积分