TPMS 收发芯片之CC1101数据包长度
同步字是在SYNC1和SYNC0寄存器中设置的双字节值。同步字提供传入分组的字节同步。通过将SYNC1值设置为前同步码模式,可以模拟一个字节的同步字。也可以通过使用MDMCFG2.SYNC_MODE设置为3或7来模拟32位同步字。然后,同步字将重复两次。
CC1101既支持恒定分组长度协议,也支持可变长度协议。可变或固定分组长度模式可用于最大255字节的分组。对于较长的数据包,必须使用无限数据包长度模式。
通过设置PKTCTRL0.LENGTH_CONFIG=0选择固定数据包长度模式。所需的数据包长度由PKTLEN寄存器设置。
在可变数据包长度模式下,PKTCTRL0.LENGTH_CONFIG=1,数据包长度由同步字后的第一个字节配置。数据包长度定义为有效载荷数据,不包括长度字节和可选的CRC。PKTLEN寄存器用于设置RX中允许的最大数据包长度。接收到的长度字节的值大于PKTLEN的任何分组都将被丢弃。
当PKTCTRL0.LENGTH_CONFIG=2时,数据包长度设置为无限大,发送和接收将继续,直到手动关闭。如下节所述,这可用于支持长度配置不同于CC1101本机支持的数据包格式。应确保在传输任何字节的前半部分时不关闭TX模式。有关详细信息,请参阅CC1101勘误表说明[1]。
请注意,支持的最小数据包长度(不包括可选的长度字节和CRC)是一个字节的有效载荷数据。
15.2.1任意长度字段配置。
数据包长度寄存器PKTLEN可在接收和发送期间重新编程。与固定数据包长度模式(PKTCTRL0.LENGTH_CONFIG=0)相结合,可以使用与可变长度数据包不同的长度字段配置(在可变数据包长度模式中,长度字节是同步字之后的第一个字节)。在开始接收时,将分组长度设置为较大的值。MCU读出足够的字节来解释包中的长度字段。然后根据该值设置PKTLEN值。当数据包处理程序中的字节计数器等于PKTLEN寄存器时,数据包结束。因此,在内部计数器达到包长度之前,MCU必须能够对正确的长度进行编程。
15.2.2数据包长度>255。
此外,分组自动控制寄存器PKTCTRL0可在TX和RX期间重新编程。这使得发送和接收长度超过256个字节的包,并且仍然能够使用包处理硬件支持成为可能。在数据包开始时,无限数据包长度模式(PKTCTRL0.LENGTH_CONFIG=2)必须有效。在发送端,PKTLEN寄存器设置为mod(长度,256)。在接收端,MCU读出足够的字节来解释包中的长度字段,并将PKTLEN寄存器设置为mod(长度,256)。当分组剩余少于256字节时,MCU禁用无限分组长度模式,并激活固定分组长度模式。当内部字节计数器达到PKTLEN值时,发送或接收结束(无线电进入由TXOFF_MODE或RXOFF_MODE确定的状态)。也可以使用自动CRC添加/检查(通过设置PKTCTRL0.CRC_EN=1)。
例如,当要传输一个600字节的包时,MCU应该执行以下操作(另请参见图12)
·设置PKTCTRL0.LENGTH_CONFIG=2。
·将PKTLEN寄存器预编程为mod(600,256)=88。
·发送至少345字节(600-255),例如通过六次填充64字节TX FIFO(发送384字节)。
·设置PKTCTRL0.LENGTH_CONFIG=0。
·当数据包计数器达到88时,传输结束。总共传输600个字节。
数据包处理程序中的内部字节计数器从0计数到255,然后再次从0开始
注:以上来自网络整理