查看: 871|回复: 0

[技术交流] SX1212&SX1208 FIFO使用时相关事项

[复制链接]

67

主题

100

帖子

570

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
570
发表于 2020-5-27 09:39:09 | 显示全部楼层 |阅读模式
关于SX1212和SX1208芯片的模组,在实际使用过程中,对FIFO进行操作时,会有一些特殊情况需要注意。
首先两者芯片的FIFO大小是不一样的,具体可以查看对应的芯片规格书。

1、以SX1208为例,SX1208的FIFO大小是66个字节,因此对于FIFO的写入最多填写66个字节,当填写了66字
节后继续写FIFO,后续的字节无法写入FIFO,全部丢失,不会覆盖第66个字节。

2、FIFO的清空操作并非真正意义上的擦除或者初始化FIFO里的数据,执行清除操作后,之前填写到FIFO中的
数据依旧保留在FIFO中,但是此时这些数据都是不可读且可覆盖的。FIFO在机制上做了处理,使得FIFO的读写
操作都将重新从第一个字节开始,此时FIFO可以被认为“空”的状态。

3、上述说过FIFO清空后,数据依旧存在,但是FIFO操作将初始化到第一个字节,可以重新正常地向FIFO中写入
数据。FIFO清空后,若直接去读取FIFO,会读到之前写入FIFO的第一个字节。比如我向FIFO写入了 A B C D 四个
数据,然后我执行清空FIFO的操作,并去读取FIFO,无论读取多少次,读取到的数据都将为 A。之所以读取到的
是A是以为FIFO清空后数据没有清除,所以FIFO的第一个字节依旧是上一次写入FIFO的数据,但是此时FIFO为空
的状态,故无法继续往下读取数据,并且这是读到的A其实是没有意义的,若此时写入一个数据E,会马上覆盖A。

4、FIFO的读写操作是独立的,写了一定字节数的数据后,读取数据依旧是从第一个字节开始,此时在写数据依旧
会从上次写入位置继续,读取完后的那个位置被认为“空”的状态,可被写入覆盖。

因此对于FIFO的操作,建议尽可能的简单化,并且读写操作的数据量尽量保持一致,清空FIFO后不要误读第一个字节
的数据,此时的第一个字节虽能读到但是并没有意义。不要执行写入大于FIFO数据量的操作,避免数据丢失。不要读取
大于写入FIFO数据量的操作,避免多读到没有意义的数据。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表