PAN211x 安规软件推荐配置¶
1 安规电流配置¶
在切换Tx和Rx状态之前,需要修改VCO电流配置:Page1 0x42[3:0],Tx状态配置为4,Rx状态配置为0。这里的Tx和Rx状态不仅包括普通模式的发射和接收状态,还包括增强模式中的发射Ack包、发射重传、重传等待Ack等硬件自动切换的发射和接收状态。
示例代码如下:
/**
* @brief 准备发送状态
* @note 在进入发送状态前调用一次即可,无需重复调用
*/
void PAN211_PrepareTx(void)
{
PAN211_WriteReg(0x00, 0x01);
PAN211_WriteReg(0x42, 0xa4);
PAN211_WriteReg(0x00, 0x00);
}
/**
* @brief 准备接收状态
* @note 在进入接收状态前调用一次即可,无需重复调用
*/
void PAN211_PrepareRx(void)
{
PAN211_WriteReg(0x00, 0x01);
PAN211_WriteReg(0x42, 0xa0);
PAN211_WriteReg(0x00, 0x00);
}
下面分别解释普通模式和增强模式应该如何使用。
1.1 普通模式¶
普通模式Tx:芯片初始化完成后,调用
PAN211_PrepareTx()
,然后调用PAN211_SendPacket()
发送数据。示例代码如下:PAN211_PrepareTx(); PAN211_SendPacket(...); ...
普通模式Rx:芯片初始化完成后,调用
PAN211_PrepareRx()
,然后调用PAN211_RxStart()
接收数据。示例代码如下:PAN211_PrepareRx(); PAN211_RxStart(); ...
如需切换Tx/Rx,需要重新调用
PAN211_PrepareTx
或PAN211_PrepareRx
。
1.2 增强模式¶
增强模式下,每次发生Tx/Rx状态切换之前都要调用PAN211_PrepareTx()
或PAN211_PrepareRx()
。
由于增强型的通信过程中硬件自动切换发射和接收状态,使用者需要根据当前使用的总线接口速度配置适当的TRx切换延时时间(TRX_TRANS_DELAY)并在中断来临时及时调用PAN211_PrepareTx()
或PAN211_PrepareRx()
。如果没有及时配置,可能严重影响后续发射或接收性能。
使用方法:
调整TRX状态切换延时:以增强模式Tx为例,在完成Tx发射数据之后,硬件会在一段时间内切换到Rx状态,等待ACK。为了在Tx转换为Rx的期间完成配置修改,需要手动调整TRX状态切换延时
TRX_TRANS_DELAY
。以250kbps SPI操作速度为例,完成一次寄存器操作至少需要64us,完成中断寄存器读取和PAN211_PrepareTx()
等接口需要约250us。因此,在这种情况下,建议TRX_TRANS_DELAY
至少设置为300us以上,尽可能留有余量。增强模式Tx:芯片初始化完成后,调用
PAN211_PrepareTx()
,收到Tx中断后,立即调用PAN211_PrepareRx()
。示例代码如下:PAN211_PrepareTx(); PAN211_SendPacket(...); ... while(1) { if (TX_IRQ) { // 检测到Tx中断后,硬件会自动切换到Rx,这里需要尽快准备好 PAN211_PrepareRx(); ... } else if (RX_IRQ) { ... } else if (CRC_ERR_IRQ) { ... } }
增强模式Rx:芯片初始化完成后,调用
PAN211_PrepareRx()
,收到Rx中断后,立即调用PAN211_PrepareTx()
。示例代码如下:PAN211_PrepareRx(); PAN211_RxStart(); while (1) { ... if (RX_IRQ) { // 检测到Rx中断后,硬件会自动切换到Tx,这里需要尽快准备好 PAN211_PrepareTx(); ... } else if (TX_IRQ) { // 检测到Tx中断后,硬件会自动切换到Rx,这里需要尽快准备好 PAN211_PrepareRx(); ... } else if (PID_ERR_IRQ) { ... } else if (CRC_ERR_IRQ) { ... } }