Windows 및 Linux용 USB-RS232 어댑터 케이블(FT232R)이 있습니다. 그래서 저는 pyserial과 함께 Python 스크립트를 사용합니다.
Windows에서 데이터 전송 중 TX 라인의 최저 전압은 -6.2V이고 최고 전압은 6.2V입니다. 연결된 장치와의 통신은 여기서 완벽하게 작동합니다.
Linux에서는 정확히 동일한 데이터(동일한 Python 코드)를 보내지만 TX 전압이 위로 이동합니다. 최저 전압은 -0.8V이고 최고 전압은 11.8V입니다. 여기서 통신이 실패했습니다. 10k 이상의 저항을 측정하면 처음에는 전압이 양수이고 Linux에서 전송하는 동안 떨어집니다(그림 참조).
Linux(Ubuntu)에서 전압을 조정하는 방법은 무엇입니까?
W&T의 어댑터 케이블(https://wut.de/e-38011-ww-dade-000.php). Linux에서 어댑터는 "Ltd FT232 Serial(UART) IC"로 식별됩니다.
사진은 여기에서 찾을 수 있습니다:https://imgur.com/a/lB78S4a
답변1
댓글의 @Bodo처럼 처음에는 "하드웨어 문제"라고 생각했지만 USB 절전도 가능하다는 것을 깨달았습니다.
USB는 +5V만 공급하므로 +5V 이상의 음전압과 +5V 이상의 전압은 어댑터의 차지 펌프 회로에 의해 생성되어야 합니다. 이 회로가 절전 모드에서 꺼지면 포트가 열릴 때 완전히 방전될 수 있습니다.
데이터시트에는 어댑터가 FTDI FT232R 직렬 변환기 칩을 사용한다고 나와 있습니다.이것은 데이터 시트입니다, 칩 제조업체에서 직접.
24페이지의 7.1장에 있는 USB-RS232 변환기 회로 예를 참조하십시오. RS232 레벨 변환기 칩은 FT232R 칩의 SLEEP# 핀에 연결되어 있습니다. 이는 메인 칩이 전원에 들어갈 때 레벨 변환기가 정전이 되다. 저장 모드.
실제 FT232R 칩의 UART 인터페이스는 최대 0V/+5V 신호 레벨만 제공할 수 있으므로 어댑터에 레벨 변환 칩이 포함되어 있음이 분명합니다.
Linux와 Windows가 서로 다른 하드웨어에서 실행되는 경우 Linux 시스템의 USB 전원 출력이 RS232 장치의 방전을 방지하기 위해 레벨 변환기의 충전 펌프를 완전히 충전하는 데 충분하지 않을 수도 있습니다.
포트 열기/초기화와 실제 전송 사이에 몇 초의 지연을 추가하면 상황이 바뀌는지 확인하세요. 어댑터가 절전 모드에서 부팅되는 것이 문제인 경우 포트 초기화 후 지연으로 인해 어댑터가 절전 모드를 종료하고 통신을 시작하기 전에 차지 펌프가 충전될 수 있습니다.