重慶郵電大學光電工程學院 朱仁義 李泓成 張 遼
基于STM32單片機和SDRAM的模擬U盤設計
重慶郵電大學光電工程學院 朱仁義 李泓成 張 遼
介紹了通過STM32單片機和外掛SDRAM存儲器實現模擬U盤的設計,給出了系統電路原理圖和單片機模擬U盤的程序流程。單片機在工作過程中可以虛擬出一個USB存儲設備并將需要的數據傳輸給USB主設備。該方法可以與其他通信系統結合,實現對基于USB接口的設備的自動控制,具有良好的應用價值。
STM32F429;SDRAM;模擬U盤
目前,USB標準接口[1]已成為通用的數據交換接口,應用廣泛。例如,市場上大型LED屏的驅動卡都可以通過USB接口外接U盤來獲取顯示數據[2]。然而,普通U盤數據只能通過人為更新,無法實時自動更新,因此需要一種無需人工干預的、可自動更新內容的U盤來進行驅動。類似的應用還有很多。
本文設計的方法可以通過微控制器STM32模擬U盤數據,并動態更改其內容,從而為自動更新U盤數據的應用提供了參考。
系統采用意法半導體公司開發的基于Cortex-M4內核的新型32位微控制器STM32F429x作為主控芯片。該芯片內部集成了全速USB OTG設備接口模塊和靈活的可變存儲控制器 (FMC) ,單芯片即可完成設計任務,避免了復雜的接口電路設計,有效地降低了系統接口的復雜度和系統開發的難度,在很大程度上提高了系統的穩定性。該系統體積小巧、簡單易用,能夠實現類似U盤的讀寫操作。
根據系統的功能需求,系統結構圖如圖1所示,主要包括:USB接口、數據存儲SDRAM模塊、USB OTG通信模塊、時鐘和復位電路、降壓電路等。工作流程如下:系統通過USB接口接到主機后獲得5V電源,微控制器STM32對硬件設備進行初始化,通過內部USB硬件控制器來完成USB設備的枚舉工作。

圖1 系統結構圖
2.1 SDRAM接口電路
虛擬U盤的存儲介質采用同步動態隨機存儲器SDRAM[3],芯片選擇IS42S16400J,該芯片容量8MHz,頻率143MHz,速度達到7ns,工作溫度范圍-40°-80°,滿足工業場合的應用要求。其容量大小也滿足大多數LED屏的需求。
STM32F429內部集成有FMC(Flexible Memory Controller)可變存儲控制器,可以用于驅動包括SRAM、SDRAM、NOR FLASH以及NAND FLSAH類型的存儲器,通過STM332F429內部集成的可變存儲控制器驅動外部SDRAM,降低了系統復雜度,提高了可靠性。
2.2 降壓電路
系統通過USB接口供電,外部主機設備為系統提供5V電壓,通過降壓芯片AMS1117-3.3得到微控制器STM32的3.3V供電電壓。AMS1117-3.3是一個正向低壓降穩壓器,固定輸出電壓3.3V,精度達到1%,內部集成過熱保護和限流電路,輸出電流可以達到1A,滿足本系統的電源要求。降壓電路如圖2所示。

圖2 降壓電路
2.3 USB接口電路
系統的數據交換通過USB接口實現,STM32F429內部集成OTGFS控制器和OTG-HS控制器,本文采用OTG-FS控制器[4-5],傳輸速度達到12Mb/s,符合應用要求。USB接口電路如圖3所示。USB的差分數據線D+與D-都串接了22歐匹配電阻,提高了抗干擾能力,D+信號線接1.5K歐上拉電阻到5V,將被主機識別為高速設備。

圖3 USB接口電路

圖4 系統總體程序流程圖
設備的固件程序設計主要包括:系統時鐘配置、FMC模塊配置和USB OTG模塊配置??傮w流程如圖4所示,系統在通過USB線連接外部主機設備后即上電復位,初始化外圍設備并配置系統時鐘,其中特別注意USB時鐘需配置成48MHz,否則模擬U盤無法被主機正確識別。系統在完成FMC配置以及USB OTG配置后進入U盤模式,USB設備枚舉成功被主機正確識別后即可實現類似U盤的讀寫功能。
意法半導體公司提供了32位STM32F429x系列MCU的固件庫[6]。該固件庫包含了FMC和USB在內的各種功能模塊的軟件使用接口,使用該固件庫可以有效節省用戶產品的開發和調試時間。本系統關鍵的FMC模塊USB OTG模塊配置程序均采用了官方固件庫。
本系統連接電腦后能被正確識別為u盤,能夠完成文件的復制刪除等操作。由于SDRAM的數據掉電丟失特性,不能作為真正的U盤使用。作為LED驅動卡的數據U盤是本系統的應用之一,微控制器STM32將LED屏顯示文件直接寫入SDRAM后即更新LED屏顯示內容,為無線傳輸數據來更新LED屏內容的應用提供了參考。
[1]陳源,裘正定.基于嵌入式系統的USB接口的設計[J].計算機工程與應用,2004,40(7):110-111.
[2]鮑海軍.單片機控制led顯示屏u盤控制系統:CN,CN 2840191 Y[P].2006.
[3]鄧耀華,劉桂雄,吳黎明.高速SDRAM控制器的嵌入式設計[J].計算機工程,2010,36(16):216-218.
[4]龔躍玲,汪玲彥.基于STM32的USB OTG數據通信的實現[J].微型機與應用,2011,30(10):32-34.
[5]方旭.基于STM32處理器的兩種USB通信方法的實現[J].科技信息,2010(21):574+595-596.
[6]張明華.基于固件庫的STM32F107的程序設計方法探討[J].數字技術與應用,2014(12):171-171.
朱仁義(1993—),浙江人,碩士研究生,現就讀于重慶郵電大學。