一、功能介绍
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 才产生完整的接收中断。
2.4 注意事项
提前中断功能只支持读取两种数据长度,即 8 字节 /16 字节,分别 PLHD_LEN8/PLHD_LEN16 表示。不可以使用自定义参数。
提前中断功能获取数据时,使用 PAN3028_plhd_receive() 接口函数,与普通数据包 PAN3028_recv_packet() 接口函数不同,其内部 FIFO 地址不同。
来源:武汉芯源半导体
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。