wrnypl1

  • 2018-10-02
  • 回复了主题帖: 悬浮太阳能电机,见光就转,太好玩了

    nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN SOURCE大法好。

  • 回复了主题帖: 顺丰一高级工程师因误删数据库被开除!惨

    nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN SOURCE大法好。

  • 回复了主题帖: 腾讯安全工程师好奇检查酒店WiFi漏洞被新加坡安全局逮捕

    nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN SOURCE大法好。

  • 回复了主题帖: 帮忙他人,成就自我——EEWORLD问答榜(9期)

    nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN SOURCE大法好。

  • 回复了主题帖: 不怕水的插座

    nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN SOURCE大法好。

  • 发表了主题帖: NRF24L01 使用小结/自动应答/通道地址

    nrf24L01被设置为接收模式后,可通过6个不同的数据通道(data pipe)接收数据。 每个数据通道都有一个唯一的地址但是各数据通道的频率是相同的。这意味着可以有6个被配置成发送状态的nRF24L01可以和一个配置成接收状态的nRF24L01通信,并且接收方可以区分(通过判断状态寄存器的1-3位即可达到区分的目的)。 数据通道0有一个唯一的40bit的可设置的地址。其余的通道1到通道5则地址前32位相同,而后8位不同。所有的数据通道都可以实现Enhanced ShockBurst模式。 在发送端,数据通道0被用来接收确认信息,因此发送端的数据通道0的地址必须等于发送地址,这样才能收到应答信息。 当一个24L01发送结束后,它会打开接收器并等待确认。如果没有收到确认,则重发,直到收到确认。当重发超过一定次数则发出中断并改变状态寄存器。重发次数的限制在SETUP_RETR_ARC寄存器中设置。 无论何时收到确认,都会认为上一个数据包发送成功,这个数据包将被从发送缓冲区清除,并且把TX_DS IRQ置为高。 每次开始spi写,读回来的都是状态字。 增强型ShockBurst包格式 前置域1byte 地址域3-5byte 包控制域9bit 载荷0-32字节 CRC1-2字节 地址域是接收机地址 包控制域 载荷长度6bit Pid2bit NO_ACK1bit 载荷长度:6bit说明最多32字节 Pid:用于包编号,用于确定是重发包还是新包 NO_ACK:用于表示是否自动应答,如为1则表示无需自动应答 自动应答的延时和重发次数是可编程的。 24L01的工作模式和寄存器及IO口的关系如下 CE引脚的作用 一个ESB(Enhanced ShockBurst)周期,发送一个字节连带收到ACK大约339us 从powerdown状态需要先进入standyby状态,该状态转换需要1.5ms延迟,从standyby状态进入rx/tx状态,需要130us 置高CE维持最少10us,启动Enhanced ShockBurst发送。 Enhanced ShockBurst™模式下发送数据流程 1.配置config寄存器,将PRIM_RX置为0,表示发送模式 2. 当需要发送数据时,首先需要配置地址TX_ADDR,这个地址应该是接收端地址(即应该是接收端6个data pipe地址中的一个即可保证对方收到)。如果要使用自动应答,因为应答消息由发送端的datapipe0接收,所以发送的datapipe0的地址应等于TX_ADDR(若是和上一次发送是相同地址,则可不用重写地址)。 3.配置数据负载长度TX_PLD,将需要发送的数据送入nrf24L01,通过SPI连续写入数据载荷时,nrf24L01将自动对字节数计数。(数据载荷必须在cs为低的时候连续写入) 4.将CE置高并维持最少10us,这个脉冲将启动ShockBurst发送 5.NRF24L01:     a)打开射频     b)启动晶振     c)数据打包     d)发送数据 6.如果启动了自动应答(且重传次数未达到最大值),NRF24L01将自动转入接收状态。   1:若在规定时间内收到了应答包,则这是一次成功的发送,TX FIFO中的数据被清除,同时置高status寄存器中的TX_DS位。   2:如果在规定时间内未收到应答包则自动重传(当启用自动重传时,由SETUP_RETR寄存器中的ARC位指定重传次数)。   3:当重传次数到达最大值依然没有收到应答,则status寄存器中的MAX_RT被置高,TX FIFO缓冲区中的数据并不被移除。 MAX_RT或TX_DS被置高都会在IRQ引脚上引起中断(低电平有效,重写status寄存器中的对应位可清除)。在到达最大重传次数并引发中断后,在没有清除MAX_RT之前,任何数据都不能发送。每次发生MAX_RT中断,PLOS_CNT计数器都会加1,用于统计丢包数。 7.CE置低以后,设备进入STANDBY_I状态。否则TX FIFO缓冲区中的下一个数据载荷将被发送。如果数据缓冲区空,而CE仍然为高,设备将进入STANDBY-II模式。 8.如果设备处于STANDBY-II模式,当CE置低后,设备将进入STANDBY-I模式。 (STANDBY模式可减少电流的消耗,在该模式下,SPI通信仍然可以完成) Enhanced ShockBurst™模式下接收数据流程 1.设置config寄存器中的PRIM_RX为1,且置CE为高 2.130us之后,NRF24L01开始监视射频信号 3. 当合法的包被接收到(地址匹配),数据被存储到RX-FIFO缓冲区中,status寄存器中的RX_DR被置高,IRQ引脚同时发出中断信号(如果未屏蔽该信号)。Status寄存器中的RX_P_NO指示这个应该接收该数据的DATA PIPE号。 4.如果自动应答启用的话,一个应答信号将被发出 5.MCU将CE置为低将进入STANDBY-I模式 6.MCU可通过SPI读出接收到的数据 另外:关于24L01组网想说明几点应注意的地方: (1)注意地址的分配 文档中明确说明只有通道0具有5个字节的可配置地址,其他的5个节点都只有1字节可自由配置地址, 比如可以在接收节点这样配置:uint const RXADR0[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};   //接收地址 uint const RXADR1[RX_ADR_WIDTH]= {0xc2,0xc2,0xc2,0xc2,0xc1};     //通道1地址 uint const RXADR2[1]= {0xc2};         //通道2地址 uint const RXADR3[1]= {0xc3};         //通道3地址 uint const RXADR4[1]= {0xc4};         //通道4地址 uint const RXADR5[1]= {0xc5};         //通道5地址 然后将各发送节点地址与接收端相应通道地址设置相同即可 (2)接收节点对各发送节点进行区分 这个就是判断状态寄存器的1-3位即可达到区分的目的 ---------------------本文来自 gtkknd 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/gtkknd/art ... 148?utm_source=copy

    1. 【资源共享】 NRF24L01 使用小结/自动应答/通道地址 2/508 【创新实验室】 2018-10-02
    1. 悬浮太阳能电机,见光就转,太好玩了 5/774 聊聊、笑笑、闹闹 2018-10-02
      nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN SOURCE大法好。
    2. 顺丰一高级工程师因误删数据库被开除!惨 11/1327 聊聊、笑笑、闹闹 2018-10-02
      nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN SOURCE大法好。
    3. nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN SOURCE大法好。
    4. 帮忙他人,成就自我——EEWORLD问答榜(9期) 4/1444 聊聊、笑笑、闹闹 2018-10-02
      nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN SOURCE大法好。
    5. 不怕水的插座 28/1850 聊聊、笑笑、闹闹 2018-10-02
      nRF24L01无线传输模块,可以实现一对多,多对一,多对多,根据nRF24L01芯片特性,可以做到多个同时运行时数据不会相互影响,这就涉及到配对问题,本人做这个的时候想到的是实时变换接受发地址,这种方法确实可用,特别是在一对多时特别好用,但是在多对一是就不是很好,会有数据丢失,所以,多对一建议用多路接收数据,再配合上本人方法相信可以解决,我没做那一部分,如果有人做了,希望可以同样分享出来学习,毕竟OPEN SOURCE大法好。
  • TA暂时无记录哦~
  • TA暂时无记录哦~
  • TA暂时无记录哦~
TA暂时无记录哦~

最近访客

现在还没有访客

< 1/0 >

统计信息

已有--人来访过

  • 芯币:25
  • 好友:--
  • 主题:1
  • 回复:5
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言