[RPI-PICO] Level shifter

Posted on

Level shifter는 전자회로에서 나가고 오는 전압 레벨을 핀마다 조정하는 장치를 뜻합니다. 연결된 회로마다 작동하는 전압이 다르다면 level shifter 설비를 해서 조정하게 됩니다. 제일 흔한 로직 레벨은 1.8V, 3.3V, 5V이구요. 보통 회로가 3.3V로 작동한다고 하면 서로 다른 전압을 3.3V로 조정한다는 의미가 됩니다. 다른 전압 입력이나 출력을 한다면요.

단방향과 양방향 level shifter가 존재하구요. 양방향은 또 여러 유형으로 나뉘는데 외부 신호를 감지하는 등의 작동으로 입력과 출력을 결정하는 차이가 있습니다.

SPI로 통신하는 microSD 카드 모듈 중에서는 level shifter 기능을 내장한 기종이 있네요.

level shifter 기능이 있는 모듈

제가 참고한 FatFS 응용 프로젝트의 이슈 게시판을 보면 위와 같은 모듈을 쓸때 3.3V 인가시 mount error 3이 발생하고, 5V인가시 mount error 1이 발생합니다. 프로젝트 저자에 의하면 level shifter가 라즈베리파이 피코에 내장되어 있는데 microSD 카드 모듈에 또 level shifter가 있어서 서로 겹쳐서 작동해서 발생하는 에러로, 아래와 같이 단순한 (?) 회로로 된 모듈로 바꾸라고 조언하네요.

level shifter 기능이 없는 모듈

실재로 바꿔보니 잘 작동합니다.

참고로 라즈베리파이 피코의 다른 GPIO의 전압은 3.3V로 조정하는게 좋은데, 나가는 전압이 5V인 핀도 있기는 합니다. 이 5V로 나가는 핀에 level shifter가 있는 모듈을 연결하면 마이크로파이썬으로 작업시 작동하는데, 3.3V로는 안됩니다. 그리고 피코 C SDK와 FatFS를 응용한 프로젝트로 하면 level shifter가 있는 모듈은 둘다 안되고 level shifter가 없는 모듈로 3.3V 연결시 되네요.

한가지 이상한 것은 라즈베리파이 피코는 3.3V로 GPIO가 운용된다고 하는게 정설이고, VSYS는 5V 입력핀이라고 하는데 제 경우 VSYS에 모듈 연결시 (level shifter있는 것으로) 작동합니다. (마이크로파이썬) VSYS가 5V를 출력하는 기능이 있을 것이라고 대략 추정되기도 하네요. 5V를 출력해서 모듈에 전원공급한다?

메모리 상태 문제인지 아니면 기존의 해설이 잘못된 건지 구별은 안했습니다. 안전을 위해 3.3V로 GPIO를 늘 운용하게 하려고 구축된 표현에서 VSYS의 기능이 입력핀이라고 회자되게 된건가 하는 생각도 드는데 여튼 위와 같이 작동합니다. 확실하게 구별은 안해봤네요. VBUS의 경우 USB도 작동하게 할때 전원을 피코에 입력하는 핀임은 확실하구요. VSYS는 핀에 연결된 장치에 5V 전원 연결을 하는 용도 같은데, 많은 자료에서 ‘input voltage’와 같이 강조점을 두어 표현하네요. 마이크로파이썬으로 운용시 VSYS에 모듈을 연결하고 5V 인가해서 작동하는 모듈이 위와 같이 있는데, 이게 혹시 제 호스트 PC나 피코 메모리 상태가 달라져서인지 아니면 VSYS가 모듈에 전원공급도 하는 기능인지는 자료가 안찾아집니다.

확실한 것은

  • 라즈베리파이 피코는 내부적으로 level shifting을 하기에 모듈에 level shifter가 있는 경우 작동을 안할 수 있다
  • 이를 고려해서 모듈을 구해서 써야 하는 경우가 있다
  • 피코 C SDK, FatFS와 같은 라이브러리를 쓰는 경우 위 두가지 사항을 잘 지켜야 한다

이 세가지네요.

The Raspberry Pi Pico’s VSYS output, when connected to a module, provides the primary power source to the module, typically 5V (or 0V if not powered). This VSYS power is then used to power the module’s onboard SMPS (Switch Mode Power Supply), which generates the 3.3V needed for the RP2040 microcontroller and its GPIO pins.

Elaboration:

VSYS as the main power input:

The VSYS pin on the Pico is the primary input for power, typically from a USB connection or a battery.

Voltage range:

VSYS can accept a voltage range of 1.8V to 5.5V.

Onboard SMPS:

The Pico’s onboard SMPS converts the VSYS voltage (typically 5V) into the 3.3V required by the RP2040.

Module power:

The 3.3V generated by the SMPS can then be used to power external modules or circuits connected to the Pico, provided the load doesn’t exceed the maximum output current (recommended to be under 300mA).

Alternative power sources:

Besides USB, the Pico can also be powered by batteries, such as a 9V battery or 3 AA batteries.

Power consumption:

The Pico’s power consumption varies depending on the program being run and the connected modules. A simple blink program may consume around 18mA, while more complex tasks like video playback can draw up to 95mA, according to the documentation.

이런 설명이 있네요.

VSYS도 모듈에 전원 공급을 한다는 해설인데 VSYS가 input voltage와 output voltage 기능이 다 있는 것인지 추론이 되는데 자료가 확실한게 잘 안찾아지네요. 설비를 해보면 작동합니다. level shifter가 있어도 5V로 인가하면 마이크로파이썬으로 되네요.

지금 추론은

  • VSYS가 입력, 출력 다 지원한다
  • 메모리 상태나 컴파일시 변조가 있어 헷갈린다
  • 실험을 해봐도 헷갈린다

이 상태인데 VSYS에 대한 의문이 풀리면 더 확신을 가지고 글을 쓰는게 될 것 같네요.


level shifter와 모듈에 대한 정보는 https://github.com/elehobica/pico_fatfs/issues/7 에서 참고하시길요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다