이 시리즈의 기사에서는 마이크로컨트롤러, 데이터 생성 및 처리 주변 장치, 그리고 다른 스마트 기기들 사이에 정보를 전송하기 위해 사용할 수 있는 다양한 종류의 직렬 통신 프로토콜을 살펴볼 것입니다. 직렬 통신에 대한 이 소개를 따르는 기사들은 일반적으로 사용되는 몇 가지 더 인기 있는 프로토콜을 다룰 것입니다. 이 시리즈의 마지막에서는 각각의 장단점을 요약할 것입니다. 직렬 통신 버스를 구현해야 할 때 다음에 이 자료가 귀하의 특정 상황에 가장 적합한 옵션을 선택하는 데 도움이 되기를 바랍니다.
요즘 디지털 전자기기는 시장에 나와 있는 대부분의 전자 장치에서 가장 중요한 부분이 되었습니다. 많은 다른 칩들이 사용되고 있으며, 그 복잡한 작동은 다른 유사한 디지털 구성 요소로부터 보내지고 받는 정보에 의존합니다. 이러한 칩들 사이의 통신을 가능하게 하기 위해 공통 프로토콜 표준이 만들어졌습니다. 만약 각 IC나 장치가 고유한 프로토콜을 사용하여 통신한다면 상상해 보십시오. 이것은 마치 모든 인간이 자신만의 고유한 언어를 사용하여 말하는 것과 같을 것입니다. 우리 중 누구도 서로를 이해할 수 없을 정도로 혼란스러울 것입니다.
현재 우리는 다양한 메모리 IC, 디지털 센서, 보호 장치, 프로그래머블 전원 공급 장치, 디지털 포텐쇼미터, 라디오 주파수 IC 등을 보유하고 있습니다. 이 모든 것들은 서로 또는 마이크로컨트롤러, FPGA, 또는 ASIC과 통신할 필요가 있습니다. 이러한 장치 간 통신의 목적은 매우 다양할 수 있습니다. 프로그래밍을 위해 정보를 추출하거나, 행동을 시작하기 위한 신호를 제공하는 것일 수 있습니다.
또한, 일부 프로토콜은 우리 인간이 마이크로컨트롤러를 통해 IC와 상호 작용할 수 있게 해줍니다. 이러한 프로토콜 중 하나를 통해 IC에 신호를 보내도록 프로그래밍된 마이크로컨트롤러에 신호를 보낼 수 있습니다. 또는, 사용 가능한 디버그 도구 중 하나를 연결할 수도 있습니다.
시리얼 통신의 문제 중 하나는 무언가 잘못되었을 때 회로를 찾고 디버깅하기 어렵다는 것입니다. 한 장치에서 다른 장치로 데이터가 전송되지 않는 경우, 문제는 다음 위치 중 하나 이상에 있을 수 있습니다: 전송 장치의 논리, 회로 설계, 시리얼 통신의 인코딩 방식, 통신 버스, 수신기에 의한 디코딩, 수신기의 회로 설계 또는 마지막으로 수신기의 논리입니다. 시리얼 통신에 오실로스코프 프로브를 연결하면 활동 여부를 확인할 수는 있지만, 그 유효성에 대해서는 거의 알려주지 않습니다. 무슨 일이 일어나고 있는지 완전히 보려면 디코딩 기능이 있는 오실로스코프나 로직 분석기가 필요합니다. 이를 통해 펄스를 통해 이동하는 전압 펄스를 알 수 있고, 전압 레벨을 찾아내고, 잡음 문제를 발견하며, 신호 상승 및 하강 속도와 관련된 문제를 찾아볼 수 있습니다.
그러나 직렬 통신을 철저히 디버깅하려면 버스에서 데이터를 디코드하여 데이터가 올바른지, 손상되었는지 또는 충돌의 영향을 받았는지 확인할 수 있는 도구가 필요합니다. 장치 또는 IC 간의 통신을 디버깅하기 위해 특별히 만들어진 디버그 도구가 상당수 있습니다. 업계 표준 로직 분석기 중 하나는 Saleae Logic 시리즈로, Pro 모델은 가장 인기 있는 프로토콜을 모두 분석할 수 있는 충분한 속도를 제공합니다.
많은 저가형 로직 분석기는 SPI와 같은 고속 프로토콜을 처리하기에 너무 느립니다. LA2016 Logic Analyser는 Saleae Logic 8과 Logic 8 Pro 사이의 샘플 속도를 매우 저렴한 비용으로 제공합니다. 저는 하나를 소유하고 있으며 프로토콜을 매우 성공적으로 분석하는 데 사용했습니다.
또한, 펌웨어와 하드웨어 설계 모두에 있어 통신 프로토콜의 고려는 매우 중요합니다. 하드웨어 측면에서는 선택한 마이크로컨트롤러의 데이터시트를 항상 주의 깊게 검토해야 합니다. MCU는 전용 핀을 사용하여 사전에 정의된 프로토콜로만 통신할 수 있습니다. 설계자는 사용할 IC와 필요한 프로토콜을 MCU를 선택하기 전에 미리 결정해야 합니다.
예를 들어, 인기 있는 STM32 Blue Pill 개발 보드에 장착된 STMicroelectronics STM32F103C8T6 장치는 2 x I2C, 3 x USART, 2 x SPI, 그리고 1 x CAN 통신 인터페이스를 포함합니다. 그러나, 이러한 통신 프로토콜의 일부 핀은 공유됩니다. 예를 들어, 장치의 14번 핀을 살펴보면 PA4로 표시됩니다. 이 핀은 USART와 SPI 기능을 모두 가지고 있습니다. 이는 설계 시 모든 SPI 및 USART 인터페이스를 동시에 사용할 수 없음을 의미합니다. 언제 어떤 것이 필요한지 선택하고 계획을 세우거나 더 많은 통신 인터페이스를 지원하는 다른 마이크로컨트롤러를 찾아야 합니다. 물론, PA4 핀은 운영 중에 구성을 변경하여 두 통신 프로토콜 모두에 사용될 수 있습니다. 그러나 여전히 언제 어떤 기능으로 사용될지 신중히 고려해야 합니다. 왜냐하면 동시에 사용될 수 없기 때문입니다. 이는 하드웨어 및 펌웨어 디자인의 복잡성을 증가시킬 것입니다.
마이크로컨트롤러에서 직렬 통신 핀이 겹칠 수 있으므로 데이터시트를 주의 깊게 읽으십시오. 펌웨어 측에서 통신에 사용될 프로토콜에 기반하여 적절한 IC 통신 라이브러리 모듈을 다운로드하여 사용해야 합니다.
비록 많은 통신 프로토콜이 있지만, 가장 인기 있는 것들은 SPI와 I2C입니다. 각 프로토콜은 그것들의 응용 프로그램, 통신 속도, 설계 고려 사항, 장점 및 단점을 가지고 있습니다. 이 시리즈의 기사에서 차례대로 각각을 살펴볼 것입니다.
이 시리즈의 다음 기사에서는 인기 있는 UART 장치를 살펴보고 그들의 장점과 구현 세부 사항에 대해 논의할 것입니다. 다양한 프로토콜을 비교하며 그들의 주요 장점과 단점을 강조하면서 시리즈를 마무리할 것입니다.
더 궁금한 점이 있으신가요? Altium의 전문가에게 전화하여 다음 PCB 설계에 어떻게 도움을 줄 수 있는지 알아보세요.