tag 标签: sx1278

相关博文
  • 热度 4
    2020-5-29 16:01
    2467 次阅读|
    0 个评论
    厂家提供的例程, OnMaster OnSlave 结构完全一样。 void OnMaster( void ) { uint8_t i; Process( ) ) { case RF_RX_TIMEOUT: …… break; case RF_RX_DONE: … break; case RF_TX_DONE: … break; default: break; } } void OnSlave( void ) { uint8_t i; Process( ) ) { case RF_RX_DONE: …. break; case RF_TX_DONE: … break; default: break; } } 很奇怪,所提供的函数里只有启动接收 StartRx( ), 没有启动发射。硬件里收发不能同时进行,也就是说芯片工作在半双工状态。 如果要发送,直接随时 SetTxPacket( Buffer, BufferSize ) 如果要检测是否收到数据,只要检查 Process( ) 的状态,如果为 RF_RX_DONE: 时,使用 GetRxPacket( Buffer, ( uint16_t* )&BufferSize ); 就可以获得数据。 在例子程序中有三个主要的状态可以使用 RF_RX_TIMEOUT RF_RX_DONE: RF_TX_DONE: 顾名思义,分别在接收超时,接收到,发送完下分别做一些处理。 比如 说,如果需要做一个应答式的收发控制。 初始化完成后。运行 StartRx( ); 让设备处于接收状态。 对于控制方,发出命令后,在 RF_TX_DONE 里面启动接收。在 RF_RX_TIMEOUT 下面重新发送命令,并计数命令重复发送的次数。 在 RF_RX_DONE 里面获取收到的数据,并判断是否正确。 对于受控一方,在 RF_RX_DONE 里面获取数据,判断是否符合要求。如果符合要求,发出应答数据。在 RF_TX_DONE 里启动接收。 OnMaster( ) OnSlave( ) 需要重复运行。实现应答。对于一对多的收发控制也可以采用类似的程序结构。 对于其它功能,可以灵活使用这些状态,关键是要搞清楚,出现这些状态时,应该如果操作。