임베디드 장치 디버깅을 위한 UART: 저전력 장치를 위한 모범 사례
USB가 대부분의 주변 장치를 위한 역할을 이어 받았지만 UART는 여전히 건재하며 GPS 모듈부터 Raspberry Pi 및 Arduino 기판에 이르기까지 모든 것을 디버깅하는 데 사용되는 임베디드 시스템에서 부상하고 있습니다.
그러나 초저전력 설계에 대한 한계에 도전하면서 종종 개발자들은 UART가 소리 없는 배터리 킬러인가라는 질문을 하게 됩니다. 이에 대한 답은 반드시 그럴 필요는 없다는 것입니다. 다른 좋은 도구처럼, 모든 것은 구현하는 방법에 따라 달라집니다. 그럼 자세히 살펴보겠습니다.
TX/RX 누설 전류 확인
불필요한 전력 유출을 방지하는 간단한 방법은 TX 및 RX 채널로부터의 누설 전류를 처리하는 것입니다. 누설 전류가 높은 경우가 일반적이지는 않지만 이후의 예기치 않은 전력 유출을 회피하기 위해 잠재적 문제를 초기에 확인하고 해결하는 것이 좋습니다.
저전력 사고로 코드 작성 및 실행
UART를 디버그 스위스 아미 나이프라고 생각해보세요. 개발 중에는 매우 유용하지만 항상 주머니에 칼을 펼치고 다니지는 않을 것입니다. 코드에 #define을 사용하여 디버깅 시에는 UART를 켜고 장치가 생산에 도달하면 끄는 것이 현명합니다. 이는 간단한 트릭이지만 실세계의 악몽으로부터 여러분을 구할 수 있습니다.
여러분과 팀이 전력 소비 최소화에 초집중하고 있다고 상상해 보세요. 지속적인 전류 측정을 실행하면서 큰 진전을 보이고 있습니다. 개발 중 디버깅을 위해 UART의 활성화 상태를 유지하고 일시적인 전력 히트를 허용합니다. 하지만 누군가 실수로 코드를 주 브랜치에 병합하면(UART가 계속 활성화된 상태에서) 수백 만 개의 장치에 걸쳐 무선으로 플래시됩니다. 갑자기, 한 때 효율적이었던 설계가 아케이드 머신처럼 배터리를 소모시키고 많은 고객들이 불만을 토로하게 됩니다.
해결 방법은 전류 소비 벤치마크로 연속 통합 시스템을 설정하는 것입니다. 그러면 이러한 문제가 심각한 실수가 되기 전에 미리 포착할 수 있습니다. 이를 자동화된 안전망이라고 생각하면 코드가 생산에 도달하기 전에 추가적인 암페어를 제어할 수 있습니다.
모든 전원 끄기
UART를 활성화하면 다양한 MCU 블록 및 클록을 비롯하여 소프트웨어의 여러 부분을 활성화할 수 있습니다. MCU는 종종 손쉬운 개발을 위해 모든 것이 기본적으로 켜져 있는 상태에서 설계됩니다. 그러나 MCU가 절전 모드로 전환되기 전에 불필요한 부품을 비활성화해야 합니다. UART 클록이 활성화된 상태로 유지되면 MCU가 가장 깊은 절전 상태에 도달할 수 없어 전력 소비가 증가할 수 있습니다. 클록 트리를 검토하고, 필요하지 않은 경우 UART에 연결된 모든 부품을 적절하게 끄십시오.
실제 Otii 실험
동일한 장치(Seeed Technology의 Seeed Studio XIAO nRF52840)에서 실행되는 두 개의 펌웨어 버전을 비교해 보겠습니다. 모듈을 초기화하고, 플래시 메모리를 설정하고, 짧은 LED 깜박임 시퀀스를 실행한 다음 모듈을 최저 전력 모드로 전환하는 샘플 스크립트를 준비했습니다. 한 버전은 UART가 활성화되어 있고 다른 버전은 UART 없이 실행됩니다. Qoitech의 Otii Ace Pro를 사용해 전류 소비를 측정하여 서로 다른 전압 레벨에서 두 버전의 전력 소비를 분석하고 비교할 수 있습니다.
그림 1에는 능동적으로 UART 메시지를 전송하는 장치가 있고 그림 2에는 절전 상태의 MCU가 있습니다. 파란색 선은 UART가 활성화된 상태를 나타내고 주황색 선은 비활성화된 상태를 나타냅니다. 둘 사이의 차이는 UART가 전력 소비에 미칠 수 있는 영향을 보여줍니다.
그림 1: UART 통신을 지원하는 능동 SeeedStudio XIAO nRF52840 장치 | 활성화(파란색 그래프) | 비활성화(주황색 그래프). (이미지 출처: Qoitech)
그림 2: UART 통신을 지원하는 XIAO nRF52840 장치 저전력 모드(그래프의 선택 부분) | 활성화(파란색 그래프) | 비활성화(주황색 그래). (이미지 출처: Qoitech)
활성 모드에서는 평균 전류 소비가 460μA에서 1.34mA로 증가했습니다(그림 1에 표시). 절전 모드에서는 전류 소비가 2.27μA가 2.19μA로 감소합니다(그림 2). 이는 미미한 차이로 보일 수 있지만, IoT 장치의 경우 대개 절전 시간이 길기 때문에 배터리 수명이 크게 늘어납니다. 분명히, 펌웨어는 UART가 비활성화될 때 최적화됩니다.
Otii를 사용하여 배터리 수명 예측
배터리 수명에 대한 영향을 설명하기 위해 Otii Desktop App의 Battery Life Estimator를 사용했습니다. 또한, 시간당 한 번의 활성 기간을 가정했습니다. 이 기간 동안 장치가 깨어나서 깜박임 시퀀스를 실행한 후 약 3600초 동안 절전 모드로 들어갑니다.
그림 3에서는 UART가 비활성화되어 있고, 그림 4에서는 UART가 활성화된 상태로 UART 사용 여부에 따라 배터리 수명이 크게 달라지는 것을 확인할 수 있습니다.
그림 3: UART 통신이 활성화된 상태의 배터리 수명 추정. (이미지 출처: Qoitech)
그림 4: UART 통신이 비활성화된 상태의 배터리 수명 추정. (이미지 출처: Qoitech)
그 차이는 상당합니다! UART를 활성화한 상태로 두면 추정 배터리 수명이 5.9년에서 11.6일로 줄어듭니다.
요점은 MCU가 절전 모드로 전환되기 전에 UART와 관련된 모든 것이 꺼져 있는지 확인하는 것입니다. Otii제품군을 사용하여 이를 지속적 통합 프로세스에 통합하면 UART가 활성화된 상태에서 실수로 릴리스되어 장치의 배터리 수명이 크게 단축되는 것을 방지할 수 있습니다.
Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.
Visit TechForum


