외부 장치를 적용하여 마이크로 컨트롤러 I/O 확장 문제 해결

작성자: Jacob Beningo

DigiKey 북미 편집자 제공

설계자에게 일반적으로 발생하는 두 가지 마이크로 컨트롤러 I/O 문제가 있습니다. 첫 번째 문제는 응용 분야에 가장 적합한 마이크로 컨트롤러에 적절한 조합의 I/O 기능이 없을 때 발생합니다. 두 번째 문제는 이미 출시된 제품 라인에 추가적인 I/O가 필요할 때 발생합니다.

첫 번째 문제의 경우 개발자는 더 고가의 더 뛰어난 마이크로 컨트롤러를 구매해야 합니다. 두 번째 문제의 경우 새로운 마이크로 컨트롤러로 전환하고 함께 사용할 소프트웨어를 이식하는 시간과 비용이 엄청나게 부담될 수 있습니다.

이 두 문제를 모두 해결하는 잠재적 솔루션으로 마이크로 컨트롤러의 SPI 또는 I2C 버스에 연결되는 외부 I/O 확장 장치를 사용할 수 있습니다. 그러면 핀 수와 가능한 성능 및 실장 면적의 측면에서 마이크로 컨트롤러를 과다 지정할 필요가 없습니다. 동시에 이 방법을 사용하면 성능 저하, 대상 시장 확장, 고객 기능 요청, 열악한 마이크로 컨트롤러 선택(해당하는 경우)에 대비하여 미래 경쟁력을 갖춘 제품을 설계할 수 있습니다.

이 기사에서는 일반적인 마이크로 컨트롤러 I/O 요구 사항을 설명하고 일부 적합한 외부 확장 장치를 소개합니다. 그런 다음 추가적인 범용 입/출력, 메모리 스토리지, 펄스 폭 변조(PWM) 및 감시 타이머 기능을 제공할 수 있는 오프칩 리소스를 사용하는 방법을 보여 줍니다.

확장 인터페이스 선택

마이크로 컨트롤러에는 외부 장치와 통신하는 데 사용할 수 있는 몇 가지 주변 장치 인터페이스 온칩이 있습니다. 마이크로 컨트롤러에 따라 다음과 같은 인터페이스가 제공될 수 있습니다.

  • 직렬 주변 장치 인터페이스(SPI)
  • I2C(내부 집적 회로) 버스
  • 범용 직렬 버스(USB)
  • 범용 비동기 수신기/송신기(UART)
  • 계측 제어기 통신망(CAN)
  • Wi-Fi

외부 확장 장치와 통신하는 데 가장 적합한 인터페이스는 I2C 및 SPI입니다.

I2C는 전통적으로 100Kbits/s 또는 400Kbits/s로 작동되는 2선식 버스이지만, 일부 고속 장치에서는 1Mbit/s 이상도 지원합니다. 한 선은 전용 클록 핀이고 다른 선은 마스터와 슬레이브 간의 양방향 통신을 위한 것입니다. 일반적으로 마이크로 컨트롤러가 마스터 역할을 하며 외부 장치가 슬레이브입니다. 7비트 또는 10비트 주소 지정 체계를 사용하여 슬레이브에 주소를 지정할 수 있습니다.

SPI는 1Mbit/s ~ 12Mbits/s 사이에서 작동하는 3선식 버스 인터페이스입니다. SPI 버스에는 전용 마스터 출력 데이터 회선, 슬레이브 출력 데이터 회선, 클록이 있습니다. 다시 말해서, 마이크로 컨트롤러는 "슬레이브 선택" 회선을 사용하여 슬레이브 장치와 통신하는 마스터 장치로 구성됩니다. 마이크로 컨트롤러에 연결되는 모든 슬레이브 장치는 통신을 위해 해당 장치를 선택하는 데 사용되는 전용 출력 핀이 필요합니다. 개발자는 연결하려는 외부 장치가 많을 경우 곧 I/O 회선이 부족해지므로 슬레이브 장치를 선택하게 되는 상황에 처하게 됩니다.

예를 들어, 개발자가 STMicroelectronicsSTM32L011D4P7을 사용 중인 경우 11개의 I/O 회선을 사용할 수 있습니다(그림 1). 3개의 I/O 회선은 SPI 데이터 및 클록 전용으로 사용되고, 나머지 8개 회선은 슬레이브 장치와 통신하고 시스템에 필요한 추가 기능을 수행하는 데 사용됩니다. 대부분의 응용 분야에서는 이 정도로 충분하지만, 설계자가 I/O를 확장해야 하는 경우가 있을 수 있습니다.

STMicroelectronics의 STM32L011D4P7 Arm® Cortex®-M7 프로세서 이미지

그림 1: STM32L011D4P7은 핀이 11개 I/O로 제한된 Arm®Cortex®-M0+ 프로세서입니다. (이미지 출처: STMicroelectronics)

일반적으로 경험상 법칙은 매우 간단합니다. 다음과 같은 기능을 추가할 때 I2C 버스를 사용하면 됩니다.

  • I/O
  • PWM
  • EEPROM
  • 감시 타이머

SD 카드에 대한 고속 메모리 액세스 등과 같은 기능을 추가하려면 SPI 버스를 사용해야 합니다.

범용 I/O 확장

I2C 인터페이스를 통해 입/출력 확장을 지원하는 많은 IC가 있습니다. 몇 가지 예를 들면 다음과 같습니다.

PCA8574는 입력과 출력을 모두 수행하는 데 사용되는 레지스터가 1개뿐이므로 특히 흥미롭습니다. 단일 레지스터로 인해 장치를 구성하고 핀을 읽고 쓰는 데 필요한 소프트웨어의 양이 대폭 줄어듭니다(그림 2). 마이크로 컨트롤러는 I2C를 통해 PCA8574와 통신하고 A0 ~ A2 핀의 구성 방법에 따라 장치의 주소를 지정합니다. 이 경우 개발자가 PCA8574에 대해 슬레이브 주소를 선택하고 한 번의 설계에서 다양한 선택을 할 수 있으므로 설계의 유연성이 강화됩니다.

NXP의 PCA8574 8비트 I/O I2C 확장기 구성도

그림 2: NXP의 PCA8574는 유사 양방향 8비트 I/O I2C 확장기입니다. 이 확장기는 핀에서 I/O 기능을 수행하는 읽기 및 쓰기용 I2C 레지스터가 1개뿐인 매우 간단하고 세련된 장치입니다. (이미지 출처: NXP Semiconductors)

기본적으로 P0 ~ P7은 전원을 켤 때 입력으로 구성됩니다. 단일의 내장형 레지스터를 읽고 장치에서 입력 또는 출력으로 구성된 각 핀의 상태를 알려줍니다. PCA8574에서는 핀을 입력과 출력에 동시에 사용할 수 있으므로 레지스터에 쓰면 해당 비트의 출력도 설정됩니다.

내부 저항기가 약해서 입력값에 의해 과전력이 발생하기 쉬워지면 출력 구동이 풀업됩니다. 입력 상태가 변경될 경우 INT 핀이 아래로 토글되어 마이크로 컨트롤러에 입력 상태가 변경되었음을 알려줍니다. 그러면 마이크로 컨트롤러는 I2C를 호출하여 새 값을 읽습니다.

PWM 확장

PWM 확장기는 매우 유용한 확장 장치입니다. 이 장치는 LED를 구동할 때 특히 유용합니다. 마이크로 컨트롤러가 아무 작업도 수행하지 않을 경우 절전 모드로 전환되고, PWM 확장기가 LED 상태 구동을 담당할 수 있습니다.

PWM 확장기 사용 방법을 보여주는 완벽한 예로는 E-SwitchPV6F240SSG RGB 푸시 버튼 또는 Schurter Electronic Components3-101-399 SPST RGB 푸시 버튼을 사용하는 RGB 푸시 버튼 회로가 있습니다(그림 3).

Schurter의 RGB 푸시 버튼 이미지

그림 3: Schurter의 RGB 푸시 버튼에는 푸시 버튼 주위에 빨간색, 녹색 및 파란색 LED가 있으며, 이 푸시 버튼을 사용하여 개발자가 조명 색상 패턴을 만들 수 있습니다. 이러한 유형의 장치는 PWM 확장 칩을 구동하는 데 적합합니다. (이미지 출처: Schurter)

Schurter의 RGB 푸시 버튼에는 SPST 푸시 버튼 주위에 빨간색, 녹색 및 파란색 LED가 있으며, 이 푸시 버튼을 사용하여 개발자가 조명 색상 패턴을 만들 수 있습니다. 이러한 유형의 응용 제품은 PWM 확장 칩에 적합합니다.

I2C를 통해 사용하는 데 적합한 PWM 확장 칩으로는 Maxim Integrated의 MAX7315가 있습니다. MAX7315는 8개의 PWM 포트와 LED 강도 제어 기능을 제공합니다. 여기에는 RGB 스위치를 구동하는 데 필요한 3개의 채널이 포함됩니다. 이러한 채널을 통해 단일 장치에서 여러 스위치와 일부 독립 실행형 LED를 구동할 수 있습니다. 또한 전이 감지 인터럽트 또는 범용 출력으로 사용될 수 있는 9번째 포트가 있습니다.

MAX7315 I2C 인터페이스는 2개 이상의 레지스터를 포함하므로 NXP의 PCA8574보다 약간 더 복잡합니다. 따라서 개발자는 슬레이브 장치의 주소를 지정하고, 읽거나 쓸 메모리 주소를 제공한 다음 쓰기 또는 읽기를 수행해야 합니다. MAX7315의 메모리 맵은 그림 4에서 확인할 수 있습니다.

레지스터 주소 코드(16진수) 자동 증분 주소
Rad 입력 포트 0x00 0x00(변경 없음)
깜박이는 0상 출력 0x01 0x01(변경 없음)
포트 구성 0x03 0x03(변경 없음)
깜박이는 위상 1 출력 0x09 0x09(변경 없음)
마스터, O8 강도 0x0E 0x0E(변경 없음)
구성 0x0F 0x0F(변경 없음)
출력 강도 P1, P0 0x10 0x11
출력 강도 P3, P2 0x11 0x12
출력 강도 P5, P4 0x12 0x13
출력 강도 P7, P6 0x13 0x10

그림 4: MAX7315 PWM 컨트롤러에는 LED 강도 기능을 포함하는 8개의 출력 포트가 있습니다. 장치에 대한 레지스터 맵은 간단하며 이 맵을 통해 고급 PWM 기능에 쉽게 액세스할 수 있습니다. (이미지 출처: Maxim Integrated)

MAX7315에 대한 레지스터 맵은 간단하며 이 맵을 통해 고급 PWM 기능에 쉽게 액세스할 수 있습니다.

WDT, EEPROM 및 PWM 조합 확장기

표시된 바와 같이 I2C 버스 I/O 확장기는 독립 실행형 장치로 사용될 때 매우 강력합니다. 즉, I/O 또는 PWM과 같은 특정 기능만 포함합니다. Cypress Semiconductor의 CY8C9520A 다중 포트 I/O 확장기와 같은 확장기는 단일 IC 패키지 내에 여러 주변 장치 확장이 포함되어 있습니다. CY8C9520A는 20비트, 40비트 또는 60비트 확장의 세 가지 유형으로 제공됩니다. 이러한 핀을 구성하여 입력, 출력 또는 PWM으로 사용할 수 있습니다(그림 5).

Cypress Semiconductor의 CY8C9520 구성도

그림 5: Cypress Semiconductor의 CY8C9520은 EEPROM이 탑재된 20비트, 40비트 또는 60비트 I/O 확장기입니다. 확장 핀을 입력, 출력 또는 PWM으로 구성할 수 있습니다. (이미지 출처: Cypress Semiconductor)

I/O 확장뿐 아니라 CY8C9520에는 중요 응용 제품 설정(예: 일련번호)과 기타 중요한 구성 파라미터를 저장하는 데 사용할 수 있는 EEPROM이 포함되어 있습니다.

그림 5를 자세히 살펴보면 GPort 2에 WD6 핀이 있습니다. 이 핀은 CY8C9529 감시와 통신하는 데 실패할 경우 마이크로 컨트롤러를 초기화하는 데 사용할 수 있는 감시 타이머 출력 핀입니다. 감시 설정을 완전히 구성한 후 응용 제품 코드의 내구성을 강화하는 데 사용할 수 있습니다.

마이크로 컨트롤러 기능 확장을 위한 유용한 정보

마이크로 컨트롤러의 기능을 확장하는 데 도움이 되는 많은 기술이 있습니다. 다음은 몇 가지 유용한 정보입니다.

  • I2C를 사용하여 외부 장치를 인터페이스로 연결합니다. 인터페이스는 2개의 핀만 있으면 여러 슬레이브 장치를 지원할 수 있습니다.
  • 부품을 하드웨어로 설계하기 전에 개발 기판을 구매하거나 칩을 확장 기판에 납땜하여 모든 시스템 요구 사항을 충족하는지 테스트합니다.
  • I2C 버스 도구를 사용하여 확장 장치와 인터페이스로 연결하고 작동 방법을 알아봅니다. 그러면 소프트웨어 개발이 획기적으로 가속화됩니다.
  • 버스 분석기를 통해 소프트웨어 개발 기간에 외부 장치와의 통신을 모니터링하여 디버깅 시간을 최소화합니다.
  • 가능하면 외부 감시 타이머가 있는 장치를 선택합니다. 그러면 시스템 설계에 대한 내구성을 강화할 수 있습니다.
  • 구성 데이터 이외의 데이터를 위해 오프칩 메모리와 연결할 경우 SPI와 같은 고속 인터페이스를 사용합니다.
  • 장치에서 NAK(부정 응답)를 반환하거나 버스의 성능이 저하될 경우 마이크로 컨트롤러의 I2C 구동기가 이를 처리할 수 있는지 확인하십시오. 일반적으로 이러한 구동기는 예기치 못한 응답이 수신될 경우 오류를 무시하고 무한 반복됩니다.

결론

설계 중에 마이크로 컨트롤러에 더 이상 I/O가 없을 경우 개발자는 설계를 파기하고 처음부터 다시 시작할 필요가 없습니다. 그 대신, 외부 주변 장치 칩을 사용하여 시스템에 기능을 더 추가할 수 있습니다.

 
DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo는 임베디드 소프트웨어 컨설턴트로서 현재 십여 개국 이상의 국가에 있는 고객들과 협력하여 제품 품질, 비용, 출시 기간을 향상시켜 고객의 비즈니스를 극적으로 변화시키고 있습니다. 그는 인기 있는 강연자이자 기술 교육자이며 임베디드 소프트웨어 개발 기술에 대해 200개 이상의 기사를 발표했습니다. 그는 미시간 대학교 공학 석사 학위를 비롯하여 세 개의 학위를 소지하고 있습니다. 월간 Embedded Bytes 뉴스레터를 수신하려면 jacob@beningo.com 및 Jacob Beningo의 웹 사이트인 www.beningo.com으로 언제든지 문의해 주세요.

게시자 정보

DigiKey 북미 편집자