文/唐鴻華
(株洲中車時代電氣股份有限公司 湖南省株洲市 412001)
S32K系列單片機是NXP推出的汽車電子類單片機,適合高可靠性設計中使用。S32K的軟件開發可使用免費的S32DS開發環境,該開發環境對應芯片的內部模塊配置采用可視化模式,同時S32K的軟件開發包提供內部模塊的底層驅動。設計人員在開發過程中只需關心具體應用,使用方便。
S32K144單片機由于內部AD轉換精度有限,當轉換精度要求高于1%時,通常采用外接AD轉換芯片方式。使用串行通信可降低PCB布線復雜度。S32K144單片機包含有一個FlexIO模塊,這個模塊可根據需要配置成UART、SPI、I2C等多種串行通信模式。采用了帶SPI接口的AD7606芯片作為外部AD轉換芯片。
AD7606通過SPI接口與S32K144通信。FlexIO是S32K144系列芯片內的一個通信模塊,可配置成SPI通信模式。FlexIO模塊的8個外部引腳任意一個均可配置成SPI的4根通信信號線的任意一個,如在PCB布局中發現布線交叉復雜時,可調整引腳布局簡化PCB布線。S32K144與AD7606的硬件連接如圖1。
AD7606芯片的通信方式選擇(nPAR/SER/BYTE SEL)配置為高電平,表示使用SPI方式通信。S32K144發出啟動轉換信號(CONVST A、CONVST B)到AD7606,AD7606開始數據轉換,這時BUSY信號為高電平;當BUSY信號為低時,表示轉換完成。S32K144啟動SPI通信讀取數據,把轉換后的數據讀到CPU。控制信號說明如表1。
AD轉換需要周期進行,由定時器產生1ms定時中斷,在中斷里置位AD轉換標志。主循環里檢查1ms定時標志,啟動AD轉換并做相應處理,處理流程如圖2。
在S32DS里,驅動層已定義SPI接口數據結構,系統根據圖形化界面的配置自動生成spi_master_t類型的數據結構用于初始化SPI接口。本次配置生成MasterConfig0數據結構如下:


圖1:S32K144與AD7606硬件連接

extension是針對FlexIO引腳配置的數據結構,本系統的引腳配置數據結構如下:

執行如下操作將其加入到MasterConfig0結構體中。
MasterConfig0.extension = &extension;
在初始化部分執行SPI_MasterInit即可完成對SPI接口的初始化。
SPI_MasterInit(&spi1Instance,&MasterConfig0);
調用SPI_MasterTransfer函數即可啟動數據傳輸。

表1:控制信號說明

圖2:數據處理流程圖
SPI_MasterTransfer (&spi1Instance,master_send,master_receive,(uint8_t) NUMBER_OF_FRAMES );
調用SPI_GetStatus函數檢查發送是否完成。
SPI_GetStatus(&spi1Instance);
定時中斷要先設計中斷函數,通過INT_SYS_InstallHandler把中斷函數安裝到系統中斷向量表,初始化完成后啟動定時中斷。
AD轉換啟動信號通過GPIO方式發出,表示轉換完成狀態的BUSY信號通過GPIO信號檢測。

圖3:AD轉換的數據
首先使用精密電源在AD7606的模擬輸入腳輸入0.5V、1V、1.5V、3V直流電壓,檢查轉換后的直流電壓值,經測試誤差在1%以內。
再用信號發生器在AD7606模擬輸入腳輸入頻率為5Hz、10Hz、100Hz,幅度為3V正弦波信號,通過串口打印輸出轉換的電壓信息。在PC機通過串口通信軟件接收S32K144發送過來的數據,數據保存到Excel表里。通過Excel的繪圖,檢查轉換結果是否正常。測試數據如圖3,說明AD動態轉換符合要求。
NXP公司的S32K1XX系列芯片和部分Kinetis KLXX系列包含FlexIO模塊,FlexIO模塊模擬的SPI通信接口與AD7606芯片的連接方式靈活,適用范圍廣。本文介紹的方法在這種AD轉換電路中使用,可提高PCB布局靈活性,降低布板復雜度,提升設計質量。