Toby's Study Blog
article thumbnail

๐Ÿณ ADC๋ž€? (Analog - to - Digital Converter)

MCU์—์„œ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋””์ง€ํ„ธ ์‹ ํ˜ธ(1 ๋˜๋Š” 0)๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์žฅ์น˜์ด๋‹ค.   
๋Œ€๋ถ€๋ถ„์˜ MCU์—๋Š” ADC ์žฅ์น˜๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค.

์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ vs ๋””์ง€ํ„ธ ์‹ ํ˜ธ

๐Ÿณ ์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ -> ๋””์ง€ํ„ธ ์‹ ํ˜ธ ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•

์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ -> ๋””์ง€ํ„ธ ์‹ ํ˜ธ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ 1) ํ•„ํ„ฐ๋ง -> 2) ์ƒ˜ํ”Œ๋ง -> 3) ์–‘์žํ™” -> 4) ๋ถ€ํ˜ธํ™” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•˜๋ฉฐ
๊ฐ ๊ณผ์ •์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

1. ํ•„ํ„ฐ๋ง

์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ์—์„œ ์›ํ•˜๋Š” ๋Œ€์—ญ์„ ์„ค์ •ํ•ด ์›์น˜ ์•Š๊ฒŒ ๋“ค์–ด์˜จ ์›ํ•˜์ง€ ์•Š๋Š” ๋Œ€์—ญ์˜ ์‹ ํ˜ธ(๋…ธ์ด์ฆˆ ์‹ ํ˜ธ)๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

2.์ƒ˜ํ”Œ๋ง

ํ•„ํ„ฐ๋ง๋œ ์‹ ํ˜ธ๋ฅผ x์ถ•(์‹œ๊ฐ„) ๊ธฐ์ค€์œผ๋กœ ์ชผ๊ฐœ๊ณ  ์ชผ๊ฐ  ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ(x๊ฐ’์— ๋”ฐ๋ฅธ) y ๊ฐ’๋“ค์„ ์–ป๋Š”๋‹ค. 
(โ€ป ๋งŽ์ด ์ชผ๊ฐค์ˆ˜๋ก ์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ์™€ ๊ทผ์‚ฌํ•œ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋‚˜ ๋„ˆ๋ฌด ๋งŽ์ด ์ชผ๊ฐœ๋ฉด ๋ณ€ํ™˜์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.)

3 ์–‘์žํ™” & ๋ถ€ํ˜ธํ™”

์ƒ˜ํ”Œ๋ง์„ ํ†ตํ•ด ์–ป์€ y์ถ• ๊ฐ’๋“ค์„ 1byte ๋‹จ์œ„๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฐ’์œผ๋กœ ๋งค์นญ์‹œํ‚จ ํ›„(e.g. 12.345123 -> 12)
0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ๋กœ ๋ถ€ํ˜ธํ™”ํ•˜์—ฌ ๋””์ง€ํ„ธ ๊ฐ’์„ ์–ป๋Š”๋‹ค.
(โ€ป ์ปดํ“จํ„ฐ ๋ฐ์ดํ„ฐ ์ฃผ์†Œ ๋‹จ์œ„๋Š” 1byte(8bits) ์ด๋ฉฐ ์˜ˆ๋ฅผ ๋“ค์–ด 12๋ผ๋Š” ๊ฐ’์„ ๋ถ€ํ˜ธํ™”ํ•˜๋ฉด 11110100์ด ๋œ๋‹ค.)   

 

๐Ÿณ F429zi ADC block diagram

Block ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋ณด๋ฉด ๋Œ€๋žต์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. 
1. ADC1 ~ ADC 15 GPIO ports๋กœ๋ถ€ํ„ฐ ์™ธ๋ถ€ ์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
2. ์ž…๋ ฅ๋ฐ›์€ ์‹ ํ˜ธ๊ฐ€ ADC Converter์— ์˜ํ•ด ๋ณ€ํ™˜๋œ๋‹ค.
(โ€ป Regular Channel : ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ, Injected Channel : ์ถ”๊ฐ€์ ์ธ ์„ค์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ)
3. ๋ณ€ํ™˜๋œ ์‹ ํ˜ธ๊ฐ€ data register์— ๋‹ด๊ธด๋‹ค.

 

๐Ÿณ DMA(Direct Memory Access) ๋ž€?

์ผ๋ฐ˜์ ์œผ๋กœ MCU์—์„œ ํŠน์ •ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ  
1) CPU ๋ ˆ์ง€์Šคํ„ฐ์— ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ -> 2) ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ๋กœ๋“œ ๋ฐ ์ž‘์—… ์ˆ˜ํ–‰
2๊ฐœ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ 1๋ฒˆ ๊ณผ์ • ์—†์ด(CPU ๋ถ€ํ•˜ ์—†์ด) ๋ฐ”๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ
๋ฐ”๋กœ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด DMA์ด๋‹ค.  

 

๐Ÿณ F429zi DMA Block Diagram

F429zi Block Diagram

์ฒซ ๋ฒˆ์งธ๋กœ F429zi์˜ ๊ฒฝ์šฐ ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๋™์ผํ•œ ๊ตฌ์กฐ์˜ DMA๊ฐ€ 2๊ฐœ ์กด์žฌํ•˜๋ฉฐ 
ํ•˜๋‚˜์˜ DMA ๋‹น 8๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์ด ์กด์žฌํ•˜๋ฉฐ ์ด ์ŠคํŠธ๋ฆผ์€ ๋‹ค์‹œ 8๊ฐœ์˜ ์ฑ„๋„์„ ๊ฐ€์ง„๋‹ค.
(โ€ป ์ฑ„๋„์€ DMA ์ปจํŠธ๋กค๋Ÿฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌผ๋ฆฌ์ ์ธ ํ†ต๋กœ ๊ฐœ๋…์ด๊ณ 
     ์ŠคํŠธ๋ฆผ์€ ์ฑ„๋„๋กœ ๋ถ€ํ„ฐ ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋“ค์ด ์—ฐ์†์ ์œผ๋กœ ํ˜๋Ÿฌ arbiter์— ๋“ค์–ด๊ฐ€๋Š” ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ธ๊ฒƒ ๊ฐ™๋‹ค.) 
DMA ์ฑ„๋„๋“ค์€ ๊ฐ๊ฐ ์‚ฌ์šฉ ์šฉ๋„๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •ํ•ด์ ธ ์žˆ์œผ๋ฉฐ ๊ฐ ์ฑ„๋„์˜ ์šฉ๋„์— ๋งž์ถฐ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.  

๋‘ ๋ฒˆ์งธ๋กœ ๊ฐ ์ฑ„๋„์„ ํ†ตํ•ด ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋Š” arbiter์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋ฉฐ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๊ฑฐ์ณ ์ถœ๋ ฅ ํฌํŠธ์— ์ „์†ก๋œ๋‹ค.
(โ€ป Arbiter : DMA ์ฑ„๋„ ๊ฐ„ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •, ์ถฉ๋Œ์„ ๊ด€๋ฆฌ ๋“ฑ์˜ ์ž‘์—…์„ ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ์žฅ์น˜)


์„ธ ๋ฒˆ์งธ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์—ฐ๊ฒฐ๋œ AHB ๋ฉ”๋ชจ๋ฆฌ ํฌํŠธ์™€ ์ฃผ๋ณ€ ์žฅ์น˜์— ์—ฐ๊ฒฐ๋˜๋Š” AHB ์ฃผ๋ณ€ ์žฅ์น˜ ํฌํŠธ 2๊ฐœ์˜ ์ถœ๋ ฅ ํฌํŠธ๊ฐ€ ์กด์žฌํ•˜์—ฌ 
์ฃผ๋ณ€๊ธฐ๊ธฐ - ๋ฉ”๋ชจ๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ - ์ฃผ๋ณ€๊ธฐ๊ธฐ, ๋ฉ”๋ชจ๋ฆฌ - ๋ฉ”๋ชจ๋ฆฌ ๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (ํ•ด๋‹น ๊ฒฝ์šฐ์—๋Š” DMA2๋งŒ) 

 

๋„ค ๋ฒˆ์งธ๋กœ AHB slave ํฌํŠธ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ ๋ ˆ์ง€์Šคํ„ฐ์— ์ ‘๊ทผํ•˜๊ณ  DMA ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

DMA2 ์ŠคํŠธ๋ฆผ๋ณ„ ์ฑ„๋„ ์šฉ๋„ ํ…Œ์ด๋ธ”

 

 

'embedded' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[stm32] I2C ํ†ต์‹  ์ด๋ก  ์ •๋ฆฌ  (0) 2023.09.11
[stm32] ADC & DMA ์‹ค์Šต  (0) 2023.09.06
[stm32] UART ์‹ค์Šต  (0) 2023.08.30
[stm32] UART ์ด๋ก  ์ •๋ฆฌ  (0) 2023.08.16
[stm32] Timer ์‹ค์Šต  (0) 2023.08.16
profile

Toby's Study Blog

@Toby12

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!

๊ฒ€์ƒ‰ ํƒœ๊ทธ