一、簡介
在使用 LPC5516 + MC33665 去驅動帶有 2 個 MC33772C 的 BJB 板時,發現一直未能與 MC33772C 通信成功,且 MC33772C 的指示燈一直沒亮,本文將對該問題進行分析。
二、MC33772C TPL 通信異常分析
1. 正常來說,LPC5516 往 MC33665 發送 TPL 埠 3 的數據,MC33665 應向 TPL 埠 3 轉發數據,由於 MC33772C 在接收到數據時,若是處於睡眠狀態,那其將被喚醒,此時其 VCOM 將有輸出,由 VCOM 供電的指示燈將亮燈,但實際的現象是 LPC5516 可抓取到發送給 MC33665 的 SPI 波形,而 MC33772C 的指示燈卻一直沒有點亮過,說明 VCOM 一直處於關閉狀態,即 MC33772C 一直處於睡眠狀態,說明其沒有接收到來自 MC33665 的 TPL 消息,推測可能是由於數據幀格式出現問題導致 MC33665 沒有轉發數據。
2. 使用邏輯分析儀抓取 LPC5516 發送給 MC33665 的 SPI 波形,其對 MC33772C 讀寫 CID 的波形如圖 1 所示,TPL2 幀格式如圖 2 所示。從波形上看,這兩幀數據的寄存器數據、寄存器地址以及命令類型,均無錯誤,那有可能出現問題的就只剩下最後一個字節的 CRC了。

圖 1 讀寫 CID SPI 波形

圖 2 TPL2 幀格式
3. MC33665 的 EVH_MCUIF_ERR_STAT 寄存器(0x33)可指示 MCU 埠的錯誤狀態,如圖 3 所示,其中包括 CRC 錯誤。通過讀取該寄存器,其 SPI 波形如圖 4 所示,其寄存器數據為 0x02,即 CRCERR 為 1,表明發送往該埠的數據幀 CRC 出現錯誤。
圖 3 EVH_MCUIF_ERR_STAT 寄存器

圖 4 EVH_MCUIF_ERR_STAT 寄存器出現 CRC 錯誤
4. 檢查 CRC 計算函數,發現其計算順序有問題,該計算沒有按照數據幀從高字節依次往低字節計算,如圖 5 所示,修改後如圖 6 所示。
圖 5 原 CRC 計算函數

圖 6 修改後的 CRC 計算函數

圖 7 EVH_MCUIF_ERR_STAT 寄存器 CRC 錯誤消除

圖 8 讀 CID 響應幀
三、參考文獻
- MC33665A Datasheet (3.0).pdf
- ds633730 - MC33772C Datasheet (3.0).pdf
評論