SX1278 的 FIFO 工作流程和应用注意事项
SX1276/77/78
配备了256
字节的RAM数据缓存,该缓存仅能通过LoRa
模式进行访问。RAM
区(以下称为“FIFO
数据缓存”)可以完全由用户定制,用于访问接收的或发送的数据。LoRa™
FIFO
数据缓存只能通过SPI接口访问。这些FIFO数据缓存保存与最后接收操作相关的数据,除睡眠模式之外,在其他操作模式下均可读。在切换到新的接收模式时,它会自动清除旧内容。FIFO 数据缓存拥有双端口配置,因此可以在缓存内同时存储将要发送和接受的信息。寄存器。
RegTxBaseAddr
明确规定了存储将要发送信息的起始位置。同样的,针对接收操作,寄存器RegFifoRxBaseAddr
也显示了接收操作中写入缓存的起始位置。- 默认情况下,器件上电后,以保证一半的可用内存用于Rx(
RegFifoRxBaseAddr
被初始化至地址0x00
),另外一半的可用内存用于Tx(RegFifoTxBaseAddr
被初始化至地址0x80
)。即各128byte。 - 然而,鉴于FIFO数据缓存固有的毗连特性,Tx和Rx的基址可以在256字节的内存区内进行设置。每个指针均可在FIFO中任意位置独立设置。为了充分利用FIFO数据缓存内存储将要发送或接收数据的空间,可以将基地址
RegFifoTxBaseAddr
和RegFifoRxBaseAddr
设置为缓存首地址(0x00),从而使整个FIFO数据缓存仅在发送或接收模式下使用。 - 器件被设置为睡眠模式时,FIFO数据缓存被清空。因此,在睡眠模式下无法访问FIFO数据缓存。然而,当器件切换到LoRaTM的其他操作模式时,FIFO数据缓存中的数据则保持不变,因而接收的数据包在控制器侧经过最简单的数据处理之后可以被重发出去。当一组新数据被写入已被占用的缓存单元时,FIFO数据缓存不能自行清空(除非器件被设置为睡眠模式)原有的数据,而只是“覆盖”这些数据。
- 通过SPI接口读取或写入当前数据的FIFO数据缓存单元由地址指针RegFifoAddrPtr定义。因此,在进行任何读取或写入操作前,必须先将该指针初始化为对应的基地址。从FIFO数据缓存(RegFifo)读取数据或向FIFO数据缓存写入数据后,地址指针将自动增值。
- 在成功完成数据接收操作时,寄存器
RegRxNbBytes
会定义待写入数据的所占缓存单元的大小。寄存器RegPayloadLength
则显示待发送数据所占用的缓存单元大小。在隐式报头模式下,寄存器RegRxNbBytes
是无效的,因为此时有效负载字节数必须是已知的。而在显式报头模式下,接收缓存区的初始空间与所要接收的报头中携带的数据包长度一致。寄存器RegFifoRxCurrentAddr
显示最后接收的数据包在FIFO数据缓存中的存储位置,因此通过将
寄存器RegFifoAddrPtr
指向寄存器RegFifoRxCurrentAddr
,即可轻松读取该数据包。