原创 使用查询状态方式的LORA应用编程

2020-5-29 16:01 2464 43 4 分类: MCU/ 嵌入式

厂家提供的例程,OnMaster OnSlave 结构完全一样。

void OnMaster( void )

{

    uint8_t i;

    switch( Radio->Process( ) )

    {

    case RF_RX_TIMEOUT:

……

        break;

    case RF_RX_DONE:

  …

      break;

    case RF_TX_DONE:

        break;

    default:

        break;

    }

}

 

void OnSlave( void )

{

    uint8_t i;

 

    switch( Radio->Process( ) )

    {

    case RF_RX_DONE:

 ….

       break;

    case RF_TX_DONE:

        break;

    default:

        break;

    }

}

很奇怪,所提供的函数里只有启动接收 Radio->StartRx( ),没有启动发射。硬件里收发不能同时进行,也就是说芯片工作在半双工状态。

如果要发送,直接随时Radio->SetTxPacket( Buffer, BufferSize )如果要检测是否收到数据,只要检查Radio->Process( )的状态,如果为 RF_RX_DONE:时,使用    Radio->GetRxPacket( Buffer, ( uint16_t* )&BufferSize );就可以获得数据。

在例子程序中有三个主要的状态可以使用

RF_RX_TIMEOUT

RF_RX_DONE:

RF_TX_DONE:

顾名思义,分别在接收超时,接收到,发送完下分别做一些处理。

比如说,如果需要做一个应答式的收发控制。

初始化完成后。运行Radio->StartRx( );让设备处于接收状态。

对于控制方,发出命令后,在RF_TX_DONE 里面启动接收。在RF_RX_TIMEOUT 下面重新发送命令,并计数命令重复发送的次数。

RF_RX_DONE里面获取收到的数据,并判断是否正确。

对于受控一方,在RF_RX_DONE里面获取数据,判断是否符合要求。如果符合要求,发出应答数据。在RF_TX_DONE 里启动接收。

OnMaster( )  OnSlave( )

需要重复运行。实现应答。对于一对多的收发控制也可以采用类似的程序结构。

对于其它功能,可以灵活使用这些状态,关键是要搞清楚,出现这些状态时,应该如果操作。

作者: southcreek, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-408807.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
43
关闭 站长推荐上一条 /3 下一条