基于RT-Thread和STM32的數(shù)碼相框的設計方案
在程序運行過程中,IDCT運算量較大,有大量浮點乘法和加法運算,程序執(zhí)行速度較慢,這對圖片能否流暢的顯示有很大影響?;诖吮窘y(tǒng)軟件對IDCT算法了優(yōu)化,采用一種快速IDCT算法[5],把二維IDCT分解成行和列兩個一維IDCT,再將IDCT算法通過數(shù)學變換轉化為離散傅里葉逆變換(IDFT),利用矩陣變換簡化計算。在開始進行二維IDCT轉換時,先對輸入的反量化后的數(shù)據(jù)進行8次一維的行變換,并將存儲運行結果,再對運行的結果進行8次一維的列變換,經(jīng)過兩次變換,得到的就是二維IDCT運算變換的結果。程序流程圖如圖10所示。
4.3.3 色彩模式轉換
由于液晶支持的是RGB格式的圖像數(shù)據(jù),需要把執(zhí)行完解碼過程得到的YCrCb格式的數(shù)據(jù)轉換成RGB模式,將256級的YCrCb色彩模型轉換成RGB色彩模型的計算公式如式(1)。
因為R、G、B的取值范圍為[0,255],需要對運算結果進行閾值保護,對超過255的數(shù)值,限定在255,小于0的數(shù)值,限定在0.經(jīng)過運算最終可以得到RGB模式的圖像數(shù)據(jù),完成解碼過程。
4.4 圖片瀏覽模式
本系統(tǒng)的圖片瀏覽模式有觸摸手動瀏覽和定時自動瀏覽兩種模式可供選擇。在觸摸手動瀏覽模式下,有“下一張”,“上一張”,“退出”控件。通過操作觸摸屏上下翻頁的控件,實現(xiàn)瀏覽圖片的功能。在瀏覽完最后一張時,系統(tǒng)會自動跳轉到第一張。在定時自動瀏覽模式下,界面僅有退出控件,每隔3秒,自動進行下一張圖片的瀏覽,并循環(huán)顯示。
5.系統(tǒng)調試
5.1 硬件調試
通過硬件電路設計,檢查元器件之間的電氣連接,下載基本調試程序,檢測系統(tǒng)板運行狀況,在對USB枚舉測試時,通過USB數(shù)據(jù)線連接至電腦,可以對flash存儲設備進行讀寫操作。
5.2 軟件調試
5.2.1 LIB庫的編譯
本系統(tǒng)的軟件開發(fā)環(huán)境是MDK,在程序基本模塊的底層驅動編寫完善以后,將STM32的底層外設驅動庫和μC/GUI庫函數(shù)編譯封裝成LIB庫,在后期程序開發(fā)時,大大提高了程序的編譯效率,縮短了軟件開發(fā)周期。
5.2.2 Finsh Shell調試組件本系統(tǒng)采用RT-Thread嵌入式操作系統(tǒng),通過其自帶的用戶命令行組件Finsh Shell查看系統(tǒng)運行狀況。通過超級終端輸入相應的命令來使用Finsh Shell.Finsh Shell在RT-Thread中被設計成一個獨立的線程,通過串口設備輸入相應的命令,系統(tǒng)對用戶命令進行解析執(zhí)行,可用來獲取系統(tǒng)運行時信息,對任意寄存器和內存地址進行讀寫操作,還能夠直接在shell中調用系統(tǒng)函數(shù),訪問系統(tǒng)變量。FinshShell組件的使用,在很大程度上提高了調試程序的效率。
5.2.3 圖片解碼調試
由于圖片解碼算法占用內存較大,考慮到圖片解碼算法在STM32中可能會因為內存分配不足而無法正常運行,在驗證圖片解碼函數(shù)的正確性時,先在PC機的VC模擬器上運行,用以給圖片解碼算法提供一個理想的運行平臺。在模擬器中,用數(shù)組存儲圖片二進制源碼,用解碼算法對圖片的數(shù)組數(shù)據(jù)進行解碼,驗證解碼算法的正確性。在模擬器運行正確后,再將圖片解碼算法移植到本系統(tǒng)上運行,實踐證明,STM32的內存足以支持圖片解碼算法正常執(zhí)行。實驗在VC模擬器中運行的效果圖如圖11所示。
6.結論
本文介紹了基于RT-Thread和STM32的數(shù)碼相框的設計方案,通過設計相關硬件電路和軟件算法,實現(xiàn)了數(shù)碼相框對JPEG格式圖片文件的瀏覽功能。本系統(tǒng)設計的基于連續(xù)IDCT變換的JPEG解碼算法能夠正確穩(wěn)定完成JPEG格式圖像的解碼,解碼速度較快,恢復圖像的質量良好。實際測試表明,本方案具有很強的實用性。
晶振相關文章:晶振原理
評論