SX1276/77/78学习笔记3 - SX1278 的 FIFO 工作流程和应用注意事项
2018-01-19 20:05
676 查看
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,即可轻松读取该数据包。
相关文章推荐
- SX1276/77/78学习笔记2 - sx1278工作方式
- SX1276/77/78学习笔记5 - sx1278数据包结构
- SX1276/77/78学习笔记1 - 概要和专业术语
- SX1276/77/78学习笔记4 -射频信号接收框架简图介绍
- Java学习笔记(77)-----------注释注意事项
- web前台工作笔记(时间戳、js中clone的使用、js中动态填充数据注意事项、前台查错方法的学习)
- tornado 学习笔记10 Web应用中模板(Template)的工作流程分析
- Delphi 2010学习笔记(16)---流程控制的注意事项---2011-01-21
- 如何寻找使用案例及其注意事项,学习笔记
- Markdown学习笔记-----一些注意事项
- Go语言学习笔记 --- 指针和自增自减运算及相关注意事项
- Laravel学习笔记1-laravel基本工作流程
- [学习笔记]寄存器使用注意事项
- HTTP 的报文格式和工作流程 学习笔记
- Python学习笔记-Python的字符串,格式化,条件判断,循环、raw_input的注意事项
- lr学习笔记1:创建脚本的注意事项
- php学习笔记(三十四)smarty框架的初步使用和注意事项
- GreenDAO 学习笔记-小白教程(三)数据库升级及注意事项
- C++学习笔记-指针和引用的注意事项
- Android(java)学习笔记118:类继承的注意事项