本节描述如何控制发送器、组装帧处理以及如何使用TXFIFO。
1)TX控制
无线模块有许多内置的功能,用于处理帧和报告状态。注意,无线模块提供的功能可以很容易地精确控制输出帧的时序。这在IEEE 802.15.4/ZigBee系统中是非常重要的,因为这类系统有严格的时序要求。
帧传输通过以下操作开始:
(1)STXON命令选通。没有更新SAMPLED-CCA信号。
(2)STXONCCA命令选通,只要CCA信号为高。
①中止正在进行的发送/接收,强制一个TX校准,然后再传输。
②更新了SAMPLED-CCA信号。
帧传输通过以下命令操作中止:
(1)SRXON命令选通。中止正在进行的传输,强制一个RX校准。
(2)SRFOFF命令选通。中止正在进行的发送/接收,强制FSM到IDLE状态。
(3)STXON命令选通。中止正在进行的传输,强制一个RX校准。
STXON发送之后要使能接收器,必须设置FRMCTRL1.SET-RXENMASK-ONTX位。
2)TX状态时序
STXON或STXONCCA命令选通192μs之后开始传输帧引导序列,这叫做TX轮转时序。返回到接收模式也有同样的延迟。
当返回到空闲或接收模式,调制器把信号送往DAC时有2μs的延迟。这一输送在已经发送一个完整的MPDU(由长度字节定义)或发生TX溢出之后自动发生。这会影响:
(1)SFD信号,延长了2μs。
(2)无线模块FSM转换到IDLE状态,延迟了2μs。
3)TX FIFO访问
TX FIFO可以保存128字节,一次只能有一个帧。帧可以在执行TX命令选通之前或之后缓冲,只要不产生TX下溢。
有两种方式写入TXFIFO:
(1)写到RFD寄存器。
(2)帧缓冲总是开始于TX FIFO存储器的起始地址。通过使能FRMCTRL1.IGNORE-TX-UNDERF位,可以直接写到无线模块存储器的RAM区域,它保存TX FIFO。注意,建议使用RFD写数据到TXFIFO。
TXFIFO中的字节数存储在TXFIFOCNT寄存器中。TXFIFO可以使用SFLUSHTX命令选通手动清空。如果FIFO在传输期间被清空就发生TX下溢。
4)重传
为了支持简单的帧重传,无线模块不会删除TXFIFO的内容,因为它们正在传输。成功发送一个帧后,FIFO的内容保持不变。要重传同一个帧,只需通过发出一个STXON或STXONCCA命令选通重新启动TX。注意,只有数据包已经被完全发送才可以重传一个数据包,即数据包不能中止。
如果传输一个不同的帧,就要写新的帧到TXFIFO。在这种情况下,TXFIFO在实际写入发生之前自动清除。
5)错误情况
有两种错误情况与TXFIFO相关:
(1)当TXFIFO满了且尝试写另一个字节,发生上溢。
(2)当TXFIFO为空且无线模块尝试取另一个字节传输,发生下溢。
TX上溢通过设置TX-OVERFLOW中断标志位表示。当发生这个错误,写入被中止,即导致溢出的数据字节丢失。错误状态必须使用SFLUSHTX选通命令清除。(www.xing528.com)
TX下溢通过设置TX-UNDERFLOW中断标志位表示。当发生这个错误,正在进行的传输被中止。错误状态必须使用SFLUSHTX选通命令清除。
TX-UNDERFLOW异常可以通过设置FRMCTRL1.IGNORE-TX-UNDERF位禁用。在这种情况下,无线模块继续传输TXFIFO存储器中的字节,直到传输了第一个字节(即长度字节)给定的字节数。
6)帧处理
无线模块为TX帧执行以下帧产生任务(如表7-9所示):
(1)产生并自动传输PHY层同步头,它包括帧引导序列和SFD。
(2)传输帧长度域指定的字节数。
(3)计算并自动传输FCS(可以禁用)。
表7-9 帧产生任务
推荐用法是写帧长度域,然后写MAC头和MAC负载到TXFIFO,让无线模块处理其余部分。注意,帧长度域必须包括两个FCS字节,即使无线模块自动处理这些字节。
7)同步头
无线模块有可编程的帧引导序列长度。默认值遵守标准规范,改变该值会使系统不兼容于IEEE 802.15.4。
帧引导序列长度由MDMCTRLO.PREAMBLE-LENGTH设置。当已经发送了所需的帧引导序列字节数,无线模块自动发送1字节长的SFD。SFD是固定的,软件不能改变这个值。
8)帧长度域
当发送了SFD,调制器开始从TXFIFO读数据。它期望找到帧长度域,然后是MAC头和MAC负载。帧长度域用于确定要发送多少个字节。
注意,当AUTOCRC=1时,最小帧长度是3;当AUTOCRC=0时,最小帧长度是1。
9)帧校验序列
当设置了FRMCTRLO.AUTOCRC控制位,FCS域自动产生并填充到发送帧的长度域定义的位置。FCS不写到TX FIFO中,但是存储在一个单独的16位寄存器中。建议总是使能AUTOCRC,除了可能用于调试目的。如果FRMCTRLO.AUTOCRC=0,那么调制器期望在TXFIFO中找到FCS,所以软件必须产生FCS,连同MPDU的其余部分写进TXFIFO。
10)中断
当帧的SFD域已被发送就产生SFD中断。帧结束后,当成功发送一个完整的帧,产生TX-RM-DONE中断。
注意,在GPIO中有第二个SFD信号可用(通过无线模块观测复用器),不能和SFD中断混淆。
11)空闲通道评估
空闲通道评估(CCA)状态信号表示通道是否可用于传输。CCA功能用于实现IEEE 802.15.4标准指定的CSMA-CA功能。RSSI-VALID状态信号可以用于验证这一点。
CCA基于RSSI值和一个可编程的阈值。精确的操作可在CCACTRL0和CCACTRL1中配置。
CCA信号有两个版本,一个在每个新的RSSI采样更新一次,一个只在SSAMPLECCA/ISAMPLECCA和STXONCCA/ISTXONCCA命令选通更新。它们在FSMSTAT1寄存器中都是可用的。
注意,CCA信号在设置RSSI-VALID信号4个时钟周期(系统时钟)之后更新。
12)输出功率编程
RF输出功率由TXPOWER寄存器的7位值控制。CC2530数据手册显示了当中心频率设置为2.440GHz时,推荐设置的一般输出功率和电流消耗。注意,推荐的设置只是所有可能的寄存器设置的一个很小的子集。
13)提示和技巧
(1)注意,在开始传输之前,TX FIFO不需要有完整的帧。字节可以在传输期间增加到TXFIFO。
(2)通过设置MDMTEST1.MODULATION-MODE=L可以发送不兼容IEEE 802.15.4标准的帧。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。