ํ์ง์์ ์ํ์ฐฉ์ค๊ฐ ๋ด๊ธด FFT ์ง์!
๋ฐฐ์๋ณด๊ณ ์ถ์ง ์๋์? ๐
๊ฐ์ ์ฃผ์ ๐
์ฝ๋ฉ์ผ๋ก FFT๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ๋ง์ ํ๊ณ๊ฐ ์์ต๋๋ค. ์ ๋ FFT๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ฌ๋ฌ ์๋ฃ๋ฅผ ์ฐพ์๋ณด๋ฉด์ ๋ง์ ์ํ์ฐฉ์ค๋ฅผ ๊ฒช์์ต๋๋ค. ์ฒ์๋ถํฐ ๋๊น์ง ๊น๋ํ๊ฒ ์ ๋ฆฌ๋ ์๋ฃ๊ฐ ์์ผ๋ฉด, STM 32๋ฅผ ์ด์ฉํ์ฌ FFT๋ฅผ ๊ตฌํํ๋ ค๊ณ ํ๋ ๋ง์ ๊ฐ๋ฐ์๋ถ๋ค๊ป ๋์์ด ๋ ๊ฑฐ๋ผ ์๊ฐํ๋ฉฐ ๊ฐ์๋ฅผ ๋ง๋ค๊ฒ ๋์์ต๋๋ค.
๋ณธ ๊ฐ์๋ STM 32์์ DSP Library๋ฅผ ์ด์ฉํ์ฌ FFT๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์์ธํ๊ฒ ์ค๋ช
ํ์ฌ ๋๋ฆฝ๋๋ค. STM32CubeIDE ๋ฅผ ์ด์ฉํ์ฌ ํ๋ก์ ํธ ์ค์ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น, ์ฝ๋ ๊ตฌํ, ๊ฒฐ๊ณผ ํ์ธ๊น์ง ๋ชจ๋ ๊ณผ์ ์ ์ค๋ช
ํ์ฌ ๋๋ฆฝ๋๋ค. CMSIS์ DSP Library๋ฅผ ์ค์นํ๋ ๊ณผ์ ๋ถํฐ Library์ ํฌํจ๋ ์์ ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ณ , ์ค์ ๋ก FFT๋ฅผ ๊ตฌํํ๋ ์ผ๋ จ์ ๊ณผ์ ๋ค์ ์ค๋ช
ํฉ๋๋ค. STM32๋ฅผ ์ฌ์ฉํด๋ณธ ๊ฒฝํ์ด ์๋ ๊ฐ๋ฐ์๋ถ๋ค์ด ํ ๋จ๊ณ ์
๊ทธ๋ ์ด๋ํ ๊ธฐํ๊ฐ ๋ ๊ฒ์
๋๋ค. STM32๋ฅผ ์ฒ์ ์ ํ๋ ๋ถ๋ค๋ ๋ฌธ์๋ฅผ ๋ฐ๋ผ ํ๋ค ๋ณด๋ฉด STM32๋ฅผ ์ดํดํ๊ณ ํ์ฉํ ์ ์์ ๊ฒ์
๋๋ค. ๋ณธ ๊ฐ์์์๋ ADC์ ์ฌ์ธํ๋ฅผ ์
๋ ฅํด์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด ๋ณผ ์ ์๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
์ ๊น! โ FFT๋?
FFT๋ Fast Fourier Transform์ผ๋ก, ์ฃผํ์ ๋๋ฉ์ธ์์์ ์ ํธ์ฒ๋ฆฌ ๋ถ์ผ์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
ST ์ฌ์์๋ DSP(Digital Signal Processing, ๋์งํธ ์ ํธ์ฒ๋ฆฌ)๋ฅผ ์ํ Library๋ฅผ ์ ๊ณตํฉ๋๋ค. DSP Library๋ฅผ ์ด์ฉํ๋ฉด FFT๋ฟ๋ง ์๋๋ผ, FIR, IIR ํํฐ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์ ํธ์ฒ๋ฆฌ, ์ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ณธ ๊ฐ์๋ฅผ ํตํ์ฌ DSP Library๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ฒ ๋๋ฉด ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ๊ตฌํํ ์ ์์ต๋๋ค. ๊ฐ์์์ ์ดํด๊ฐ ์ ๋๋ ๋ถ๋ถ์ ์ธํ๋ฐ ์ปค๋ฎค๋ํฐ ๋๋ ์ ๊ฐ ์ด์ํ๋ ์นดํ๋ฅผ ํตํ์ฌ ์ง๋ฌธ์ ์ฌ๋ ค์ฃผ์๋ฉด ๋ต๋ณํด ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ข ์๊ฐ ์ ๋ฐ๋์ ํ์ธํด์ฃผ์ธ์!
- ๋ณธ ๊ฐ์๋ ์ ์๋ฌธ์ ํ์์ผ๋ก ๊ตฌ์ฑ๋ ํ
์คํธ ๊ฐ์์
๋๋ค. ๊ฐ์๋ฅผ ์๊ฐํ์๋ ๋ถ๋ค๊ป๋ ๊ฐ์์ ์ค๋ช
๋์ด ์๋ ๋ชจ๋ ์์ค ํ์ผ์ ์ ๊ณตํฉ๋๋ค. ๋๋ฒ๊น
์ ์ํ Windows Program๋ ์ ๊ณตํฉ๋๋ค.
- ๊ฐ์์์๋ NUCLEO-F411RE ๊ฐ๋ฐ ๋ณด๋๋ฅผ ์ฌ์ฉํ๊ณ , ์ปดํ์ผ๋ฌ ํด์ STM32CubeIDE v1.9.0์ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ์ ์๋ฃ๋ '์น์
0 - ์๋ฃ ๊ณต์ ๋งํฌ - ์ฒจ๋ถํ์ผ'์์ ๋ค์ด๋ฐ์ ์ ์์ต๋๋ค.
์ด๋ฐ ๋ถ๋ค๊ป ์ถ์ฒํด์ ๐โโ๏ธ
ST ์ฌ์ MCU์ ๊ด์ฌ ์๋ ๋ถ
DSP ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ์ ๊ด์ฌ ์๋ ๋ถ
์ด๋ฐ ๊ฑธ ๋ฐฐ์์ ๐
HW์ SW์ ๊ตฌ์ฑ
DPS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๋ฐ
ํ๋ก์ ํธ ์ค์ ๋ฐฉ๋ฒ
์์ค ์ฝ๋ ๊ตฌํ
๊ฒฐ๊ณผ ํ์ธ
์์ธ ์ปค๋ฆฌํ๋ผ์ด ๊ถ๊ธํ๋ค๋ฉด?
- ๊ฐ์ (3)
- HW ๊ตฌ์ฑ (4)
- FW ๋ค์ด๋ก๋ ํ๋งต (5)
- ์ ์ ํ๋งต (5)
- UART ํ๋งต (5)
- ๊ทธ ์ธ ํ๋งต (6)
- ํ๋ก๊ทธ๋จ ๋ค์ด๋ก๋ (7)
- ST-LINK FW ์
๋ฐ์ดํธ (8)
- ๋ณด๋ ์ฐ๊ฒฐ (9)
- SW ๊ตฌ์ฑ (10)
- SW Package ์ค์น (10)
- ํ๋ก์ ํธ ์์ฑ (12)
- Configuration (14)
- SYS, RCC (15)
- Clock Configuration (16)
- ADC ์ค์ (17)
- Timer ์ค์ (19)
- UART1 ์ค์ (21)
- GPIO ์ค์ (22)
- DSP Library ์ค์น (24)
- ์์ค ์ฝ๋ ๊ตฌํ (31)
- Formatter ์ค์ (31)
- ์์ค ๋ถ์ (33)
- ์ถ๊ฐ๋ ํจ์ ์ค๋ช
(37)
- common.h (37)
- uart1.h, uart1.c (37)
- comm_task.h, comm_task.c (37)
- arm_fft_bin_data.c (37)
- arm_fft_bin_f32.h, arm_fft_bin_f32.c (38)
- ๊ฒฐ๊ณผํ์ธ (39)
- ํ์ด๋จธ ์ธํฐ๋ฝํธ ํ์ธ (40)
- ADC ์
๋ ฅ ํํ ํ์ธ (41)
- FFT ๊ฒฐ๊ณผ ํ์ธ (43)
- FFT ์์์๊ฐ ์ธก์ (44)
- ๋ฆด๋ฆฌ์ฆ ๋ชจ๋์ ๋๋ฒ๊ทธ ๋ชจ๋ (45)
- ์ฐธ๊ณ ์๋ฃ (46)
- Revision History (47)
์์ ์ง๋ฌธ Q&A ๐ฌ
Q. ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์ํด ์ค๋นํด์ผ ํ ์ฌํญ์ด ์๋์?
๋ณธ ๊ฐ์๋ ์ค์ต๋ณด๋ NUCLEO-F411RE์์ ์งํ๋ฉ๋๋ค. ๋ง์ฝ ๋ณด๋๊ฐ ์ค๋น๋์ง ์์๋ค๋ฉด ๋จผ์ ๋ด์ฉ์ ๋ณด์๊ณ ๋์ค์ ๋ณด๋๋ฅผ ๊ตฌ์
ํด์ ๋ณด๋ ์์์ ํ์ธํด ๋ณด์๊ธธ ๋ฐ๋๋๋ค.
Q. ํ๋ก๊ทธ๋จ ํด์ ๋ฌด์์ ์ฌ์ฉํ๋์?
ST์์ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋ STMCubeIDE v1.9.0์ ์ฌ์ฉํฉ๋๋ค. ์๊ฐ ์ ์ ์ค์นํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค.
์ง์๊ณต์ ์ ์๊ฐ โ๏ธ
์ด๋ ฅ ์ฌํญ
์ ๋ 20์ฌ ๋
๋์ ๋๊ธฐ์
, ์ค์๊ธฐ์
์์ ๊ฐ๋ฐ์๋ก ์ผํด์๊ณ ํ์ฌ๋ ์์ ๊ธฐ์
์ ์ด์ํ๊ณ ์์ต๋๋ค. CCTV์ฉ ISP (Image Signal Processing) ASIC๋ฅผ ๊ฐ๋ฐํ์๊ณ OLED ๊ฒ์ฌ ์ฅ๋น, DAQ (Data Acquisition System) ๋ฑ FPGA๋ฅผ ์ด์ฉํ ๋ง์ ์ ํ์ ๊ฐ๋ฐํ์์ต๋๋ค. FPGA๋ฟ๋ง ์๋๋ผ FW ๊ฐ๋ฐ (STM32, PIC32, AVR, ATMEGA ๋ฑ), ํ๋ก์ค๊ณ, Windows Program ๋ฑ ๋ง์ ๊ฒฝํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.