搜索
bottom↓
回复: 6

【已解决】ATEGA8+AVR STUDIO的nrf24l01第五版程序仍旧不通

[复制链接]

出0入0汤圆

发表于 2013-1-28 00:46:44 | 显示全部楼层 |阅读模式
本帖最后由 gzc581 于 2013-1-28 23:15 编辑

http://www.amobbs.com/thread-5517726-1-1.html
在上个帖子里使用的程序各种问题,感谢  lcw_swust  的一直回复,之后因为太纠结了,最终放弃那个程序。

通过查找论坛老帖,

http://www.amobbs.com/forum.php? ... ;highlight=nrf24l01
排除了因为滤波电容的问题,在收发的1117-3.3输出都加了10uf+104电容,仍旧不通,用示波器检测电源稳定。
同时该帖中提供的程序无法使用。


http://www.amobbs.com/forum.php?mod=viewthread&tid=4224575
该贴中提到了:
            
“调试注意事项:如果你是用直流稳压电源的话,要在ASM117那里接一个滤波电容(不加的话会很不稳定的哦!!)
                还有每次发送或者读取数据后一定要清空FIFO寄存器!!免得你会生不如死哦!!”

使用该贴中的51程序,改成了mega8的程序,在发送端主函数中添加STATUS反馈:UART_Putchar(sta);
                                unchar CheckACK()
                                {
                                        sta=NRFReadReg(R_REGISTER+STATUS);                 

                                        UART_Putchar(sta);

                                        if( (sta & 0b00100000) || (sta & 0b00010000) )
                                        {
                                           NRFWriteReg(W_REGISTER+STATUS,0xff);  
                                           Low_24L01_CSN;
                                           NRFSPI(FLUSH_TX);
                                           Hign_24L01_CSN;
                                           return(0);
                                        }
                                        else
                                           return(1);
                                }
结果输出  0E 0E 0E 0E 0E 0E 1E :即达到最大重发次数

之后按照的方法:
先单方调试发射端设置如下:
                              NRFWriteReg(WRITE_REG + EN_AA, 0x00);                 // 失能通道0自动应答
                              NRFWriteReg(WRITE_REG + EN_RXADDR, 0x00);   // 失能接收通道0
                              NRFWriteReg(WRITE_REG + SETUP_RETR, 0x00);          // 失能自动重发
发送方的流程就变成了发送-触发中断,这样就抛开了接收方。

在主函数while(1)里:检测STATUS、FIFO_STATUS

           NRFSetTxMode(TxDate);//发送温度
          UART_Putchar( NRFReadReg(R_REGISTER+STATUS));
          UART_Putchar( NRFReadReg(R_REGISTER+FIFO_STATUS));

本应该收到   0X2E                    0X11                    的,却得到                              0X1F                              0X21
即:          TS_DS=1              TX_FIFO EMPTY                                               TS_DS=0                         TX_FIFO FULL                                       
                 MAX_RT=0                                                                                   MAX_RT=1
也就是说数据没法出去,憋在TX_FIFO 里,达到了最大重发次数,发送失败......


不知这是怎么回事。


连续调试了几天了,昨天4点才睡,纠结死了,太困了,已经不清醒了,先睡会。因为感兴趣放假不回家在宿舍折腾这些的大四孩纸伤不起呀..................

麻烦大家了
tx注释为单向调试,rx为正常模式的代码如下







第二天:只是将CE的延时拉到1ms,所有问题解决,收发正常。


终于搞定了,这个帖子基本上是建立在搜索''nrf24l01"得到的6页搜索结果之上的,每一篇我都认真读过,感谢论坛前辈们的分享。这个帖子基本上已将所有可能的问题包括了。


解决问题步骤:
1:先改io配置试试我的程序
2:不行的话看看电容神马的加了没
3:开始单方调试发送接收,查看STATUS     FIFO STATUS结果,不对基本上是延时造成的
4:没了


成功的代码如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2013-1-28 22:17:09 | 显示全部楼层
我深深的勒个去呀.............当我把CE的延时拉到1ms的时候, 2E 11 2E 11.....赫然出现在串口助手上,看来发射部分调通了,开始进行接收部分的工作。延时果然不能CE果然不能拉高的太短呀......

出0入0汤圆

发表于 2013-6-6 18:08:46 | 显示全部楼层
这个必须学习

出0入0汤圆

发表于 2013-6-7 18:03:07 | 显示全部楼层
问题算是解决了  居然是硬件问题  换了一块板 已经调通   可惜原来那块板的硬件问题还没找到!!!

出0入0汤圆

发表于 2013-7-22 15:00:40 | 显示全部楼层
我淘宝买的两个模块,跟我另外一个板子NRF24LE1E通讯。开始ISP都正常,发送接收不正常。后来在模块的电源端焊接一个106的贴片电容,可以正常发送了,但不能正常接收。接收的时候电压就被拉低到0.9V,之前发射的时候电压也被拉到0.9V 求指导啊 我不能发消息可不可以加qq550366267 万分感谢

出0入0汤圆

发表于 2013-8-14 09:56:21 | 显示全部楼层
楼主,最近我在调STM8上面的nRF24L01,也是遇到很多问题,怎么都调不通,可怕的是调试过程竟然出现nRF接收模块可以自己接收自己打印,郁闷,示波器一时半会儿也没有,着急,打算借朋友个示波器看看了.首先有个问题请教下你,这个nRF模块的引脚具体是应该如何配置的?
我发现在stc89c51上面我根本没有配置哪个引脚,但是程序是完全可以运行的,然后我把代码搬到stm8s103上,发现在stm8上需要进行引脚配置的,这个引脚配置是应该如何配置呢?IRQ+MISO是上拉输入,其他的全部上拉输出可以不呢?
我是这么初始化这几个IO口的:
  1. #define         CE        PD_ODR_ODR3  
  2. #define         CSN PD_ODR_ODR2
  3. #define         SCK        PC_ODR_ODR7
  4. #define         MOSI        PC_ODR_ODR6
  5. #define         MISO        PC_ODR_ODR5        //输入
  6. #define         IRQ        PD_ODR_ODR4        //输入
复制代码
  1. //***********端口配置******************/
  2. void IO_Config(void) {
  3.    
  4.         PC_DDR_DDR5 = 0;//输入配置:0输入,1输出
  5.         PC_DDR_DDR6 = 1;
  6.         PC_DDR_DDR7 = 1;

  7.         PD_DDR_DDR2 = 1;
  8.         PD_DDR_DDR3 = 1;
  9.         PD_DDR_DDR4 = 0;//输入配置:0输入,1输出


  10.         PC_CR1_C15 = 0;//输入上拉
  11.         PC_CR1_C16 = 1;
  12.         PC_CR1_C17 = 1;

  13.         PD_CR1_C12 = 1;
  14.         PD_CR1_C13 = 1;
  15.         PD_CR1_C14 = 0;
  16. }
复制代码
因为这几个IO口初始化我不太懂,总是感觉这个IO口配置的不对,希望可以得到帮助哈!

出0入0汤圆

发表于 2013-10-23 22:16:31 | 显示全部楼层
兄弟还在不? 我现在也是遇见无法接收到数据报文的问题。
高了一个月啦。 在的话联系我吧  540317741
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 00:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表