【经验】应用技巧:如何轻松实现无线收发器硬件CRC校验?
【摘要】在数据传输过程中,差错总是不可避免,CRC校验是检查错误数据帧的方法之一。本文以变长包为例,分析了Si446x硬件CRC的设置。
在数据传输过程中,无论传输系统的设计再怎么完美,差错总会存在,这种差错可能会导致在链路上传输的数据出现比特差错,从而使接收方接收到错误的数据。如何快速的检查出这些错误的数据帧?CRC校验是一个非常常用的办法。SILICON LABS 公司提供的Si446x无线收发器支持硬件CRC校验,在WDS软件中点点鼠标就能快速完成CRC相关的设置,本文以变长包的范例,来做Si446x硬件CRC的设置。
CRC的基本配置步骤
1)打开WDS软件,选择empty工程,除CRC以外的参数按照实际应用配置好。
2)在WDS的“packet”选项卡中,变长包第一字节的长度连同数据部分一起计算CRC。如图1所示,长度字节部分只勾选CRC使能项“enable CRC over this field”。
图1:变长包长度字节计算CRC
如图2所示,设置好CRC计算因式和CRC seed,一般都是全1,如果有其他的特殊需求,请按照实际来设置。Field2数据部分勾选3个勾, “Transmit CRC at the end of this field”、 “check CRC at the end of this field ”、“enable CRC over this field”这样就把长度和数据一起计算了CRC。数据发送的时候会把CRC计算好并发送出去,接收端会收到这个CRC并完成校验。
图2:配置CRC设置
3)配置好了CRC设置,还需要把CRC的中断使能。如图3所示,在“Interrupt”选项卡中,勾选上CRCE,使能CRC中断。当发生CRC校验错误的时候,CRCE 这个位会被置1,同时Nirq引脚会从高电平变成低电平,及时的通知到MCU关于CRC的校验结果。
图3:使能CRC中断
4)在check TX RX的函数中添加CRC代码:
if(Si446xCmd.GET_INT_STATUS.PH_PEND& SI446X_CMD_GET_INT_STATUS_REP_PH_PEND_PACKET_RX_PEND_BIT)
{
/* Packet RX */
/* Get payload length */
si446x_fifo_info(0x00);
si446x_read_rx_fifo(Si446xCmd.FIFO_INFO.RX_FIFO_COUNT, &customRadioPacket[0]);
return SI446X_CMD_GET_INT_STATUS_REP_PH_PEND_PACKET_RX_PEND_BIT;
}
//CRC 错误中断
if (Si446xCmd.GET_INT_STATUS.PH_PEND & SI446X_CMD_GET_INT_STATUS_REP_PH_STATUS_CRC_ERROR_BIT)
{
/* Reset FIFO */
si446x_fifo_info(SI446X_CMD_FIFO_INFO_ARG_FIFO_RX_BIT);
//如果需要重新接收数据,可在这里添加重新开启接收的代码。
//主要视start RX函数里面的3个状态参数和实际应用来决定CRC中断之后需要做的事情
}
除CRC基本配置以外,以下为扩展阅读。
从图4可以看出,B版本默认的CRC种子是全1,也就是FF。
但是C版本默认的CRC种子是全0。所以在配置C版本的芯片要和B版本通讯时,CRC的种子要设置为FF FF FF FF(全1)即可。
图4:B版本和C版本的CRC设置对比
C版本的正确配置如下:
图5:C版本的正确配置
当然,如果B版本配置的种子是全0,C版本的种子也要配置全0。其他的地方都可以不改,但是WDS中有以下几项会和CRC有关,请注意检查是否一致:
图6:WDS中和CRC的相关项设置
- |
- +1 赞 0
- 收藏
- 评论 1
本网站所有内容禁止转载,否则追究法律责任!
相关推荐
【经验】低电流无线收发器锁存RSSI值读取该如何操作?
Silicon Labs 无线收发器Si446x或者Si4438开发产品的时候,应用代码中很多需要使用到信号强度RSSI值。
设计经验 发布时间 : 2017-08-17
【经验】如何把Sub-GHz无线收发器评估板变成抓包工具
在无线射频开发调试过程中,抓包工具也是必不可少的一员,Silicon labs推出的Sub-Ghz无线收发器Si446x也能秒变抓包工具,本文就针对此过程进行了详细介绍。
设计经验 发布时间 : 2019-09-03
【经验】低电流无线收发器实时RSSI值读取该如何操作?
Silicon Labs 无线收发器Si446x或者Si4438开发产品的时候,应用代码中很多需要使用到信号强度RSSI值。
设计经验 发布时间 : 2017-08-20
芯科科技携手东胜物联提升Sub-GHz网关和智能安防产品开发,互联互通更可靠到位
芯科科技携手东胜物联提升Sub-GHz网关和智能安防产品开发,互联互通更可靠到位。通过芯科科技EFR系列多协议无线SoC产品和相关软件开发工具的支持,东胜物联推出了一系列无线模块及可编程和多协议物联网网关设备,可广泛涵盖最新版本的蓝牙、Sub-GHz、Zigbee、Z-Wave和Matter等热门无线协议的网络连接设计。
原厂动态 发布时间 : 2024-01-12
【经验】如何配置寄存器,实现无线收发器LDC低功耗接收功能?
Silicon labs公司的si4438/si446x系列Sub-Ghz无线收发器支持LDC低功耗接收功能,本文讲述的就是实现LDC低功耗接收功能的方法及步骤。
设计经验 发布时间 : 2018-03-23
【经验】 Si446x Sub-Ghz频段无线收发器的GND引脚该如何处理?
Si446x 是silicon Labs公司的一款高性能Sub-Ghz频段的无线收发器。广泛用于室内照明及智能家居,安防监控,楼宇自动化,测量及四表等领域。Si446x芯片的pin18引脚和芯片底部焊盘都是GND,在设计的时候该如何处理?
设计经验 发布时间 : 2019-08-30
Si4460无线收发器是否支持直接模式?是如何实现数据收发的?
对于在主机MCU内或其他基带芯片内执行数据包处理的传统系统,不适合使用FIFO。对于这种情况,Si4460无线发射器提供可完全绕过FIFO的直接模式。在TX直接模式下,TX调制数据被应用于芯片的输入引脚并进行“实时”处理(即不会存储在寄存器中稍后发送)。任何GPIO可被配置成TX数据输入功能来使用。而且,如果需要GFSK调制,则TX时钟输出功能需要一个额外的引脚(FSK只需要TX数据输入引脚)。为达到直接模式,GPIO必须在“GPIO_PIN_CFG”API命令和“MODEM_MOD_TYPE”API属性中进行配置。对于GFSK,“TX_DIRECT_MODE_TYPE”必须设置到同步。对于2FSK或OOK,类型可设置为异步或同步。对于所有的直接模式配置,MOD_SOURCE[1:0] 应设置为01h。在RX直接模式下,RX数据和RX时钟可被编程以实现直接(实时)输出到GPIO引脚,然后微控制器可以在不使用FIFO或RFIC分组处理程序功能的情况下处理RX数据。
技术问答 发布时间 : 2017-05-10
【经验】无线收发器如何实现超长前导码发送?
Silicon Labs sub-GHz无线收发器si446x控制前导码长度的寄存器只有1个字节,最长只可发送255字节的前导码,这种超长的前导码该如何发送呢?本文将详细介绍具体实现。
设计经验 发布时间 : 2018-03-21
【选型】Si4x6x系列Sub-Ghz频段的小无线收发器B1B与C2A版本在应用选型上的区别
本文主要介绍Si4x6x系列产品中各个版本的特性区别,为广大设计者解答使用Si4x6x产品选型时的困惑。Si4x6x存在B1B与C2A两个版本,C2A是B1B的升级版本,C2A版本的参数性能比B1B版本的更优异。因此建议设计者在为新项目选型时,选择Si4x6x-C2A版本。
器件选型 发布时间 : 2019-07-31
Si446x无线收发器的direct Tx发射模式,支持同步和异步模式吗?如何配置?
Si446x无线收发器的direct Tx发射模式,支持同步和异步模式。同步模式比异步模式多了TX_DATA_CLK。Si446x 默认是同步模式。可以通过修改MODEM_MOD_TYPE寄存器的TX_DIRECT_MODE_TYPE位来选择同步或异步模式,可以阅读Si446x API文档中TX_DIRECT_MODE_TYPE位的详细说明。
技术问答 发布时间 : 2017-05-10
在配置Si446x无线收发器作为direct TX模式发送数据,作为数据输入的引脚应该如何配置?
Si446x无线收发器作为direct TX模式发送数据,可以任意选择一个期望GPIOx口配置为input模式(GPIO_PIN_CFG=0x04),同时配置MODEM_MOD_TYPE寄存器的TX_DIRECT_MODE_GPIO位,设置期望的GPIO为数据输入引脚。在WDS无线开发软件的direct tx工程配置中,只需要把期望的GPIO设置为input模式,WDS就会自动设置TX_DIRECT_MODE_GPIO位,因此让WDS软件辅助配置会更加快捷。特别说明:支持direct Tx模式的数据输入引脚只有GPIO0、GPIO1、GPIO2、GPIO3,其他nIRQ和SDO等引脚不支持此功能。
技术问答 发布时间 : 2017-05-10
【经验】如何实现Sub-GHz无线收发器Si446x/Si4438 LDC+DSA超低功耗接收功能?
Silicon labs公司的si4438/si446x系列Sub-Ghz无线收发器支持LDC低功耗接收功能,C2版本的芯片还支持DSA功能,可以进一步降低接收电流,本文介绍如何实现LDC+DSA低功耗接收功能的方法及步骤。
设计经验 发布时间 : 2019-06-29
无线收发芯片Si4463读取RSSi,读取到的RSSi锁存的值均为0,为什么?
出现这个问题,主要是因为在接收到数据之后重新进入了RX状态,所以需要在接收到数据之后切换工作状态到ready状态就可以了。
技术问答 发布时间 : 2017-05-10
在开发Si4463的时候,在网上找了一些参考程序,可以使用吗?
网上找的代码不知道出处,不建议使用。可以使用WDS配置软件生产一套跟实际使用相近的工程,生产的工程里有完整的程序代码,该套代码是官方提供的可供参考。另外该套程序里的lib.c文件有定义更多的API函数,一般的应用基本都包含了,完全可以参考使用。
技术问答 发布时间 : 2017-05-10
【经验】低功耗无线收发器Si4438、Si446x的CCA功能该如何选择
Silicon Labs推出的无线收发器Si4438和Si446x是EZRadioPRO系列产品的主打型号,提供行业领先的射频性能,具有杰出的灵敏度优异的射频性能广泛应用于物联网、智能家居、智能工业、四表等市场。空闲信道评估的两种模式:CCA和CCA_LATCH在实际应用中需要根据应用场景灵活选取。
设计经验 发布时间 : 2019-04-09
电子商城
品牌:SILICON LABS
品类:HIGH-PERFORMANCE LOW-CURRENT TRANSCEIVER
价格:¥15.8878
现货: 2,359
品牌:SILICON LABS
品类:HIGH-PERFORMANCE LOW-CURRENT TRANSCEIVER
价格:¥16.5384
现货: 2,355
品牌:SILICON LABS
品类:HIGH-PERFORMANCE LOW-CURRENT TRANSCEIVER
价格:¥12.3574
现货: 1,480
品牌:SILICON LABS
品类:HIGH-PERFORMANCE LOW-CURRENT TRANSCEIVER
价格:¥17.5602
现货: 150
品牌:SILICON LABS
品类:HIGH-PERFORMANCE LOW-CURRENT TRANSCEIVER
价格:¥16.3528
现货: 29
品牌:SILICON LABS
品类:HIGH-PERFORMANCE LOW-CURRENT TRANSCEIVER
价格:¥16.5384
现货: 10
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:126,000
服务
提供是德(Keysight),罗德(R&S)测试测量仪器租赁服务,包括网络分析仪、无线通讯综测仪、信号发生器、频谱分析仪、信号分析仪、电源等仪器租赁服务;租赁费用按月计算,租赁价格按仪器配置而定。
提交需求>
可定制胶棒天线频率范围包括GSM/GRPS/2G/3G/5G/2.4G/5G/5.8GHZ/WIFI/蓝牙、LoRa、433/470/315/868/915Mhz/NB等;增益:0~15dBi;天线尺寸、接口连接器可按需定制。
最小起订量: 1000 提交需求>
登录 | 立即注册
提交评论