文/唐鴻華
(株洲中車時(shí)代電氣股份有限公司 湖南省株洲市 412001)
S32K系列單片機(jī)是NXP推出的汽車電子類單片機(jī),適合高可靠性設(shè)計(jì)中使用。S32K的軟件開(kāi)發(fā)可使用免費(fèi)的S32DS開(kāi)發(fā)環(huán)境,該開(kāi)發(fā)環(huán)境對(duì)應(yīng)芯片的內(nèi)部模塊配置采用可視化模式,同時(shí)S32K的軟件開(kāi)發(fā)包提供內(nèi)部模塊的底層驅(qū)動(dòng)。設(shè)計(jì)人員在開(kāi)發(fā)過(guò)程中只需關(guān)心具體應(yīng)用,使用方便。
S32K144單片機(jī)由于內(nèi)部AD轉(zhuǎn)換精度有限,當(dāng)轉(zhuǎn)換精度要求高于1%時(shí),通常采用外接AD轉(zhuǎn)換芯片方式。使用串行通信可降低PCB布線復(fù)雜度。S32K144單片機(jī)包含有一個(gè)FlexIO模塊,這個(gè)模塊可根據(jù)需要配置成UART、SPI、I2C等多種串行通信模式。采用了帶SPI接口的AD7606芯片作為外部AD轉(zhuǎn)換芯片。
AD7606通過(guò)SPI接口與S32K144通信。FlexIO是S32K144系列芯片內(nèi)的一個(gè)通信模塊,可配置成SPI通信模式。FlexIO模塊的8個(gè)外部引腳任意一個(gè)均可配置成SPI的4根通信信號(hào)線的任意一個(gè),如在PCB布局中發(fā)現(xiàn)布線交叉復(fù)雜時(shí),可調(diào)整引腳布局簡(jiǎn)化PCB布線。S32K144與AD7606的硬件連接如圖1。
AD7606芯片的通信方式選擇(nPAR/SER/BYTE SEL)配置為高電平,表示使用SPI方式通信。S32K144發(fā)出啟動(dòng)轉(zhuǎn)換信號(hào)(CONVST A、CONVST B)到AD7606,AD7606開(kāi)始數(shù)據(jù)轉(zhuǎn)換,這時(shí)BUSY信號(hào)為高電平;當(dāng)BUSY信號(hào)為低時(shí),表示轉(zhuǎn)換完成。S32K144啟動(dòng)SPI通信讀取數(shù)據(jù),把轉(zhuǎn)換后的數(shù)據(jù)讀到CPU??刂菩盘?hào)說(shuō)明如表1。
AD轉(zhuǎn)換需要周期進(jìn)行,由定時(shí)器產(chǎn)生1ms定時(shí)中斷,在中斷里置位AD轉(zhuǎn)換標(biāo)志。主循環(huán)里檢查1ms定時(shí)標(biāo)志,啟動(dòng)AD轉(zhuǎn)換并做相應(yīng)處理,處理流程如圖2。
在S32DS里,驅(qū)動(dòng)層已定義SPI接口數(shù)據(jù)結(jié)構(gòu),系統(tǒng)根據(jù)圖形化界面的配置自動(dòng)生成spi_master_t類型的數(shù)據(jù)結(jié)構(gòu)用于初始化SPI接口。本次配置生成MasterConfig0數(shù)據(jù)結(jié)構(gòu)如下:
圖1:S32K144與AD7606硬件連接
extension是針對(duì)FlexIO引腳配置的數(shù)據(jù)結(jié)構(gòu),本系統(tǒng)的引腳配置數(shù)據(jù)結(jié)構(gòu)如下:
執(zhí)行如下操作將其加入到MasterConfig0結(jié)構(gòu)體中。
MasterConfig0.extension = &extension;
在初始化部分執(zhí)行SPI_MasterInit即可完成對(duì)SPI接口的初始化。
SPI_MasterInit(&spi1Instance,&MasterConfig0);
調(diào)用SPI_MasterTransfer函數(shù)即可啟動(dòng)數(shù)據(jù)傳輸。
表1:控制信號(hào)說(shuō)明
圖2:數(shù)據(jù)處理流程圖
SPI_MasterTransfer (&spi1Instance,master_send,master_receive,(uint8_t) NUMBER_OF_FRAMES );
調(diào)用SPI_GetStatus函數(shù)檢查發(fā)送是否完成。
SPI_GetStatus(&spi1Instance);
定時(shí)中斷要先設(shè)計(jì)中斷函數(shù),通過(guò)INT_SYS_InstallHandler把中斷函數(shù)安裝到系統(tǒng)中斷向量表,初始化完成后啟動(dòng)定時(shí)中斷。
AD轉(zhuǎn)換啟動(dòng)信號(hào)通過(guò)GPIO方式發(fā)出,表示轉(zhuǎn)換完成狀態(tài)的BUSY信號(hào)通過(guò)GPIO信號(hào)檢測(cè)。
圖3:AD轉(zhuǎn)換的數(shù)據(jù)
首先使用精密電源在AD7606的模擬輸入腳輸入0.5V、1V、1.5V、3V直流電壓,檢查轉(zhuǎn)換后的直流電壓值,經(jīng)測(cè)試誤差在1%以內(nèi)。
再用信號(hào)發(fā)生器在AD7606模擬輸入腳輸入頻率為5Hz、10Hz、100Hz,幅度為3V正弦波信號(hào),通過(guò)串口打印輸出轉(zhuǎn)換的電壓信息。在PC機(jī)通過(guò)串口通信軟件接收S32K144發(fā)送過(guò)來(lái)的數(shù)據(jù),數(shù)據(jù)保存到Excel表里。通過(guò)Excel的繪圖,檢查轉(zhuǎn)換結(jié)果是否正常。測(cè)試數(shù)據(jù)如圖3,說(shuō)明AD動(dòng)態(tài)轉(zhuǎn)換符合要求。
NXP公司的S32K1XX系列芯片和部分Kinetis KLXX系列包含F(xiàn)lexIO模塊,F(xiàn)lexIO模塊模擬的SPI通信接口與AD7606芯片的連接方式靈活,適用范圍廣。本文介紹的方法在這種AD轉(zhuǎn)換電路中使用,可提高PCB布局靈活性,降低布板復(fù)雜度,提升設(shè)計(jì)質(zhì)量。