WCH CH341 USB에서 직렬 칩으로 Linux를 사용하여 USB를 통해 GPIO를 제어



USB- 직렬 칩은 종종 타겟 보드에서 직접 또는 전용 디버그 보드를 통해 디버그 인터페이스로 사용됩니다. 그러나 일부 모델에는 여분의 핀이 노출되어 있으며 그 중 하나는 WCH CH341 이며 I2C 및 SPI 인터페이스와 최대 8 개의 GPIO가 포함되어 있습니다.

그러나 여분의 핀을위한 소프트웨어 지원은 현재 리눅스 메인 라인에있는 드라이버에 내장되어 있지 않으며 관련 핀을 분해하는 보드를 찾아야합니다. Aliexpress 에서 10 달러에 판매되는 "CH341A ALL USB 1 / SPI / I2C / IIC / UART / TTL / ISP 직렬 어댑터"보드 와 Zoobab이 성공적으로 6을 제어 하는 데 사용 했던 것 (8 가지 중 8 가지)이 있습니다. ) USB를 통한 GPIO.

이 보드에는 컴퓨터에 연결하기위한 USB 보드, I2C, UART, SPI, 일부 LED 및 I2C / SPI 또는 UART 모드 및 전압 (5V / 3.3V)을 선택하는 점퍼 헤더가 함께 제공됩니다.

보드가 Linux에서 I2C / SPI 또는 UART 모드를 사용하는지 여부에 따라 다르게 인식됩니다.

  • I2C-SPI 모드

  • UART 모드

그러나 8 개의 GPIO를 공개하고 USB / I2C를 통해 제어하려면 tree 외의 i2c-ch341-usb 드라이버 가 필요합니다 그는 소스 코드에있는 핀 중 6 개를 출력하라는 지시를 내렸다. (어떤 이유에서든 6-7은 출력으로 설정 될 수 없었다) :

모듈을 빌드 한 후 모듈을로드하십시오.


gpio0에서 gpio5는 / sys / class / gpio에 있어야합니다. 즉, 일반적인 sysfs 명령으로 제어 할 수 있습니다.


또한 셸 스크립트로 핀을 벤치마킹하여 연결된 LED를 켜거나 끄고 약 2.2KHz로 관리했습니다. I2C 버스 속도 (기본적으로 100kHz)를 변경하거나 C 코드를 사용하여 조금 더 빨라질 수 있습니다. 또는 같은 개발자 (gschorcht)의 spi-ch341-usb 드라이버 를 사용하면 문서화 된 "느린 SPI"에도 불구하고 약간 속도가 빨라질 수 있습니다.

6 개의 LED가 보드에 연결된 또 다른 쉘 스크립트는 아래에 설명되어 있습니다.

어쨌든 그 좋은 소식은 USB를 가진 리눅스 보드에 GPIO를 비교적 쉽고 싸게 추가 할 수 있다는 것입니다. 그러나 만약 당신이 그 옵션에 10 달러를 쓰지 않는다면 CH341 USB 프로그래머 가 Electrodragon에서 $ 2.30 + 선적을하거나 CJMCU-341 보드 를 Aliexpress 나 eBay 에서 선적을 포함하여 약 $ 5에 판매 하는 등 더 저렴한 옵션이 있습니다 .


https://www.cnx-software.com/2018/02/16/wch-ch341-usb-to-serial-chip-gets-linux-driver-to-control-gpios-over-usb/

+ Recent posts