嵌入式作業系統設計與實作 - 電吉他調音器
DESCRIPTION
TRANSCRIPT
![Page 1: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/1.jpg)
嵌入式作業系統設計與實作 電吉他調音器
楊震向澐丁士宸李昆憶呂科進鄭聖文
![Page 2: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/2.jpg)
二十六小時的堅持,雖然尚未完成
![Page 3: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/3.jpg)
成果 - 電吉他調音器
![Page 4: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/4.jpg)
系統架構
Stm32F429Discovery
Guitar
Battery
ADC
USB
Buzzer TimerOperating System:
Rtenv Plus
![Page 5: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/5.jpg)
調音器程式流程
音訊輸入
ADC轉換
快速傅立葉轉換(FFT)
音調頻率,可表示為音名
![Page 6: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/6.jpg)
電吉他
電吉他的拾音器是由磁鐵和線圈構成,會產生磁場
當弦被撥動時,磁場會收到干擾,產生電壓
![Page 7: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/7.jpg)
聲音頻率、音名
C D E F G A BDo Re Mi Fa Sol La Si
不同的音調及音高會對應至不同之頻率,以鋼琴中央C而言 ,頻率約為261.6Hz
![Page 8: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/8.jpg)
類比數位轉換(ADC)
● 透過ADC將外部類比訊號轉成離散數位訊號● 採用單一頻道連續取樣模式● 利用DMA來搬移 ADC產生的資料來減少CPU花費在讀寫的時間
● 將取樣的結果做快速傅立葉轉換來取得頻率
![Page 9: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/9.jpg)
開發問題
● DMA的模式無法搞定, Normal mode搬移資料完成後無法重新啟動。
● 若不以DMA完成後再計算,則勢必要定時取樣● 更動排程時間造成作業系統無法預知的行為
![Page 10: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/10.jpg)
開發問題
● 從示波器上看到,電吉他會產生一個正負約0.2mV的正弦波來回振動
● 然而硬體的ADC只能量到最多0 ~ 3.6V之間的電壓,導致負電壓量測不到
問題:如何量到完整的波形?● 答案:調整基準點、波形 -> 以平移放大電路解決
● 將完整波形level-shift到正電壓區● 利用放大電路增加波形的可分辨力
![Page 11: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/11.jpg)
平移、放大電路,使用 OAP
![Page 12: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/12.jpg)
測試 ,感謝工科系、電機系支援!
![Page 13: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/13.jpg)
電路成品
![Page 14: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/14.jpg)
平移、放大電路,使用 OAP
![Page 15: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/15.jpg)
原訊號
![Page 16: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/16.jpg)
調整後
![Page 17: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/17.jpg)
快速傅立葉轉換 (Fast Fourier Transform)
與 Discrete Fourier Transform 一樣,將訊號從time domain 轉換成 frequency domain
DFT 的缺點:運算量過大:N^2
FFT: N lg N
![Page 18: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/18.jpg)
快速傅立葉轉換 (Fast Fourier Transform)
![Page 19: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/19.jpg)
快速傅立葉轉換 (Fast Fourier Transform)
![Page 20: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/20.jpg)
快速傅立葉轉換 (Fast Fourier Transform)
FFT 概念:將 DFT 拆成奇偶兩部分
![Page 21: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/21.jpg)
快速傅立葉轉換 (Fast Fourier Transform)
F(0)
F(1)
F(2)
F(3)
F(4)
F(5)
F(6)
F(7)
0
1
2
3
4
5
6
7
0
2
4
6
1
3
5
7
0
4
2
6
1
5
3
7
![Page 22: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/22.jpg)
開發問題
ARM 有提供 CMSIS DSP Library,可是在開發上遇到重重困難
VFP Register 問題將 compiler 版本更新至 4.8.4 以上
需要開啟 FPU-DARM_MATH_CM4-D__FPU_USED=1 -D__FPU_PRESENT=1-mfpu=fpv4-sp-d16 -mfloat-abi=hard
![Page 23: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/23.jpg)
開發問題
ARM 有提供 CMSIS DSP Library,可是在開發上遇到重重困難
VFP Register 問題將 compiler 版本更新至 4.8.4 以上
需要開啟 FPU-DARM_MATH_CM4-D__FPU_USED=1 -D__FPU_PRESENT=1-mfpu=fpv4-sp-d16 -mfloat-abi=hard
![Page 24: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/24.jpg)
開發問題
編譯 flag 的優化層級為 –O0,造成部分 Library程式碼沒有被優化 -> 硬作 !
![Page 25: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/25.jpg)
開發問題
ARM FFT 調用函式:arm_cfft_f32()所需的arm_bitreversal_32.s,一直沒有被link進來,試過很多方法,依然無解
->毅然決然,到網路上找尋 FFT 4096 的原始碼
![Page 26: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/26.jpg)
開發問題
板子的 floatint point extension 沒有被開啟->還是硬幹
/libraries/CMSIS/Include/core_cm4.h
/libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c
![Page 27: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/27.jpg)
開發問題
ARM 有提供 CMSIS DSP Library,可是在開發上遇到重重困難
VFP Register 問題將 compiler 版本更新至 4.8.4 以上
需要開啟 FPU-DARM_MATH_CM4-D__FPU_USED=1 -D__FPU_PRESENT=1-mfpu=fpv4-sp-d16 -mfloat-abi=hard
![Page 28: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/28.jpg)
節拍器程式流程
計算節拍週期
設定定時器發聲(蜂鳴器)
延遲
![Page 29: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/29.jpg)
單位 :BPM (Beat Per Minute)
表示一個指定的音符,例如四分音符在一分鐘內出現的次數(例如四分音符在一分鐘內出現的次數,120為 BPM值,表示每分鐘演奏 120個四分音符 )
樂譜上常記有音樂速度標記如 :Allegro - 快板( 120 - 168 bpm)Moderato - 中板(90 - 115 bpm)Andante - 行板(76 - 108 bpm)
...Etc
![Page 30: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/30.jpg)
蜂鳴器(Buzzer)
利用timer對一個 GPIO以固定頻率輸出即可發出聲音因此改變 timer的時間就能發出不同高低的聲音
![Page 31: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/31.jpg)
LCD模組 (觸控螢幕 )
優點 :使用者互動界面缺點 :電阻式觸控螢幕 ,流暢度有待加強
![Page 32: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/32.jpg)
LCD繪圖原理
Layer
圖層是一排排的Pixel刷新
如果在更新完就立即顯 ,就會出現閃爍情況
![Page 33: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/33.jpg)
開發問題
圖形更新問題(圖層閃爍 )解決方案 :Double buffer
硬體過新,軟體Library有 bug (ST Library)
![Page 34: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/34.jpg)
開發問題
圖形更新問題(圖層閃爍 )解決方案 :Double buffer
硬體過新,軟體Library有 bug (ST Library)
![Page 35: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/35.jpg)
解決畫面閃爍 - Double buffer
Show layer Hidden layer
![Page 36: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/36.jpg)
解決畫面閃爍 - Double buffer
Hidden layer
Show layer
圖案先繪製到下面的 buffer
![Page 37: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/37.jpg)
解決畫面閃爍 - Double buffer
Hidden layer
Show layer
繪圖完畢
![Page 38: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/38.jpg)
解決畫面閃爍 - Double buffer
Show layer
Hidden layer
圖層交換
![Page 39: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/39.jpg)
Thanks for listening!
![Page 40: 嵌入式作業系統設計與實作 - 電吉他調音器](https://reader034.vdocuments.net/reader034/viewer/2022050707/5463b392af79590c328b5f88/html5/thumbnails/40.jpg)
Demo Time!