|
关于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数据量的操作,避免多读到没有意义的数据。
|
|