如圖 8-29 所示,AMC130M02 的每個 ADC 通道都有兩個用于保存轉換數據的內部數據緩沖器:一個 ADC 輸出緩沖器 和一個 FIFO 緩沖器。每個緩沖器一次只能保存一個轉換結果。DOUT 上的數據輸出始終來自 FIFO 緩沖器。
每當 ADC 通道生成新的轉換數據時,該通道的 ADC 輸出緩沖器都會立即用新數據進行更新。然而,FIFO 緩沖器更新取決于主機的前一次轉換數據檢索。有三種情況:
- 如果在新的轉換數據 (N+1) 可用時存儲在 FIFO 緩沖器中的轉換數據 (N) 已被主機讀取,則 FIFO 緩沖器將更新為新的轉換數據 (N+1)。在這種情況下,ADC 輸出緩沖器和 FIFO 緩沖器中的數據同時更新(即,兩個緩沖器現在保存相同的轉換數據 N+1)。
- 如果在新的轉換數據 (N+1) 可用時存儲在 FIFO 緩沖器中的轉換數據 (N) 尚未 被主機讀取,則 FIFO 緩沖器不 會更新并仍然保存先前的轉換數據 (N),而 ADC 輸出緩沖器現在保存新的轉換數據 (N+1)。在這種情況下,ADC 輸出緩沖器 (N+1) 和 FIFO 緩沖器 (N) 之間的數據內容不同。主機從 FIFO 緩沖器讀取轉換數據 N 后,FIFO 緩沖器將更新為轉換數據 N+1。然后主機可以檢索轉換數據 N+1。
- 如果存儲在 FIFO 緩沖器中的轉換數據 (N) 尚未 被主機讀取,但同時有兩個 新的轉換數據可用(即 ADC 輸出緩沖器已使用轉換數據 N+2 更新),則存在一種特殊情況。在這種情況下,在 ADC 輸出緩沖器用轉換結果 N+2 更新的同時,FIFO 緩沖器用轉換結果 N+2 更新(即兩個緩沖器現在保存相同的轉換數據 N+2)。這意味著轉換數據 N 和 N+1 丟失,主機無法再檢索這些數據。
表 8-12 總結了新轉換數據 (N+1) 可用時的 ADC 輸出緩沖器和 FIFO 緩沖器操作。
表 8-12 新的轉換數據可用:ADC 輸出緩沖器和 FIFO 緩沖器的操作
| SPI 歷史記錄 |
在時間 t = S 時可用的新轉換數據 |
ADC 輸出緩沖器內容 (t < tS) |
FIFO 緩沖器內容 (t < tS) |
ADC 輸出緩沖器內容 (t > tS) |
FIFO 緩沖器內容 (t > tS) |
| FIFO 數據 N 已被主機讀取 |
N+1 |
否 |
否 |
N+1 |
N+1 |
| FIFO 數據 N 尚未被主機讀取 |
N+1 |
否 |
否 |
N+1 |
否 |
| FIFO 數據 N 尚未被主機讀取 |
N+2 |
N+1 |
N |
N+2 |
N+2 |
以下三個示例使用簡化符號說明了 ADC 輸出和 FIFO 緩沖器的行為,以指示每個緩沖器中存儲了哪些轉換數據:[ADC 輸出緩沖器中的樣本數 | FIFO 緩沖器中的樣本數]。
示例 1:主機在結果可用后立即讀取轉換結果
- 當第一次轉換(結果 1)完成時,該結果將同時置于 ADC 輸出緩沖器和 FIFO 緩沖器中 [1 | 1]。
- 如果主機在轉換完成后立即讀取轉換結果 1,則緩沖器的內容保持為 [1 | 1]。如果需要,主機可以在轉換結果 2 完成之前多次從 FIFO 緩沖器讀取轉換結果 1。
- 當轉換結果 2 完成時,結果再次置于 ADC 輸出緩沖器和 FIFO 緩沖器中 [2 | 2]。
- 如果主機在第三次轉換完成之前讀取結果,則會讀取結果 2,緩沖器保持為 [2 | 2]。
示例 2:主機錯過讀取一個轉換結果
- 當第一次轉換(結果 1)完成時,結果將同時置于 ADC 輸出緩沖器和 FIFO 緩沖器中 [1 | 1]。
- 如果主機在第二次轉換完成之前錯過了從 FIFO 緩沖器讀取結果 1,則 ADC 輸出緩沖器保存結果 2,FIFO 緩沖器仍然保存結果 1 [2 | 1]。
- 如果主機現在在第三次轉換完成之前讀取數據,則會讀取結果 1。緩沖器的內容隨后更新為 [2 | 2]。
- 主機的另一個轉換數據讀取請求會在 DOUT 上移出結果 2。緩沖器保持為 [2 | 2]。
- 現在,當第三次轉換完成時,兩個緩沖器都會使用結果 3 進行更新 [3 | 3]。
示例 3:主機錯過讀取兩個連續的轉換結果
- 當第一次轉換(結果 1)完成時,結果將同時置于 ADC 輸出緩沖器和 FIFO 緩沖器中 [1 | 1]。
- 如果主機在第二次轉換完成之前錯過了從 FIFO 緩沖器讀取結果 1,則 ADC 輸出緩沖器保存結果 2,FIFO 緩沖器仍然保存結果 1 [2 | 1]。
- 現在,如果第三次轉換完成但主機仍未從 FIFO 緩沖器檢索數據,則結果 3 將覆蓋 ADC 輸出和 FIFO 緩沖器中的數據 [3 | 3]。
- 在這種情況下,轉換結果 1 和結果 2 都會丟失,無法再被主機讀取。
根據 ADC 的內部結構(包括 ADC 輸出緩沖器和 FIFO 緩沖器),DRDY 引腳的行為如下所述:
- 如果主機在每次新轉換數據可用時讀取轉換數據,則 DRDY 將遵循數據就緒 (DRDY) 部分中所述的格式,具體取決于 MODE 寄存器中的 DRDY_FMT 位:當 DRDY_FMT 位為 0b 時,通過以下方式來指示新數據:DRDY 從高電平變為低電平并保持低電平直到所有轉換數據移出器件,或者保持低電平并在下一次 DRDY 轉換為低電平之前短暫變為高電平。當 DRDY_FMT 位為 1b 時,新數據由 DRDY 引腳上的短負脈沖指示。
- 如果 DRDY_FMT 位為 0b 并且主機在下一次轉換完成之前沒有從 FIFO 緩沖器讀取轉換數據,則 DRDY 保持低電平,并在 DRDY 下一次轉換為低電平之前短暫變為高電平(表示新的轉換)。
- 如果 DRDY_FMT 位為 1b 并且主機在下一次轉換完成之前沒有從 FIFO 緩沖器讀取轉換數據,則器件會跳過一個 DRDY 脈沖,并且在數據就緒后的第二個實例之前不提供另一個 DRDY 脈沖。因此,如果 DRDY_FMT 位為 1b 并且主機根本不讀取轉換數據,則 DRDY 引腳將以轉換速率一半的速率進行切換。