[STM32] uart:baud rate 저속 환경에서 printf 출력 시 문구 끊긴 현상 - 해결
printf 디버깅시 문구 끊김 현상
그동안 문제없이 stm32 mcu 디버깅 시 printf를 사용하여 시리얼 모니터에서 printf 값을 볼 수 있었습니다
이번에 사용한 stm32u575ciux mcu의 경우 문구가 도중에 끊기는 듯한 현상이 발견되었습니다.
문구를 보면, 출력이 되다가 다른 문구가 출력이 되면서, 이전 것이 중간에 끊기는 것처럼 보입니다.
원인을 해결하지 않고, 짧은 문구만 출력해서 어찌저찌 기능 구현을 하다가 이제 좀 여유가 생긴 후에서야 이 문제를 해결하게 되었습니다.
원인 - uart에서 설정 된 낮은 baud rate 속도
STM32CubeMX를 실행시켜서 디버그 UART의 Baud rate를 9600 에서 115200 Bits/s 로 속도를 상승 시킨 후, 모든 문자가 정상 출력되는 것을 확인했습니다.
학습 : Baud Rate란?
미국의 setra 사에서 정의한 What is baud rate & Why is it important? 를 정리했습니다.
Baud rate는 통신 채널에서 전송되는 정보의 속도를 말합니다.
Baud rate는 일반적으로 직렬 통신을 사용하는 전자기기를 논의할 때 사용됩니다.
직렬 포트 문맥에서, 9600 baud는 직렬 포트가 최대 초당 9600개의 bits를 전송할 수 있음을 의미합니다.
76,800 이상의 baud rates일 경우, 케이블의 길이를 줄여야 합니다.
높은 Buad rate는 설치 품질에 더 민감해집니다. 이는 각 주변 장치에 와이어가 얼마나 풀려있는지에 영향을 받기 때문입니다.
Twisted Pair : 전파 상쇄를 위해, 케이블을 꼬아둔 구조.
느낀점
사실 baud rate가 전송 속도인 것을 알고 있었으나, 안타깝게도 내가 mcu를 너무 혹사시키면 빨리 망가지는게 아닐까 걱정한 나머지(⁉) 가능한 무리를 주지 말자는 생각에 Baud rate를 낮춘게 문제가 됐다.
이번 프로젝트에서도 비슷한 이유로 mcu의 system clock 설정을 4mhz로 매우 낮춰놨다가, 상사님이 말씀하셨다.
나름 비싼 mcu를 쓰고있는데 굳이 스펙을 낮춰서 쓸필요가 있냐고 하셨다.
아직 경험이 없어서 잘 모르는게 많은데, 클럭과 라이프타임에 연관성을 잠깐 조사해봤는데, 나름 연관성이 있었다.
요약 : 같은 mcu를 사용해서 20mhz과 40mhz로 실행
결론 : 더 높은 주파수와 더 높은 전압은 더 많은 전류 소비로 나타납니다. 이는 칩에 소비되는 전력이 더 높아지면서 온도가 더 높아짐을 의미합니다. 따라서 이런 이유로 수명이 낮아질 수 있습니다. 보수적으로 더 낮은 전압에서 더 느린 클럭이 오래 간다고 합니다. 하지만, 쿨러를 사용해서 온도를 인위적으로 낮춰줄 수 있다면 차이가 없을 수 있겠네요.