개발 대상이 되는 MCU에 대해서 잘 알고 있는 것은 너무나 중요한 일이다.
인터넷에서 자료들을 많이 구할 순 있지만, MCU를 직접 만든 제조사의 데이터시트는 제일 믿음직하다.
오늘은 ESP32-DevkitV4 개발 기트의 MCU, ESP32-WROOM-32 시리즈의 공식 데이터시트를 분석해보고자 한다.
(1) 2가지 MCU에 대한 정보를 포함하고 있다.
ESPRESSIF 제조사에서 제공되는 데이터시트는 2가지 MCU에 대한 정보들을 담고 있다.
ESP32-WROOM-32D는 무선안테나가 내장 되어있고, ESP32-WROOM-32U는 무선안테나가 포함되어 있지않아 외장안테나를 꽃을 수 있도록 안테나 단자가 구성되어있다. 딱 안테나의 내외장의 구별일 분, 성능,스펙은 전부 동일하다.
(2) 개요
ESP32-WROOM-32 MCU의 설명(같은 자랑)이 나와 있다. ESP32는 가장 강력한 범용 WiFi와 블루투스 기능을 가진 MCU이다.
이 데이터시트 문서의 정보 대상이 되는 32D와 32U의 비교 시트이다. 크기와 안테나의 포함 유무만 다르고 나머지는 전부 동일한 스펙을 가진다.
ESP32-WROOM-32에서 지원되는 인터페이스에 대한 설명이 나와있다. 터치센서, 홀센서, SD카드 인터페이스, 이더넷, 고속 SPI,UART,I2S와 I2C를 지원한다고 한다.
ESP32-WROOM-32는 임베디드 실시간 OS인 freeRTOS도 지원한다. 또한 보안 OTA(Over the Air, 무선 F/W 업데이트) 기능을 지원한다고 한다. OTA의 경우는 매우 필요한 기능인데 보안OTA에 대해서는 한번 알아봐야겠다.
* freeRTOS : 써본 경험은 없지만, 임베디드 시스템을 위한 OS (MCU에 올릴수 있는 OS)이며, 여러 개의 모든 TASK를 1초내에 끝내는 것을 보장하여 속도와 작업의처리가 효율적이라고 한다. 라이센스는 상업용으로 사용해도 무료이며 실시간 처리가 필요한 군장비에도 사용된다고 한다.
* OTA : 무선 네트워크를 통해, MCU의 F/W를 업데이트 할 수 있는 기능, 이 기능이 있으면 별도로 F/W업데이트를 위한 USB-UART 기능을 사용하지 않아도 된다.(제일 좋은것은 귀찮게 컴퓨터와 USB로 연결하지 않아도 되고, 네트워크가 연결되어 있다면 언제 어디서나 F/W 업데이트가 가능하다는 것)
(3) RF사양
WiFi는 802.11 b/g/n만 사용이 가능하다. 즉 흔히 알고 있는 5GHz대역의 WiFi에 접속할 수 없다.
2.4GHz대역의 WiFi만 접속할 수 있다.
*참고 : 802.11의 무선네트워크를 정의하는 표준이다. 802.11ac가 WiFi중에서도 5GHz 대역대를 사용하는 표준이다. 802.11ax는 WiFi6으로 잘 알려져 있다.
블루투스는 v4.2와 블루투스LE를 지원한다.
(4) 하드웨어 사양
지원하는 인터페이스에 대해서는 다를바 없고, CAN통신도 지원한다고 한다.
4MB의 플래시메모리가 내장되어있는데, SPI통신 칩 형태로 되어있으며 이 메모리에 프로그램 소스가 올라가게 된다.
평균 공급전압은 3.0V~3.6V라고 한다. 바람직하게 그냥 3.3V를 사용하도록 하자.
이 MCU의 평균 전류는 80mA라고 한다. 평균적으로 MCU에서만 평균적으로 80mA를 소모한다는 이야기가 되겠다. (*참고로 WiFi기능을 사용하면 최대 240mA까지 소모한다고 한다.)
당연하게도 주변회로에 대해서는 포함하지 않은 전류이고, 순수하게 MCU에서만 사용되는 평균 전류이다.
MCU에서 공급해 줄 수 있는 전류는 500mA 이다. (순시전력으로 따지면 3.3V*0.5A = 1.65W 공급가능)
동작가능 온도는 -40도~85도로 제법 괜찮은 사양을 보인다.
SPI플래시메모리를 8MB 또는 16MB까지 맞춤형으로 주문이 가능하다고 한다.
사용온도 또한 -40도~+105도 까지 맞춤형 제작이 가능하다
핀에 대한 PCB레이아웃 도식이다. 데이터시트에서는 32D를 기준으로 두었지만, 아래 Note에 32U는 크기만 다르고 핀맵은 동일하다고 명시되어있다.
(5) GPIO 에서 중점적인 것들
특별한핀을 제외하고는 개발보드 GPIO 기능들과 다를게 없다.
EN핀은 MCU의 활성화를 위한 핀이다. 개발보드 상에서 EN버튼을 볼 수 있다.
그 버튼이 그라운드로 EN핀과 연결되어 있다. (커패시터는 채터링현상을 방지)
즉 버튼을 누르면 EN핀 신호를 0V(LOW)로 만들어 MCU의 활성화가 꺼진다.
다시 버튼을 때면 풀업저항과 연결된 3.3V(HIGH)가 되어 다시 초기화 된다. (즉 RESET버튼이 되는것이다.)
평상시에는 활성화를 위해 풀업저항이 연결된다.
IO2와 IO0는 부트모드와 관련된 핀인데 다운로드모드 (F/W를 메모리에 전송시)가 되기 위한 조건은
IO2와 IO0가 하드웨어적으로 0V (LOW)가 되어야한다.
따라서 기본적으로 풀업저항이 되어있는 IO0 (평상시에 3.3V, HIGH가 유지됨)를 0V를 만들어 주고 MCU를 다시 활성화 하면 다운로드 모드가 된다. (IO2는 기본적으로 풀다운이 되어있기 때문에 0V가 유지 될것이므로 IO2는 내비두어도 된다)이를 응용하여 CP2102의 DTR,RTS 신호를 사용해 트랜지스터로 제어하면 자동적으로 펌웨어 다운로드가 되는 회로가 된다.
* DTR 신호 : 통신간에 동작가능 여부 확인 핀, 자신(CP2102)이 동작가능한 상태라면 HIGH을 보낸다.
* RTS 신호 : 통신대상이 되는 장비에게 송신을 해도 좋다는 (또는 요구하는) 신호, 자신(CP2102)가 수신가능한 상황일 경우 HIGH, 그렇지 않을 경우 LOW
ESP32 Devkit V4는 이러한 원리와 회로로 자동으로 F/W를 전송하는 기능을 갖추고 있다.
(6) Absolute Maximum Ratings (최대 절대 정격)
데이터시트의 꽃, 최대 절대 정격이다.
MAX치를 초과했을 경우, 부품/소자가 파괴되거나 기능이 손실되기 때문에 항상 주의깊게 숙지해야한다.
ESP32-WROOM-32의 경우 최대 절대 정격에 대한 3가지 파라메터가 있다.
VDD33은 전원 공급 부분인데 -0.3V ~ 3.6V 를 인가하라고 되어있다.
즉, ESP32-WROOM-32에는 5V전원을 인가 할 수 없다. LDO를 통하여 바람직하게 3.3V를 인가해야만한다.
Ioutput은외부로 나가는 전류를 1100mA (1.1A)로 제한하고 있다. 바람직하게 500mA이하의 전류가 흐르도록 저항기를 이용하여 전류제한을 걸어주어야한다.
온도의 경우 영하40도에서 105도 까지로 제한을 두고 있지만 권장작동조건에서 작동할 수 있도록 하는것이 바람직하다.
(6) Recommended Operating Conditions (권장 작동 조건)
권장 작동 전압은 3.3V로 두고 있다. 외부 전원 공급은 0.5A로 제한을 둔다.
온도는 -40도에서 85도 까지 권장하고 있다.
(7) DC 특성 (MCU가 3.3V전원과 25도에서 동작했을 경우기준)
PIN자체의 커패시턴스는 2pF이라고 한다. 정밀함을 추구하지 않는 대부분의 디지털회로에서는 무시할 수 있는 값이긴하다. (PCB보드의 라인만 연결해도 이 커패시턴스는 달라질 것이다.)
[ INPUT ]
LOW레벨로 동작하는 전압의 기준은 -0.3 ~ (0.25*3.3V) 이된다.
HIGH레벨로 동작하는 전압의 기준은 (0.75*3.3V) ~ 3.6V 이다.
전류의 경우 50나노 암페어 (10^-9)로 매우 낮은 전류에서도 디지털 레벨을 인식하는데 문제가 없다.
[ OUTPUT ]
LOW레벨을 출력하는 전압은 최소 2.64V
HIGH레벨을 출력하는 전압은 최대 3.4V가 된다. (곱이 아니라 합일 것이다... 아니면 내가 잘못된건가? 데이터시트 오류로 일단 믿어야겠다)
전류의 경우는 평균적으로 20~40mA 인 정도만 숙지하면 될 것같다.
[ 내장풀업풀다운 저항 ]
내장되어 있는 풀업 풀다운 저항은 45K옴이다. (약한 풀업,풀다운 / Weak pull_up, weak pull_down)
*참고 : 사실 나도 약한 풀업 풀다운의 기준을 잘 모르겠다. 상대적으로 강한 저항일 경우 약한 풀업 풀다운이라고 하는데...
(8) 도면
'Embedded System > 마이크로컨트롤러' 카테고리의 다른 글
[ESPRESSIF] ESP32-S3-WROOM 분석 (0) | 2024.07.09 |
---|---|
ESP32-DevkitV4 GPIO 기능 정리 (0) | 2023.04.12 |
ADC(Analog Digital Converter)란? (0) | 2023.03.02 |
ESP32 DevkitC V4 가이드 (1) | 2022.12.14 |
GPIO(범용 입/출력 핀)의 기본적인 기능 (0) | 2022.11.29 |