zoukankan      html  css  js  c++  java
  • NRF24L01学习

    一、工作模式


    PWR_UP和PRIM_RX在寄存器0x00中的第0位和第1位。
    待机模式I:只是使用晶振工作,CE=0时是拉低?
    待机模式II:部分时钟缓冲器处在工作模式。TX FIFO为空并且CE为高电平进入待机模式II。

    然后在发送和接收时,NRF24L01有两种不同的模式,一种时ShockBurst,另一种时增强型ShockBurst,增强型多了应答。
    两种模式的区别在EN_AA寄存器使能,是否开启自动应带就是区别。

    自动应答(RX):收到有效的数据包后,系统进入发送模式发送确认信号。然后根据PRIM_RX和CE引脚决定
    自动重发功能(ART)(TX):发送后如果没有收到确认信号,系统重发直到收到确认信号或超过重发次数。有新数据发送时丢包计数器复位。

    数据通道:通过EN_RXADDR设置,默认通道0和1开启。
    每个通道有自己的寄存器RX_ADDR_Px,地址通过此配置。


    中断:IRQ由低电平触发,寄存器中TX_DS, RX_DS或MAX_RT为高时触发中断。所有中断都可屏蔽。

    二、NRF24L01中断初始化学习

    demo例程的初始化顺序:
    配置CONFIG寄存器(选择需要屏蔽的中断,并开启设备PWR_UP)。
    设置EN_AA寄存器(开启通道0自动应答)
    设置EN_RXADDR  (开启通道0接收)
    设置SETUP_AW(设置接收和发送的地址宽度)
    设置SETUP_RETUP(建立重发的时间和次数)
    设置RF_CH            (设置NRF24L01的工作通道频率)
    设置RF_SETUP       (设置工作的参数)
    设置接收RX_ADDR_P0和发送TX_ADDR地址。

    小马哥的写法
    设置接收模式:
    ①设置CONIFG为接收模式
    ②需要清除中断,前后都CE拉低拉高

    接收函数:
    ①读取RD_RX_PLOAD中的FIFO数据
    ②清除中断

    发送函数:
    ①装载WR_TX_PLOAD数据进FIFO
    ②CONFIG设置为发送模式
    ③清中断

    错误总结:①网上说可以用串口读出寄存器的值,来确认是否配置成功。我用printf函数打印出来全是0x00。最后发现我读取时的寄存器地址加了写地址的指令值,导致出错了。
    ②我初始化NRF24l01后,用EXTI_GenerateSWInterrupt(EXTI_Line11);软件触发中断。
    最后停在了                B       .       //就停在这里了,是有中断没有处理。
                    ENDP
                    ALIGN
    所以才发现EXTI15_10_Handler写错了T.T   应该是EXTI15_10_IRQHandler
    ③我发现很难调试,需要两快一起调试。这大大增加了难度。http://www.openedv.com/posts/list/0/57110.htm
    ④用上面这种方法实现了遥控器对飞机的发送,但是开应答一直时MAX_TX。后来发现飞机对遥控器发送失败。因为遥控器初始化后Rx_FIFO不为空,无法触发中断。
    SPI_Write_Reg(FLUSH_RX,0xFF);
    SPI_Write_Reg(FLUSH_TX,0xFF);
    加上这两句就没有问题了。

    ⑤然后在不应答的情况下,能够双向收发了。但是应答情况下一直时MAX_RT,我去太郁闷了。
    原来之前在不应答的情况向想看看RF_CH通道不一样,能不能通--》结果可以。
    但是在应答模式下,居然不通。自作孽啊,卧槽。浪费了好多时间,总算调通了。


    无欲速,无见小利。欲速,则不达;见小利,则大事不成。
  • 相关阅读:
    angularjs: ng-select和ng-options
    angularjs之$timeout指令
    angular的uiRouter服务学习(5) --- $state.includes()方法
    深究AngularJS——如何获取input的焦点(自定义指令)
    深究AngularJS——自定义服务详解(factory、service、provider)
    AngularJS 事件指令/input相关指令/样式指令/DOM操作指令详解
    字符串对象的创建
    redis安装和配置
    Cent Linux启动tomcat慢的问题
    Linux环境nginx的配置
  • 原文地址:https://www.cnblogs.com/ch122633/p/7363253.html
Copyright © 2011-2022 走看看