中國一汽無錫油泵油嘴研究所 楊 琛 張 雷 寇 偉 楊鵬翔 陸召振
通過車載傳感器對發動機參數采集和存儲,Electronic Control Unit(ECU)可以判斷發動機的工作狀態和工作趨勢。許多車載傳感器[1](例如燃油質量傳感器)需要對發動機參數進行長期監控,單片機作為控制器件,其數據存儲資源十分有限。Secure Digital(SD)卡具有大容量、小體積、低功耗、非易失性以及兼容MMC卡等特點,是理想選擇。
部分文章已介紹了單片機(如PIC、C51等)讀寫SD卡的應用實例[2,3],但這些單片機在汽車領域使用較少。本文以Freescale公司的MC9S12XEP100[4]單片機為控制器,通過PC將圖片文件存入SD卡,并將數據送入彩色液晶上實現循環播放實驗,探討了Freescale單片機對SD卡文件讀寫的設計方法,該方法可廣泛應用于車載傳感器的數據存儲單元。
SD卡[5]主要由存儲芯片和控制芯片組成,SD卡控制芯片負責對數據的讀寫控制。其工作電壓為2.7-3.6V。每次對SD卡進行數據讀寫時的最小單位是1個扇區,即512Byte。SD卡支持兩種操作模式,SD模式和SPI模式,因單片機的IO口資源限制,大多數應用都選擇SPI模式。
SD總線模式包含4根數據線和1根命令線,傳輸速度可達到100Mbit/s。SPI模式是4線制總線,SPI模式下的接口定義參見表1。

表1 SPI模式接口定義
Freescale推出的16位MC9S12XE系列單片機具有增強的系統集成性和更好的功能性[6]。其內部PLL超頻能力能顯著降低對外部頻率源的主頻的需求,從而提高單片機的抗干擾能力。XGATE核能協處理I/O中斷需求,從而降低主核的任務量。另外,其具有EEPROM、FLASH以及豐富的I/O資源(例如SPI、ECT、CAN2.0等),可滿足汽車領域嚴苛的應用環境需求。
實驗系統組成如圖1,單片機通過SPI總線與SD通信,并通過并口與彩色液晶模塊進行通信。SD需由LDO電源轉換芯片供電。

圖1 實驗系統原理框圖
SD卡的實驗系統工作過程如下:a.由上位機軟件對待處理數據進行格式轉換,生成二進制文件。b.將文件拷入SD卡,拷貝前需要對SD卡進行以FAT格式化,以確定存儲位置的首地址。C.實驗系統上電后,進入SD卡讀寫程序讀取相應文件,并進行顯示。
單片機完成初始化后,在RAM中緩沖512 bytes,并送LCD顯示;當i=300時,表明1幅圖像顯示完成。程序共設置了5幅圖像循環顯示,軟件流程圖如圖2所示。

圖2 軟件流程圖
系統上電后SD卡默認進入SD模式,需設置SPI模式以及單塊讀寫的數據長度。當CS處于低電平時,發送CMD0,發送完畢后,接受R1回應,判斷SD卡是否正確接受指令。CMD0使得SD進入IDLE狀態,CMD1激活SD卡的初始化過程,等待R1判斷SD卡是否處于激活狀態。CMD16指令設置讀寫塊的大小為512Byte。需等待至少74個時鐘周期。初始化流程參如圖3所示。

圖3 SPI初始化流程
讀程序過程如圖4所示,單片機通過CMD17指令讀取SD卡扇區數據,若成功SD卡返回R1響應,單片機對512byte數據進行緩存。寫程序過程見圖5,CMD24指令作為SD卡的寫入指令,若SD卡成功響應則返回R1,單片機從緩存區寫入512bytes數據。

圖4 讀程序

圖5 寫程序

圖6 SD卡文件顯示效果
本文所使用彩色液晶分辨率[7]為QVGA,16位真彩色格式。實現實驗圖片正常顯示,需要解決2個問題:圖像的格式和圖像數據量。一方面,Freescale單片機應用通常不具備操作系統,因此需要將.jpg、.gif、.bmp文件轉換成二進制文件.bin格式。另一方面,根據彩色液晶模塊的分辨率特點,可根據公式(1),得出顯示圖片的數據是:

顯然,當需要顯示多幅圖片時對單片機的存儲開銷十分巨大,需要借助SD卡的存儲能力。由SD卡的讀寫單位是512bytes,可得出1幅圖像占用的扇區數為:

本文選取MC9S12XEP100單片機搭建的實驗系統對SD卡讀寫接口程序進行了驗證。由圖6可見,所設計的程序能正常讀寫SD卡文件。
SD卡的存儲方式可以有效的緩解單片機存儲資源有限的問題,滿足日漸復雜的各種車載設備及傳感器的數據存儲要求。本文研究了Freescale單片機對SD卡讀寫的設計方法,并通過存儲圖片數據實驗進行了驗證,該方法可廣泛應用于車載傳感器的長期數據存儲需求。
[1]呂艷,孫克.汽車電子傳感器簡述[J].儀表技術與傳感器,2009(Z1).
[2]張凱臨,姚玉玲,劉金濤.SD卡在PIC系列微控制器系統中的應用[J].微計算機信息,2008(24).
[3]張恒.基于AT89S52和FAT16的SD卡讀寫系統設計[J].單片機與嵌入式系統應用,2009(08).
[4]MC9S12XEP100 Reference Manual Covers MC9S12XE Family[M].Version 1.25,Freescale,February,2013.
[5]SanDisk Secure Digital Card Product Manual[M].Version 2.2,San-Disk Corporation,September,2004.
[6]孫同景.Freescale 9S12十六位單片機原理及嵌入式開發技術[M].北京:機械工業出版社,2008.
[7]應根裕,胡文波,邱勇.平板顯示技術[M].北京:人民郵電出版社,2002.