Silicon Labs无线收发器SI446x的应用技巧超详细讲解

silicon labs的无线sub-g产品si446x现在已经越来越多的用于表计产品,如气表、电表等。由于在表计类老产品中ti的cc1101系列应用非常广泛,所以客户使用si446x时,就会遇到和cc1101兼容问题,本文档将解决此问题。
si446x 具有硬件crc、whitening和软件crc、whitening,因为不使用crc、whitening和manchester 时,si446x和cc1101通信配置比较简单,可以参照si446x works with cc1101_v1.11.pdf文档,本文档只讨论crc、whitening和manchester同时使能时配置方法。
si446x 提供软件crc、whitening算法支持和cc1101兼容,需要将寄存器pkt_wht_bit_num 0x1205的sw_wht_ctrl和sw_crc_ctrl位置1,使能sw whitening和sw crc。为了确保si446x开启sw whitening特性可以和cc1101通信,寄存器pkt_wht_seed_15_8 0x1203和pkt_wht_seed_7_0 0x1204需要都设置为0xff。
si446x最为发送端时,包格式需配置如下: 由于已经开启sw crc和sw whitening,所以必须关闭硬件crc和whitening,以免重复计算crc和whitening,寄存器 pkt_field_1_config的pn_start和whiten位都清零,寄存器pkt_field_1_crc_config也配置为 0x00。关闭了硬件crc,为了发送由软件crc计算出的2个字节crc的值,发送数据时需要多发送两个字节给tx fifo作为crc字节,并且配置field1的长度时,也需要额外增加2个字节。比如发送数据为7个字 节,pkt_field_1_length_12_8和pkt_field_1_length_7_0则配置成0x00,0x09。下图是数据长度为7的 示意图,其中最后两个字节可以是任意值。
si446x最为接收端时,包格式需配置如下:
由 于已经开启sw crc和sw whitening,所以必须关闭硬件crc和whitening,以免重复计算crc和whitening,寄存器 pkt_field_1_config的pn_start和whiten位都清零,寄存器pkt_field_1_crc_config也配置为 0x00。关闭了硬件crc,为了发送由软件crc计算出的2个字节crc的值,发送数据时需要多发送两个字节给tx fifo作为crc字节,并且配置field1的长度时,也需要额外增加2个字节。比如发送数据为7个字 节,pkt_field_1_length_12_8和pkt_field_1_length_7_0则配置成0x00,0x09。下图是数据长度为7的 示意图,其中最后两个字节可以是任意值。
si446x最为接收端时,包格式需配置如下:
同 样由于使能了sw crc和sw whitening,需要将寄存器pkt_field_1_config的pn_start和whiten位都清零,寄存器 pkt_field_1_crc_config也配置为0x00,关闭硬件crc和whitening。如果配置了寄存器pkt_config1 0x1206的ph_field_split位,则tx和rx的寄存器分开配置,需要将寄存器pkt_rx_field_x_config (x = 1, 2)的pn_start 和whiten位清零,寄存器pkt_rx_field_x_crc_config (x = 1, 2)设置为0x00。由于禁止了硬件crc,接收数据时就不会自动接收crc字节,并且接收的field2的长度只包含了address和data。为了 能够从空中接收crc字节,则需要告诉ic多接收2个字节,这2个字节就是crc字节,所以需要调整接收端的包的长度,分以下两种情况配置。
1、接收端配置为固定包长模式(寄存器pkt_len的endian位是0) a、 如果ph_field_split位是0,则feild1长度配置成1,寄存器pkt_field_1_length_12_8和 pkt_field_1_length_7_0配置成0x00,0x01.feild2的长度需要加2个字节,比如上面发送7个字节,则寄存器 pkt_rx_field_2_length_12_8和pkt_rx_field_2_length_7_0配置成0x00,0x09。
b、ph_field_split位是1,则上面的寄存器就是对应的pkt_rx_field_1_length和pkt_rx_field_2_length。
2、接收端配置为可变包长模式 则 pkt_len需配置为0x21,pkt_len_field_source配置为0x02,表示开启可变包长模式,feild1是不可变的区 域,feild2是可变包长区域。这种情况,可以配置pkt_len_adjust为0x02,接收端在接收数据时会自动增加2个字节。 pkt_len_adjust只针对可变包长。如下图为对应发射的配置图。
在 上述基础上增加manchester,发送端需将pkt_field_1_config的manch位置1;接收端需同时将 pkt_field_1_config和pkt_field_2_config的manch位置1,或者是同时将 pkt_rx_field_1_config和pkt_rx_field_2_config的manch位置1。
注意: 1、由于wds中没有留出勾选项来配置sw crc和sw whitening,所以需要在wds配置基础上生成工程,在工程中去修改相关寄存器。
2、 在可变包长模式中,如果使用packet_info来读取接收到的包长,得到的是实际的包长,并且设备接收数据成功后的下一个状态不可以设置为rx状态, 读到的数据长度是最后一次收到数据的长度。如果接收数据成功后就进入下一个状态,那么使用packet_info命令得到数据会是0。这与读取rssi值 是类似的。

8(八)路触发锁存电路
声雅SA-38功放电源电路图
A3只是起点,中国移动将牵手YunOS迈入5G时代
stm32mp1 Cortex M4开发篇8:扩展板LED灯控制实验
交错马刺:时序不匹配的数学
Silicon Labs无线收发器SI446x的应用技巧超详细讲解
全球5G套餐总览:人均月流量60G,最低资费30元/G
使用系统IO和标准IO的基本原理
美国开发移动式无线充电技术:实现电能无线传输,让汽车可以在行驶中充电
科大讯飞人脸比对方案 demo python3语言API文档
供应链平台物流、售后管理功能详解:SCM系统软件撬动新能源汽车企业发展空间
所谓的纯电动汽车未必就是纯粹的电动汽车
基于泰勒综合法的均匀阵列
联想集团副总裁放出了一张Z6 Pro状态栏的实拍图,让很多人惊呆了
基于PMBus的DC/DC转换器负载点解决方案
模拟仿真技术:SPICE常用的建模方法和步骤
洗衣机使用后八成存在病菌
小米6什么时候上市:小米6搭载国产处理器,缺货赔三!
一加5、小米6和荣耀9谁更值得买?一加5、小米6和荣耀9深度区别对比评测
对称半桥LLC电路原理讲解