一、功能介绍 CW32W031 提前中断功能是在芯片读取一帧数据的过程中,查看已经解出来的数据,判断是不是自己想要的, 再决定继续读取还是放弃这帧数据。 流程图如下所示: 图 1-1 提前中断流程图 二、软件设计参考 2.1 软件设计流程 1. 芯片初始化; 2. 将芯片配置为提前中断模式; 3. 通过寄存器设置包头长度,或者称为计数器门限值。提前中断功能需要设置确定从第几个字节开始检查, 以及检查多少个字节的数据(只支持 8 字节或 16 字节,分别使用 PLHD_LEN8/PLHD_LEN16 表示); 4. 芯片进入接收模式; 5. 芯片接收数据,内部计数器开始计数,收到一个字节加 1,直至计数器达到包头长度之后,芯片会产生 提前中断信号,供软件读取; 6. 软件判断是否为自己想要的数据,如果是,则继续往下读取,如果不是,则停止读取
2.2 软件设计验证 2.2.1 验证步骤 1. 发送模组周期性发送 100 字节数据包,前 30 字节数据为 2. 接收模组配置提前中断模式,并设置从第 5 字节开始,共检查 16 字节数据; 3. 当产生提前中断信号时,将提前中断得到的数据打印出来; 4. 继续往下接收,将本帧数据全部打印出来; 5. 通过串口助手查看打印结果。 2.2.2 SDK 示例 main.c 参考代码: 示例代码配置了提前中断模式,并设置从第 5 字节开始,共检查 16 字节数据。接收到提前中断信号后,主 函数中选择将提前中断接收到的内容打印出来,并继续接收;随后模组会再产生一个接收中断信号,主函数 中再将完整接收到的数据内容打印出来。 如果需要提前中止接收,只需要在接收到提前中断信号后执行“PAN3028_rst();”,即: 2.2.3 验证结果 串口助手显示结果为: 根据结果显示,接收模组发生了提前中断,获取到了指定的数据,并继续执行接收,接收到完整数据包。
2.3 逻辑分析仪抓取 2.3.1 验证步骤 1. 发送模组周期性发送数据包; 2. 接收模组分别使用提前中断接收模式和正常接收模式进行接收 3. 使用逻辑分析仪 Channel1 抓取提前中断信号,Channel1 抓取正常接收端信号 2.3.2 验证结果 抓取结果如下图所示: 图 2-1 逻辑分析仪抓取结果 由结果可以看出,提前中断接收模式在 1.35ms 时就产生了提前中断,供用户判断。正常接收模式需要在 57.39ms 才产生完整的接收中断。
注意事项 提前中断功能只支持读取两种数据长度,即 8 字节 /16 字节,分别 PLHD_LEN8/PLHD_LEN16 表示。不可以使用自定义参数。 提前中断功能获取数据时,使用 PAN3028_plhd_receive() 接口函数,与普通数据包 PAN3028_recv_packet() 接口函数不同,其内部 FIFO 地址不同。
|