추가 GPIO를 디지털 I / O로 사용하십니까?


11

바라건대이 질문은 다소 간단하지만 빠른 인터넷 검색으로 답을 찾지 못했습니다.

RPi에는 특수 GPIO (SPI, I2C, UART 등)뿐만 아니라 사용할 수있는 몇 개의 GPIO가 있다는 것을 알고 있습니다. 내 프로젝트에서 실제로 일반 GPIO가 부족하고 SPI, I2C 및 기타 GPIO를 "일반"GPIO로 사용하고 싶습니다. 나는 이것이 가능하다는 것을 알고 있지만 SPI / I2C / etc 모드에서 실행되지 않고 일반 GPIO로 실행되도록 어떻게 설정할 수 있는지 잘 모르겠습니다.

이를 위해 올바르게 설정하려면 무엇을해야합니까?

답변:


10

짧은 대답

아니, 당신은 (거의)하지 않습니다. 실제로 다른 방법입니다. GPIO가 아니라 특수 목적을 위해 설정해야합니다. 유일한 예외는 UART 핀입니다. 또한 I²C 핀은 어떻게 든 특별합니다.

UART 핀

UART 핀은 콘솔에서 커널에 의해 사용됩니다. 시스템을 사용할 수있게하려면 시스템을 사용하지 않도록 구성해야합니다.

  • 편집 /boot/cmdline.txt및 제거 console=ttyAMA0,115200kgdboc=ttyAMA0,115200매개 변수
  • 행을 편집 /etc/inittab하고 주석 처리하십시오 ( #앞에 문자 입력 ).

    T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
    
  • RaspberryPi를 재부팅

이제 시스템에서 핀을 사용해서는 안되며 사용할 수 있습니다

I²C 핀

I²C 핀에는 1.8k 풀업 저항이 내장되어 있습니다. 비활성화 할 수 없습니다. 이것은 일부 상황에서 핀 사용을 제한하지만 다른 상황에서는 유용 할 수 있습니다.

추가 솔루션

GPIO 핀이 부족한 경우 추가 (단순한) 추가 하드웨어를 사용하여 핀 번호를 쉽게 확장 할 수 있습니다. 예를 들어, 출력의 경우 쉽게 구입하고 사용할 수있는 shift registers또는 I²C I/O expanders(I²C 버스 확장기라고도 함)를 사용할 수 있습니다. 사용법 예는 여기 에서 찾을 수 있습니다 .

PFC8574(또는이 제품군과 유사한) 너무 인기가있어 모든 통신을 처리하는 커널 모듈을 사용할 준비가되어 있습니다 ( 공식 RaspberryPi 커널에서 활성화되어 있지 않으므로이를 사용하려면 자신의 커널을 컴파일해야합니다 ). 모듈은 (I²C 드라이버와 함께) gpio_pcf857x로드 modprobe되고 칩이 I²C버스에 연결되어 있으면 다음과 같이 활성화 할 수 있습니다.

echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device

pcf8574실제 칩 이름은 어디에 있고 (이 모듈은 pca967xand와 같은 몇 가지 다른 칩을 처리 할 수 ​​있습니다 max732x) 0x27주소는 켜져 있습니다 I²C(칩을 배선 할 때 칩 주소를 구성 할 수 있음).

그러면 /sys/class/gpio/디렉토리에 항목을 생성 하여 RaspberryPi의 다른 GPIO 포트와 같은 방식으로 sys인터페이스를 사용할 수 있습니다 (예 wiringPiSetupSys(): wireingPi). 불행히도 파이썬 RPi.GPIO모듈은이 모드를 지원하지 않으므로이 라이브러리에서이 핀을 사용할 수 없습니다. 핀에는 248-255 또는 이와 유사한 숫자가 있습니다.

참고 : PCF8574sinking current- 20mA만큼 (낮은 상태에서 동의)가 드라이브 싱크를 줄 수 있지만, 높은 상태에서 그것을 할 수있는 유일한 소스 0.1mA의. 즉, 일반적으로 리버스 로직으로 사용한다는 의미입니다 +3.3V -> LED -> RESISTOR -> PCF8574_PIN.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.