劉永春,王秋花,郭慶波,高發廷
(中國重汽集團汽車研究總院,山東 濟南 250000)
隨著汽車電控技術的發展,汽車中使用傳感器的數量不可避免地逐步增加,而傳感器的增加又會帶來諸如系統成本的增加、傳感器布線和電子控制單元復雜性等挑戰。為了滿足低成本先進傳感器的需求,業界制定了使用數字接口的SENT (Single Edge Nibble Transmission,單邊半字節傳輸)協議。SENT協議是美國機動車工程師學會SAE推出的一種點對點、單向傳輸方案,被用來在汽車中的傳感器和電子控制單元之間傳輸高精度的傳感器數據。目前已有不少內部集成SENT硬件模塊的微處理器,可以直接與SENT傳感器連接,實現軟硬件解碼,通過MCU直接讀取SENT模塊解碼后的數據信息。但考慮到MCU價格、封裝和項目延續性等方方面面的因素,有些項目可能短時期內無法選用內部集成SENT模塊的MCU。本文正是在此背景下,基于普通MCU對實現SENT接口數據采集進行了深入研究,采用NXP的微處理器進行SENT硬件接口電路的設計及SENT協議數據幀的解析,實現正確接收SENT傳感器傳輸的數據信息。
SENT總線在兩個下降沿之間以4位半字節傳輸數據,故名為“單邊半字節”。以時鐘周期Tick作為節拍單位,其范圍3~10μs,一般是3μs。每個半字節以至少5個時鐘周期的邏輯低電平周期開始,然后是一個表示編碼數據值的可變長度邏輯高電平周期,用總半字節的時間計算節拍單位中編碼的數據。4位半字節值0000由12個時鐘周期的邏輯高電平持續時間表示,0001由13個時鐘周期的邏輯高電平持續時間表示,以此類推,直到數據值1111由27個時鐘周期的邏輯高電平持續時間表示。SENT總線具有兩種不同速率同時傳輸數據的獨特能力。重要的信號通常用快速通道以實現高頻率的更新,比如溫度、壓力等,對于非關鍵的信號,如診斷等可以放在慢速通道傳輸??焖偻ǖ朗敲恳粠瑐鬏斠粋€完整的信號,慢速通道需要多幀來傳輸一個完整的信號??焖偻ǖ劳ㄟ^4個數據位為一個單元來傳輸數據,其信號傳輸順序如下。
1)同步信號:以一個同步脈沖開始,該脈沖與后續的下降沿之間的時間間隔等效于56個時鐘節拍。圖1為同步脈沖傳輸通道。

圖1 同步脈沖
2)狀態/通信信號:12~27個時鐘節拍。
3)數據信號:含有傳感器數據信息,12~27個時鐘節拍。圖2為數據脈沖傳輸通道。

圖2 數據脈沖
4)CRC校驗信號:CRC校驗脈沖用于錯誤檢測,12~27個時鐘節拍。
5)可選暫停信號:每條報文的末尾可以選擇插入一個12~768個節拍長度的暫停脈沖。圖3為SENT快速通道數據傳輸。

圖3 SENT快速通道數據傳輸
圖4給出了帶有SENT接口傳感器和控制器連接的硬件原理圖。SENT接口的傳感器由信號線、5V電源線和搭鐵線組成,5V供電由控制器為傳感器提供,SENT信號由上拉電阻上拉至電源電壓,并經過EMC低通濾波器后,提供給單片機的定時器模塊接口。

圖4 SENT接口硬件電路
所使用的單片機MPC5644A內部沒有集成SENT硬件模塊,但具有通用定時器EMIOS和DMA。實現該功能涉及到的片內資源有:①SIU:System Integration Unit;②EMIOS:Enhanced Input/Output Subsystem;③EDMA:Enhanced Direct Memory Address engine。
SENT協議解析是使用定時器輸入捕捉中斷功能實現的,采集兩次下降沿之間的時長來解析數據的大小。通過DMA將定時器每次捕捉的數據傳遞到指定RAM中,獲得全部的SENT數據后,按照SENT標準協議的數據格式,將定時器捕捉的一組數據轉換為SENT含義的數據,并進行CRC校驗,確認數據的正確性。具體執行步驟如下。
1)設定定時器、DMA模塊、SENT通信函數等基本參數。
2)判斷幀的起始位,信號的下降沿觸發定時器中斷,在空閑狀態下總線保持邏輯1,當兩個低電平之間出現56個時鐘節拍時,則判斷為同步脈沖,暫時認為是一幀的開始,同時設定定時計數器實時監測輸入信號的狀態,將捕捉到的數據由DMA自動傳輸到RAM中指定數組變量。采集2次下降沿之間時間的長短來解析數據大小,將包括同步頭、狀態段、數據段、校驗和等。
3)DMA中斷。將定時器捕捉到的數值根據SENT協議轉換為真正SENT含義的數據,對轉換后的數據進行CRC校驗。軟件實現部分代碼如圖5所示。
以某廠家SENT接口傳感器為對象,對采集到的數據進行解析,并驗證解析得到的數據的正確性。測試信號波形如圖6所示,分別為SENT接口傳感器發出的溫度和壓力信號,通過對數據幀的解析可以得到實時的溫度和壓力的數值。

圖5 SENT數據代碼

圖6 SENT信號波形
SENT接口輸出方式具有更高的數據傳輸速度、可靠性、抗干擾性,這些特性與未來的智能汽車是非常契合的,相信在汽車以及其它自動化領域,這種SENT協議輸出的智能傳感器的應用會越來越多。本文提供的基于普通微處理器實現SENT接口數據的采集方法,通過測試驗證能夠正確接收SENT傳感器數據信息,完美解決處理器內部沒有SENT模塊接口的問題,這對于電子控制單元SENT功能的開發具有十分重要的參考意義。