一、前言
NJJ29C2 是集成了低頻驅動和接收的晶片,工作頻率是 125kHz,與主控制器通過 SPI 進行通訊,本文將跟大家分享如何通過主控制器與 NJJ29C2 進行 SPI 通訊,包括接口介紹、數據幀以及通訊流程的介紹。
二、SPI 接口說明
- 接口說明
主控制器通過四線 SPI 接口與從設備 NJJ29C2 進行連接以及數據交互,包括片選 SCSN (Slave Chip Select Negative)、時鐘 SCLK (Serial Clock)、數據輸入 SDI (Serial Data In) 以及數據輸出 SDO (Serial Data Out)。
圖 1 SPI 接口
需要說明的是,NJJ29C2 拓展了 IRQ 線以及 BUSY 線,具體說明如下:
(1)IRQ 為中斷輸出線,高有效,表示 NJJ29C2 有數據需要發送給主機,請求 SPI 通訊;
(2)BUSY 為輸出線,高有效,表示 NJJ29C2 正在忙,無法接收數據。
- SPI 模式說明
NJJ29C2 始終作為 SPI 從機,其中片選引腳 SCSN 低電平有效。
NJJ29C2 SPI 通訊模式說明如下:
(1)時鐘極性 CPOL = 0,為空閒低電平,即 SCLK 第一個有效沿為上升沿;
(2)時鐘相位 CPHA = 1,來自主控制器的數據(SDI)在時鐘下降沿採樣,發送到主控制器的數據(SDO)在時鐘上升沿後發生變化。
需要注意 SPI 模式需設置正確,才可根據發送的命令以及獲取的回應信息得到設備的正確狀態,進行分析處理。
三、SPI 幀介紹及緩衝說明
- SPI 幀
SPI 傳輸有固定的幀長度,總是以 32 字節進行傳輸,根據傳輸方向分為命令(command,CMD)以及回應(response,RESP),兩個方向的每幀 SPI 數據最後兩個字節為 CRC 數據,第一個字節根據傳輸方向表示對應的命令集(CMD)或回應集(RESP),中間的數據即為
參數,具體參數說明可參考 UM525836-NJJ29C2 Product User Manual(3.6).pdf 文檔,此處不展開說明。
注意,在 SPI 幀 32 bytes 傳輸過程中 SCSN 需為低電平。當傳輸過程中檢測到 SCSN 的上升沿表示幀的結束,當檢測到幀結束且未接收到預期的 32 bytes 時,該數據會被丟棄,並通過 IRQ 中斷通知主機接收 RESP_GENERIC 響應。
- 緩衝說明
圖 2 SPI 幀
NJJ29C2 在硬體上有兩個大小相同的 SDI buffer,允許發送連續的 SPI 幀,連續幀之間 SCSN 高電平時間需大於 tSCSN_HIGH 時間,該數值參見數據手冊。
為了防止 SPI 數據幀的溢出,可選用拓展的 BUSY 線,如第二點所示,只需要檢測該線狀態從而判斷主控制器是否進行數據發送。
四、SPI 通訊流程說明
- 響應說明
(1)直接響應:當命令從主機發送到 NJJ29C2 時,NJJ29C2 提供直接響應(與命令並行的響應),該響應不依賴於發送的命令。
(2)相關響應:當 NJJ29C2 接收到命令後,開始執行命令,準備相關響應(由命令引起的響應),並通過 IRQ 中斷通知主機獲取相關響應。
直接響應、相關響應可在命令幀中進行設置,此處不展開說明。
當主機收到中斷請求,且無命令需要發送時,可發送 CMD_NOP 用於獲取響應。其中 CMD_NOP 命令 32 bytes 中命令代碼為 0x00,中間參數都為 0x00,最後 2 bytes 為 CRC 值。
類似的,當 NJJ29C2 沒有數據需要回應時,它使用 RESP_NOP 作為直接響應。其中 RESP_NOP 命令 32 bytes 中命令代碼為 0x00,中間參數都為 0x00,最後 2 bytes 為 CRC 值。
- IRQ 中斷說明
圖 3 IRQ 中斷
如上圖所示,當 NJJ29C2 有數據需要傳輸給主機時,將 IRQ 置高,這個僅發生在 SCSN 為高時。當 SDO buffer 可用時,在發送 2 bytes 字節後,IRQ 會恢復為低電平狀態。
- BUSY 線通訊說明
圖 4 BUSY 線通訊
如上圖所示,當占用第二個 SDI buffer 的第二個字節後,會將 BUSY 線設置為高,表示 NJJ29C2 無法繼續緩衝接收數據, 當 NJJ29C2 在 BUSY 狀態,無法接收數據時,主機再繼續發送 SPI 幀(即上圖中的第 3 幀 SPI 數據),該數據會被丟棄,產生錯誤信息,該信息會通過 IRQ
中斷通知主機獲取 RESP_GENERIC 回應。而當第一個 SDI 幀被讀取後,BUSY 會恢復低電平狀態,表示 NJJ29C2 可繼續接收數據。
因此,為了防止 NJJ29C2 過載,建議選用拓展的 BUSY 線,判斷 NJJ29C2 狀態再進行數據交互。若不使用 BUSY 線,則必須遵照 datasheet 中定義的處理時間,根據實際使用情況進行調整。
五、結語
以上就是本次分享的全部內容,如有相關需求,可以在評論區聯繫我們,感謝閱讀。
六、參考資料
- sd525920 - NJJ29C2A Preliminary Datasheet (2.0).pdf
- UM525836-NJJ29C2 Product User Manual(3.6).pdf
評論