ZHCSOL2 December 2025 ADS125P08
PRODUCTION DATA
当写入指针到达读取指针且 FIFO 已满时,会发生 FIFO 缓冲器溢出。一旦写入指针到达读取指针,FIFO_SEQ_STATUS 寄存器中的 FIFO_OFn 标志就会设置为 0b,指示发生了溢出。随后,FIFO 会忽略任何额外的写入操作,因此在另一个读取操作释放存储器空间之前,额外的转换结果不会存储在 FIFO 中。这可能导致采集的信号不连续。在溢出情况下,FIFO_DEPTH 指示器的值超过 FIFO 缓冲器的大小。写入 1b 以将 FIFO_OFn 位清除为 1b。
图 7-18 展示了 FIFO 缓冲器溢出的示例。在该示例中,FIFO 中最初有四个空闲数据字可用。FIFO 读取操作将得到五个可用的空闲数据字。随后,ADC 采集六个转换结果,但由于溢出,FIFO 仅存储前五个转换结果。第五个转换结果存储在 FIFO 中后,就会发生溢出,第六个转换结果将丢失。
通常,当向 FIFO 写入数据的平均速度快于从 FIFO 中检索的速度时,就会发生溢出。
当读取指针到达写入指针且 FIFO 为空时,会发生 FIFO 缓冲器下溢。一旦读取指针到达写入指针,FIFO_SEQ_STATUS 寄存器中的 FIFO_UFn 标志就会设置为 0b,指示发生了下溢。随后,任何额外的读取操作都会产生相同的数据输出。同一转换结果被多次读取,直到有新数据写入 FIFO。在下溢情况下,当发出新读取命令时,读取指针不会递增到下一个地址。在下溢情况下,FIFO_DEPTH 指示器的值为 000000000b。写入 1b 以将 FIFO_UFn 位清除为 1b。
图 7-19 展示了 FIFO 缓冲器下溢的示例。最初,五个数据字存储在 FIFO 中并可供读取(ADC 样本 #1 至 #5)。FIFO 读取操作会得到四个可供读取的数据字(ADC 样本 # 至 #5)。随后会执行五个读取命令,但是在读取最后一个可用数据字(ADC 样本 #5)后,由于 FIFO 为空,会发生下溢,并且最后一个数据字会被读取两次。
通常,当向 FIFO 写入数据的平均速度慢于从 FIFO 中检索到的速度时,就会发生下溢。
但请注意,对于 ADS125P08,只要在 FIFO 复位后将样本存储在 FIFO 中(例如通过设置和复位 FIFO_EN 位),FIFO_UFn 就无法正确指示下溢情况。仅当复位后 FIFO 缓冲器中没有存储样本,并且尝试了 FIFO 读取操作时,才会正确触发 FIFO_UFn 以报告下溢情况。