직렬 포트의 두 핀에서 값을 보내는 방법은 무엇입니까?

직렬 포트의 두 핀에서 값을 보내는 방법은 무엇입니까?

Linux 시스템과 마이크로컨트롤러 간에 통신을 시도하고 있습니다.

전이중 RS485용 DB-9 핀을 다음과 같이 구성했습니다.

DB-9 RS-485

Pin-7을 Pin-8에 연결했습니다.

Pin-2를 Pin-3과 연결했습니다.

#!/usr/bin/env bash
stty cs8 cstopb parenb -parodd < /dev/ttyO0 #I configure the Serial Port here
while :
do
        echo -ne '\x00\x05\x00\x00\xFF\x00\x8D\xEB'>/dev/ttyO0
        usleep 10000
done

stty명령을 사용하여 직렬 포트를 구성 할 수 있습니다 .

어리석은 질문일 수도 있지만 직렬 포트가 두 소켓(RS-485의 경우 A와 B)에서 동일한 값을 출력하기를 원합니다.

내 마이크로컨트롤러가 이 신호를 Modbus-RTU 신호로 인식하지 않기 때문에 이것을 원합니다.

그러나 핀을 교차 연결하면 마이크로 컨트롤러는 이를 신호로 간주하지만 올바른 신호가 아니기 때문에 이를 받아들이지 않습니다.

다른 Modbus 마스터를 사용하여 마이크로 컨트롤러를 연결하고 로직 분석기의 출력은 다음과 같습니다.

다른 장치에 대한 로직 분석기 출력

그러나 내 Linux 시스템이 연결되면 출력 신호는 다음과 같습니다.

Linux 시스템 로직 분석기 출력

양쪽 끝에서 동일한 신호를 출력하는 방법은 무엇입니까?

편집: 아래 그림과 같이 핀을 연결했습니다.

연결하다

그런 다음 마이크로컨트롤러에 연결합니다.

답변1

아래와 같이 전이중 RS485용 DB-9 핀을 구성했습니다.

차동 신호를 사용하여 RS485로 작동하는 하드웨어도 있습니까, 아니면 일반 직렬 포트가 있습니까? 일반 직렬 포트 하드웨어는 RS485 신호를 생성하지 않으며 로직 분석기의 출력은 일반 직렬 포트와 매우 유사하기 때문입니다.

따라서 RS485 하드웨어를 구입하거나 RS232-RS485 변환기를 구입해야 합니다. 아마도 직접 만들 수도 있을 것입니다. 전자 스택 교환에 관한 질문일 것입니다.

관련 정보