參考資料來源:
https://support.epson.biz/td/api/doc_check.php?dl=app_RX8901CE&lang=en
   Epson 技術文介紹 - AN0040 ( Nov. 2022 )
   文: 王建斌,服務於台灣愛普生科技股份有限公司
   電子零件事業部。


愛普生新款 RX8901CE 即時時鐘模組,
內建時間戳記功能 與應用說明 (下)

【前言】
   在上一篇文章愛普生新款RX8901CE即時時鐘模組,內建時間戳記功能與應用說明 (中)介紹了 時間戳記緩衝區的操作模式與初始化的流程,使用時間戳記功能前參照流程設定即可使用,大大簡化了原本複雜與眾多暫存器的設定過程。而在(下)篇會針對時間戳記在FIFO模式與直接模 式獲取資料的操作原理和流程這方面來說明。
時間戳記獲取資料操作模式
     FIFO模式
     當一個能夠捕獲時間戳記資料的事件觸發或一個命令觸發產生時,RX4901CE/ RX8901CE 從計 數器和旗標中獲取時間戳記的數據,並將其寫入由 。 BUF1_STAT.PTR[5:0]在寫入時遞增,換句話說,BUF1_STAT.PTR[5:0]在被讀取之前保留緩衝 區的數據。當此數據計數達到 BUF1_CFG1.INTCNT[5:0]中設置的值時,會發生 BUF1 事件輸 入中斷,如果中斷啟用,則RX4901CE/RX8901CE 的引腳/INT 信號以向主機發送中斷請求,在 數據讀取期間,時間戳記資料從 指向的緩衝區頁面中讀取。 BUF1_STAT.PTR[5:0]因該讀數和 BUF1_STAT 指向的頁碼而遞減。BUF1_STAT.PTR[5:0]也被 更新。下圖一和圖二顯示了根據獲取數據的 FIFO 緩衝區、指標和緩衝區的狀態。
Stacks Image 646

圖一:時間戳記獲取操作(FIFO模式 + 禁止覆寫模式)

   上圖一依序從左邊開始,初始化時設定為禁止覆寫模式OVWEN = 0,暫存器計數中斷 INTCNT[5:0]設定為32,緩衝區為空的旗標EMPTF = 1。 第一次獲取10筆時間戳記資料,可以發現緩衝區指標暫存器PTR[5:0]自動增加為10,時間戳記 資料依序儲存到緩衝區,緩衝區為空的旗標EMPTF變為0。 獲取32筆時間戳記資料時,暫存器滿位旗標暫存器FULLF變為1,這時緩衝區滿位,PTR[5:0]已 達到INTCNT[5:0]設定的32筆,所以產生中斷。因為設定為禁止覆寫模式,所以即使有新的2筆 時間戳記產生也不會被儲存到緩衝區。
   最後從緩衝區讀取10筆資料,緩衝區指標暫存器PTR[5:0]從原本32減少為22,也就是緩衝區的前10組為空,當有新的時間戳記資料時會從這裡開始依序儲存。
Stacks Image 681

圖二:時間戳記獲取操作(FIFO 模式 + 覆寫模式)

   上圖二依序從左邊開始,初始化時設定為覆寫模式OVWEN = 1,暫存器計數中斷INTCNT[5:0] 同樣設定為32,緩衝區為空的旗標EMPTF = 1。 第一次獲取10筆時間戳記資料,可以發現緩衝區指標暫存器PTR[5:0]自動增加為10,時間戳記 資料依序儲存到緩衝區,緩衝區為空的旗標EMPTF變為0。 獲取32筆時間戳記資料時,暫存器滿位旗標暫存器FULLF變為1,這時因為緩衝區滿位, PTR[5:0]已達到INTCNT[5:0]設定的32筆,所以這時會發生中斷,因為設定為覆寫模式,所以新的2筆時間戳記就覆蓋了原本緩衝區的第1和2筆的舊時間戳記。 最後從緩衝區讀取10筆資料,緩衝區指標暫存器PTR[5:0]從原本32減少為22,也就是緩衝區的前10組為空,當有新的時間戳記資料時會從這裡開始依序儲存。
     Direct模式
   當一個啟用獲取時間戳記的事件觸發或命令觸發產生時,RX4901CE/RX8901CE從計數器和旗 標中獲取時間戳數據,並根據事件類型將其寫入BUFn。Direct模式下的緩衝區沒有指標來達成 FIFO模式下的功能。BUFn_STAT.PTR[x:0] 計數發生觸發,觸發計數會指向寫入數據的緩衝區 頁。每次寫入數據時,觸發計數都會增加。此觸發計數達到BUFn_CFG1 中設置的值時, INTCNT[x:0].BUFn 事件輸入中斷發生,如果中斷被啟用,RX4901CE/RX8901CE的引腳/INT向主機發送中斷請求訊號。下圖三和圖四顯示了獲取數據的緩衝區(例如 BUF1)和緩衝區的狀態。
Stacks Image 652

圖三: 時間戳記獲取操作(直接模式 + 禁止覆寫模式)

   上圖三依序從左邊開始,初始化時設定為禁止覆寫模式OVWEN = 0,暫存器計數中斷
INTCNT[5:0]設定為10,緩衝區為空的旗標EMPTF = 1。 第一次獲取5筆時間戳記資料,可以發現緩衝區指標暫存器PTR[5:0]自動增加為5,時間戳記資 料依序儲存到緩衝區,緩衝區為空的旗標EMPTF變為0。 獲取10筆時間戳記資料時,暫存器滿位旗標暫存器FULLF變為1,這時緩衝區滿位,PTR[5:0]已 達到INTCNT[5:0]設定的10筆,所以產生中斷。因為設定為禁止覆寫模式,所以即使有新的2筆時間戳記產生也不會被儲存到緩衝區。
   最後從緩衝區讀取10筆資料,這裡與FIFO模式不同,讀取時間戳記資料時,暫存器RDEN需要 設定為1,且RDPAGE[3:0]也需要設定為欲讀取的頁面才能讀取緩衝區內的時間戳記資料,被讀取後緩衝區指標暫存器PTR[5:0]被清除為0,當有新的時間戳記資料時會從這裡開始依序儲存。
Stacks Image 691

圖四: 時間戳記獲取操作(直接模式 + 覆寫模式)

   上圖四依序從左邊開始,初始化時設定為覆寫模式OVWEN = 1,暫存器計數中斷INTCNT[5:0]
設定為10,緩衝區為空的旗標EMPTF = 1,與其他不同這裡多了覆寫旗標暫存器BUF1OVWF。 第一次獲取9筆時間戳記資料,可以發現緩衝區指標暫存器PTR[5:0]自動增加為9,時間戳記資料依序儲存到緩衝區,緩衝區為空的旗標EMPTF變為0。
   獲取第10筆時間戳記資料時,暫存器滿位旗標暫存器FULLF變為1,這時緩衝區滿位,PTR[5:0]已達到INTCNT[5:0]設定的10筆,所以產生中斷,因為沒有新的時間戳記資料覆寫,所以覆寫旗標暫存器BUF1OVWF依然為0。
   因為設定為覆寫模式,所以新的2筆時間戳記產生被儲存到緩衝區,這時BUF1OVWF變為1提醒 有舊時間戳記被覆寫。
   最後從緩衝區讀取10筆資料,這裡與FIFO模式不同,讀取時間戳記資料時,暫存器RDEN需要 設定為1,RDPAGE[3:0]需要設定為欲讀取的頁面,還有啟用獲取時間戳記暫存器EVIN1CPEN 要關掉設定為0避免有新時間戳記資料發生,才能讀取緩衝區內的時間戳記資料,被讀取後緩衝 區指標暫存器PTR[5:0]被清除為0,當有新的時間戳記資料時會從這裡開始依序儲存。
【總結】
    這篇文章(下)篇概略介紹了RX8901CE/RX4901CE 四種獲取時間戳記的操作流程,針對時間戳 記的緩衝區作用原理與資料管理說明,對於客戶開發應用時間戳記的有一定的程度幫助,當然 實際使用的狀態會更為複雜多變,在使用時間戳記上有任何想法、應用與問題,都非常歡迎與 台灣愛普生公司各授權電子零件代理商,或是與我們聯絡。
更多有關 Epson 即時時鐘模組產品和影片說明資訊,請參考,
RX8901CE ( I2C bus) : https://www5.epsondevice.com/en/products/rtc/rx8901ce.html
RX4901CE ( SPI Bus ) :
https://www5.epsondevice.com/en/products/rtc/rx4901ce.html
Epson RTC 產品線 :
https://www5.epsondevice.com/en/information/#rtc
Epson RTC 產品知識和說明 :
https://www5.epsondevice.com/en/information/technical_info/rtc/
#台灣愛普生 #電子零件事業部 #石英振盪器 #石英元件 #RTC #Real Time Clock #即時時鐘
回上層