这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » (NRF24L01驱动成功)hanshuyujifen2的 ARM DIY进程贴

共119条 12/12 |‹ 7 8 9 10 11 12 跳转至
高工
2012-06-11 21:40:30     打赏
111楼
为无线nrf24l01做准备。。。

高工
2012-06-12 21:24:11     打赏
112楼
实验两天,没搞定NRF24L01。
一直是检测不到无线模块

今天那三用表测试了下,发现PB15和NRF的6号脚不通
PG8和NRF的8号脚不通。PG8还直接连到了地上

唉  郁闷了
没带拍针,还不好飞线。。。
只能放弃了。

不过模块测试是正常的

高工
2012-06-13 15:04:14     打赏
113楼
晕,这不是坑人吗!

高工
2012-06-15 21:31:33     打赏
114楼
SPI2驱动NRF24L01通信

感谢蒋粤的提醒。PCB上的丝印和实际的引脚不对应。引脚PG8对应的丝印应该是PG6.

同时,前几天调不通的时候测试了下PB15,与插针PB15 和片子上的引脚不通。
于是就拆掉板子上的NRF插座。换成插针,使用杜邦线连接NRF24L01模块。见下图


1、使用的硬件
SPI2、NRF24L01模块、PC6、7、PB13、14、15、PG6

2、使用原子的板子作为通信的另一端。

程序工作过程:
1、EEPW板双工模式收发数据
   当收到串口发送过来的数据是,将串口数据发送。
   接收数据,发PC端显示
2、原子板工作过程
   启动按压Key1工作在发送模式,按压Key2工作在接受模式

串口处理代码:
void USART1_IRQHandler()
{
    uint8_t Res;
    
    if(USART_GetITStatus(USART1,USART_IT_RXNE)!= RESET)    //检查串口1是否是否发生了中断
    {
        Res = USART_ReceiveData(USART1);
        if((USART_RX_STA&0x80)==0)//接收未完成
            {
            if(USART_RX_STA&0x40)//接收到了0x0d
            {
                if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
                else
                {
                    USART_RX_STA|=0x80;    //接收完成了
                    TX_Mode();  //设置为发送模式
                    NRF24L01_TxPacket(USART_RX_BUF);  //发送数据
                    USART_RX_STA = 0;   //情况串口数据标志
                    RX_Mode();  //继续接收
                }
            }
            else //还没收到0X0D
                {    
                if(Res==0x0d)USART_RX_STA|=0x40;
                else
                    {
                    USART_RX_BUF[USART_RX_STA&0X3F]=Res ;
                    USART_RX_STA++;
                    if(USART_RX_STA>63)USART_RX_STA=0;//接收数据错误,重新开始接收      
                    }        
                }
            }          
    }
    
}

主函数中使用:
    NRF24L01_Init();  //初始化,包含了SPI2的初始化
    if(NRF24L01_Check())  //检测无线模块是否存在
    {
        printf("NRF24L01检查失败");    
    }
    else
    {
        printf("NRF24L01检测成功");    
    }
        printf("请输入要发生的数据,以回车结束\r\n");
    RX_Mode();   //设置成接收模式
    while(1)  //循环检查是否收到数据
    {
        if(NRF24L01_RxPacket(tmp_buf)==0)
        {
            printf("收到数据:%s\r\n",tmp_buf);
        }
    }

图如下:

1、硬件连接


2、串口监视图片
    单工模式串口监视
    
    两个串口


    双工模式收发数据

再来一张图


硬件图










高工
2012-06-15 21:41:32     打赏
115楼
下棋预告

红外接收


高工
2012-06-15 21:56:51     打赏
116楼
晚会给你发吧

高工
2012-06-16 10:08:38     打赏
117楼
发了。。。

高工
2012-06-16 21:28:21     打赏
118楼
晚上看了会神舟。耽误了点时间

基本完成红外解码,但程序还有点问题。
估计也是时间控制的问题。最后一个问题,没解决。
不动了

明天估计也没时间了,后天回家。

高工
2012-06-17 19:29:18     打赏
119楼
谢谢,也祝你好曾经。
我的试验到此为止了。写总结要等结果出来才有时间。这两天又要坐火车了

共119条 12/12 |‹ 7 8 9 10 11 12 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]