网站备案关站,此网站不支持下载视频怎么办,手机网站建设的代码,江海区建设局网站2.10 数据包长度
CC1101 支持恒定长度数据包协议和可变长度协议。可变或固定数据包长度模式能支持的长度可达 255 字节。大于255个字节的数据包#xff0c;必须使用无限数据包长度模式#xff1b;
使用不同长度的配置来支持数据包格式。必须确保在发送前半个或任何字节的时…2.10 数据包长度
CC1101 支持恒定长度数据包协议和可变长度协议。可变或固定数据包长度模式能支持的长度可达 255 字节。大于255个字节的数据包必须使用无限数据包长度模式
使用不同长度的配置来支持数据包格式。必须确保在发送前半个或任何字节的时候TX模式不被关闭
2.10.1 固定数据包长度
固定数据包长度模式通过设定PKTCTRL0.LENGTH_CONFIG0来选择。期望的数据包长度通过PKTLEN寄存器来设置不包括长度字节和可选的CRC
2.10.2 可变数据包长度
可变数据包长度模式PKTCTRL0.LENGTH_CONFIG1数据包长度由同步字后面的第一个字节配置。数据包长度定义为有效载荷不包括长度字节和可选的CRC。PKTLEN用来配置允许接收的最大数据包长度。任何接收的数据包长度大于PKTLEN的值都将被丢弃。
2.10.3 可变长数据包收发逻辑
数据包长度寄存器PKTLEN在接收和发送时可以重新编程。结合固定数据包长度模式(PKTCTRL0.LENGTH_CONFIG0)这使与变长数据包不同的长度配置成为可能。在可变数据包长度模式下长度字节是同步字节后第一个字节在接收开始数据包长度设置为一个大的值。MCU读取足够多的字节来解析数据包中的长度区域。然后依照这个值对PKTLEN进行设置。当数据包处理器中的字节计数器等于PKTLEN寄存器的值时数据包结束。因此MCU必须在内部计数器达到数据包长度之前确认正确的长度
2.10.4 无限数据包长度模式(大于255个字节)
PKTCTRL0.LENGTH_CONFIG2数据包长度将设置为无限长发送和接收将持续到手动关闭。
2.10.5 无限数据包长度收发逻辑
数据包自动控制寄存器PKTCTRL0可以在TX和RX期间重新编程。这就使发送和接收数据包长度超过256字节并且仍然使用数据包处理器硬件支持成为可能。在数据包开始时必须激活无限数据包长度模式PKTCTRL0.LENGTH_CONFIG2。在发送端PKTLEN寄存器设置为mod(长度,256)。在接收端MCU读出足够长度的字节来解析出数据包长度并设置PKTLEN寄存器为:mod(长度,256)。当数据包中还有少于256字节数据MCU禁止数据包无限长度模式并且激活固定长度模式。当内部字节计数器到PKTLEN时发送和接收结束。无线进入的状态由TXOFF_MODE 或 RXOFF_MODE决定自动CRC添加/校验也可以使用通过设置PKTCTRL0.CRC_EN1。
例子:发送一个600字节的数据包时MCU必须按照以下执行
设置PKTCTRL0.LENGTH_CONFIG2。重新设置PKTLEN寄存器的值为:60025688. (600%256 88)至少发送345字节600-255例如通过填充64字节 TX FIFO 6次发送384字节。设置PKTCTRL0.LENGTH_CONFIG0。当数据包计数器达到88发送完成。一共600字节被发送。 600个字节发送
.11 接收模式下的数据包过滤
CC1101支持三种不同类型的数据包过滤
地址过滤最大长度过滤CRC过滤
2.11.1 地址过滤
设置PKTCTRL1.ADR_CHK为任意大于0的值使能数据包地址过滤。数据包处理器启动后将比较数据包中的目标地址字节和在ADDR寄存器中设置的节点地址 或者当PKTCTRL1.ADR_CHK10时的广播地址0x00 以及PKTCTRL1.ADR_CHK11时的广播地址0x00和0xFF。 如果接收的地址匹配到一个正确地址数据包被接收并写入到RX FIFO。 如果地址匹配失败数据包将被丢弃重新启动接收模式不管MCSM1.RXOFF_MODE的设置。如果当时用无限数据包长度模式和使能地址过滤时接收地址匹配到正确的地址0xFF将被写入到RX FIFO其次是地址字节和有效载荷。
2.11.2 最大长度过滤
在可变数据包模式PKTCTRL0.LENGTH_CONFIG1PKTLEN.PACKET_LENGTH寄存器用来设置最大允许的数据包长度。如果接收的长度字节大于这个值数据包将被丢弃重新启动接收模式不管MCSM1.RXOFF_MODE的设置。
2.11.3 CRC过滤
当CRC校验失败时过滤数据包通过设置PKTCTRL1.CRC_AUTOFLUSH1使能CRC自动清除功能将在CRC校验失败时清空所有RX FIFO在自动清空RX FIFO后下一个状态依赖于MCSM1.RXOFF_MODE的设置当使用自动清除功能在可变数据包长度模式下最大数据包长度为63字节在定长数据包长度模式下是64字节注意当PKTCTRL1.APPEND_STATUS使能最大允许数据包长度将减少2个字节以确保在数据包的结尾附加的2字节的状态字节在RX FIFO中占用的空间当CRC校验错误以后全部RX FIFO被清空在接收正确的数据包前之前接收到的数据包必须从FIFO中读出。直到CRC校验正确MCU才从正确的数据包中读取数据
2.12发送模式下的数据包处理
需要发送的有效载荷必须写入到TX FIFO如果使能可变数据包长度第一个字节必须写长度字节长度字节的值等于数据包的有效载荷包含可选的地址字节如果在接收端使能地址识别写入到TX FIFO中的第二个字节必须是地址字节如果使能固定数据包长度写入到TX FIFO中的第一个字节必须是地址字节接收端使用地址识别调制器将首先发送预置数量的前导字节如果TX FIFO中有可发送的数据调制器将发送2字节可选4字节同步字紧接着是TX FIFO中的有效载荷如果使能CRC校验时计算TX FIFO中的所有数据然后跟随有效数据发送2个附加字节如果在完整的数据包发送完成之前TX FIFO变为空的无线将进入TXFIFO_UNDERFLOW状态。退出该状态的唯一方法是运行SFTX命令发送下溢后再向TX FIFO写入数据不能重启TX模式如果whitening(白化)被使能同步字后面的所有字节将被whitened。这必须在FEC/Interleaver之前完成。Whitening通过设置PKTCTRL0.WHITE_DATA1使能如果FEC/Interleaving(交错器)被使能同步字后面的所有数据在调制之前将被interleaver 和 FEC编码加密。FEC通过设置MDMCFG1.FEC_EN1使能
2.13接收模式下的数据包处理
在接收模式解调器和数据包处理器将寻找一个有效的前导和同步字。当找到后解调器将获得位和字节同步并将接收第一个有效字节。如果使能FEC/InterleaverFEC解码器将开始解码第一个有效字节。Interleaver将在数据被其他任何处理之前解密。如果使能whitening在此基础上数据将被de-whitening(反白化)。当使能可变数据包长度模式时第一个字节是长度字节。数据包处理器储存该值为数据包长度并且通过该长度字节指示接收的字节数量。如果使用固定数据包长度模式数据包处理器将接收预置数量的字节。接下来数据包处理器可选的检测地址并且只有地址匹配才继续接收。如果使能自动CRC校验数据包处理器计算CRC并与CRC校验结果相匹配。
在有效载荷的结尾数据包处理器将可选的写入两个复交数据包状态字节包括CRC状态、LQI和RSSI。
2.14 MCU数据包处理
如果在固件中执行一个数据包导向的无线协议MCU需要知道一个数据包什么时候收到/发送。加之超过64字节长度的数据包当接收时需要读取RX FIFO和当发送时TX FIFO需要重新填充。这就意味着MCU必须知道有多少个字节可以从RX FIFO中读取或者可以向TX FIFO中写入。有两种方法可以获得必要的状态信息。
中断驱动方法 当同步字接收/发送完成或者完整的数据包接收/发送通过设置IOCFGx.GDOx_CFG0x06GDO脚可以用在RX和TX中产生一个中断。 此外 IOCFGx.GDOx_CFG还有两个配置用来产生中断源于有多少字节在RX FIFO或TX FIFO。 IOCFGx.GDOx_CFG0x00和IOCFGx.GDOx_CFG0x01为RX FIFO IOCFGx.GDOx_CFG0x02和IOCFGx.GDOx_CFG0x03为TX FIFO。SPI轮询 PKTSTATUS可以使用给定的速率查询以获得GDO0和GDO2当前值。 RXBYTES 和 TXBYTES可以使用给定的速率查询以获得RX FIFO或者TX FIFO中的字节数。 合二为一的RX FIFO和TX FIFO中的字节数量可以从每次头字节、数据字节或命令选通在SPI总线上发送时MISO引脚返回的芯片状态字节读取。
推荐使用中断驱动方法因为高速率SPI轮询将减小RX的灵敏度。
2.15 RSSI
RSSI的值时在选择的通道中信号功率级别的估计。这个值基于RX中当前增益的设置和信道中的标准信号等级。在RX模式RSSI可以连续的从RSSI状态寄存器读取知道解调器检测到一个同步字当同步字检测使能。此时RSSI读取的值将被冻结知道芯片下一次进入RX状态。
RSSI的值以dBm和1/2 dB给出。 RSSI更新速率fRSSI 依赖于接收滤波带宽和AGCCTRL0.FILTER_LENGTH。
如果使能PKTCTRL1.APPEND_STATUS数据包最后的RSSI值自动添加到有效载荷后面的第一个附加字节。从RSSI状态寄存器读出的RSSI值时2个补足的数字。下面的程序可以将RSSI转换为完整的功率级别RSSI_dBm。
读取RSSI状态寄存器将读到的数据从16进制数转换到二进制数RSSI_dec如果RSSI_dec≧128RSSI_dBm (RSSI_dec - 256)/2 – RSSI_offset 4 4 ) 如果RSSI_dec128RSSI_dBm RSSI_dec /2 – RSSI_offset
2.16 净信道评估CCA
CCA用来显示当前信道是空闲还是繁忙。通过设定IOCFGx.GDOx_CFG0x09当前的CCA状态在任何一个GDO引脚都可以查看。MCSM1.CCA_MODE用来选择当确定CCA时使用的模式。当CC1101在RX状态时给出STX 或 SFSTXON命令选通仅能在净信道条件完成才能进入TX或FSTXON状态。此外芯片将仍处于RX状态。如果信道接下来变为可用的在一个新的命令选通通过SPI接口发送之前无线不会进入TX或FSTXON状态。这个特性叫做TX-if-CCA。可以编程设置4种CCA条件 始终禁止CCA总是进入TX如果RSSI低于门限值除非正常接收一个数据包以上两个RSSI低于门限值和没有正常接收一个数据包
2.17 链路质量指示LQI
信号链路质量指示是一个公制的接收信号的当前质量。若 PKTCTRL1.APPEND_STATUS启用则这个值自动附加在接收数据包的末端。这个值也可从 LQI 状态寄存器上读取。 LQI 由跟随同步词汇的 64 个符号头 8 个数据包字节计算得来。LQI 最好用作连接 质量的一个相对的度量因为这个值决定于调制格式。
2.18 上电启动序列
当电源给电系统必须复位。通过下面描述的2个序列中的一个来完成即自动上电复位POR或者手动复位。自动上电复位或手动复位之后推荐转换GDO0引脚上输出的信号。默认设置是以CLK_XOSC/192的频率输出一个时钟信号。然而为了在TX和RX中优化执行必须GD0/1/2 引脚配置中的配置来配置GDO脚。
2.18.1 自动POR
CC1101内部包含上电复位电路。最小的需求见表15完整的上电复位功能必须遵循。当CHIP_RDYn变低内部上电序列完成。在CSn拉低后在SO引脚上可以查看CHIP_RDYn。 当CC1101复位完成芯片将进入IDLE状态晶振开始运行。如果芯片在上电之后有足够的时间让晶振稳定在捕获CSn变低之后SO引脚将马上变低。如果在复位完成之前CSn被拉低SO引脚将首先变高指示晶振没有稳定变低之前见下图。 自动POR
2.18.2 手动复位
CC1101上的其它全部复位时使用SRES命令。通过执行这个命令所有内部寄存器和状态恢复默认IDLE状态。手动复位序列如下图 手动复位
设置SCLK1SI0避免引脚控制模式可能出现的问题。选通CS低/高。保持CS为低然后拉高至少40us才可以拉低将CSn拉低等到SO拉低CHIP_RDYn。在SI线上发布SRES选通。当SO再一次拉低复位完成芯片进入IDLE状态 手动复位
注意以上复位程序只需要在电源给电之后。如果用户在这之后想要复位CC1101只需要执行SRES命令选通。
2. 19无线唤醒WOR
当使能WOR时芯片不需要MCU干预自动周期性的从深睡中醒来接收数据
当WOR使能时MCU送出SWOR命令后CC1100就释放CSn进入SLEEP状态。在送出WOR前必须使能RC振荡器它是WOR定时器的时钟源(750/)它会是芯片进入IDLE然后睡RX状态如果没有接收到数据包在设定的时间后重新从RX状态回到SLEEP状态。
WOR定时器有两个事件EVENT0和EVENT1。当WOR激活时在SLEEP中到达EVENT0时就打开数字校准器启动晶振。在EVENT0设定地时间后出现EVENT1。
CC1100 WOR有两种不同地方式有或没有自动同步。