Silicon Labs的无线Sub-G产品Si446x已越来越多地用于电表产品,如煤气表和电表。由于TI的CC1101系列广泛应用于老仪表产品中,客户在使用Si446x时会遇到与CC1101兼容的问题,本文档将解决这一问题。
Si446x有硬件CRC,Whitening和软件CRC,Whitening,因为在不使用CRC,Whitening和Manchester的情况下,Si446x和CC1101的通信配置比较简单。请参考文档Si46xworks搭配CC 1101 _ v1.11,本文档只讨论CRC、白化、曼彻斯特同时使能时的配置方法。
Si446x提供软件CRC和白化算法支持,并与CC1101兼容。必须设置寄存器PKT_WHT_BIT_NUM0x1205的软件_WHT_CTRL和软件_CRC_CTRL,以启用软件白化和软件CRC。为了确保Si446x的开启SW白化功能可以与CC1101通信,寄存器PKT _ WHT _种子_15_80x1203和PKT _ WHT _种子_7_00x1204需要设置为0xFF。
当Si446x为发送方时,数据包格式需要配置如下:由于SW CRC和SW白化已经开启,必须关闭硬件CRC和白化,以避免重复计算CRC和白化,并且寄存器PKT_FIELD_1_CONFIG的PN_START和白化位全部清零,寄存器PKT_FIELD_1_CRC_CONFIG也配置为0x00。硬件CRC已关闭。为了发送由软件CRC计算的2个字节的CRC值,在发送数据时需要将另外两个字节作为CRC字节发送到TX FIFO,并且在配置Field1的长度时需要增加两个字节。例如,传输的数据为7字节,PKT_FIELD_1_LENGTH_12_8和PKT_FIELD_1_LENGTH_7_0配置为0x00和0x009。下图是数据长度为7的示意图,其中最后两个字节可以是任意值。
当Si446x为接收器时,数据包格式需要配置如下:
由于软件CRC和软件白化已经开启,因此必须关闭硬件CRC和白化,以避免重复计算CRC和白化。寄存器PKT_FIELD_1_CONFIG的PN_START和白化位全部清零,寄存器PKT_FIELD_1_CRC_CONFIG也配置为0x00。硬件CRC已关闭。为了发送由软件CRC计算的2个字节的CRC值,在发送数据时需要将另外两个字节作为CRC字节发送到TX FIFO,并且在配置Field1的长度时需要增加两个字节。例如,传输的数据为7字节,PKT_FIELD_1_LENGTH_12_8和PKT_FIELD_1_LENGTH_7_0配置为0x00和0x009。下图是数据长度为7的示意图,其中最后两个字节可以是任意值。
当Si446x为接收器时,数据包格式需要配置如下:
对于同一样本,由于启用了软件CRC和软件白化,因此需要将寄存器PKT_FIELD_1_CONFIG中的PN_START和白化位清零,并且寄存器PKT_FIELD_1_CRC_CONFIG也配置为0x00,以便关闭硬件CRC和白化。如果配置了寄存器PKT_CONFIG10x1206的PH_FIELD_SPLIT位,则TX和RX的寄存器是分开配置的,因此需要将寄存器PKT _ RX _ Field _ X _ Config (x=1,2)和寄存器PKT _ RX _ Field _ X _ CRC _ Config (x=1,2)的PN_START和WHITEN位清零。由于禁止硬件CRC,接收数据时不会自动接收CRC字节,接收字段2的长度只包含地址和数据。为了从空中接收CRC字节,你需要告诉IC多接收两个字节,这两个字节就是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。field 2的长度需要增加2个字节。例如,如果以上发送了7个字节,则寄存器PKT_RX_FIELD_2_LENGTH_12_8和PKT_RX_FIELD_2_LENGTH_7_0配置为0x00和0x009。
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仅用于可变数据包长度。下图显示了相应变速器的配置图。
要在上述基础上添加曼彻斯特,发送方需要将PKT_FIELD_1_CONFIG的MANCH位设置为1;接收器需要同时设置PKT_FIELD_1_CONFIG和PKT_FIELD_2_CONFIG的MANCH位,或者同时设置PKT_RX_FIELD_1_CONFIG和PKT_RX_FIELD_2_CONFIG的MANCH位。
注1、由于WDS中没有配置软件CRC和软件白化的检查选项,因此需要基于WDS配置生成一个项目,并修改项目中的相关寄存器。
2、在可变包长模式下,如果使用PACKET_INFO读取接收到的包长,则得到实际的包长,设备成功接收数据后的下一个状态不能设置为RX状态,读取的数据长度为最后接收到的数据的长度。如果成功接收数据后进入下一个状态,使用PACKET_INFO命令获得的数据将为0。这类似于读取RSSI值。
标签:CRCX寄存器