9600-8-N-1의 의미를 이해하면 시리얼 통신이 보인다

9600-8-N-1의 의미를 이해하면 시리얼 통신이 보인다#

1장 9600-8-N-1은 무엇을 의미할까#

1.1 현장에서 가장 자주 보는 시리얼 설정#

산업 장비 매뉴얼이나 설정 화면을 보면 다음과 같은 표기를 자주 볼 수 있습니다.

9600-8-N-1

또는:

9600 8N1

처럼 표시되기도 합니다.

처음 보면 암호처럼 보이지만 네 가지 설정값을 순서대로 적은 것입니다.

9600
→ Baud Rate

8
→ Data Bits

N
→ Parity 없음

1
→ Stop Bit 1개

즉:

9600 baud, 8 Data Bits, No Parity, 1 Stop Bit

라는 뜻입니다.


1.2 두 장비의 값이 달라지면 어떻게 될까#

장비 A:

9600-8-N-1

장비 B:

115200-7-E-1

이라면 단순히 속도만 다른 것이 아닙니다.

다음 세부 조건이 모두 다릅니다.

Baud Rate
9600 ↔ 115200

Data Bits
8 ↔ 7

Parity
None ↔ Even

Stop Bits
1 ↔ 1

이 상태에서는 정상 통신을 기대하기 어렵습니다.

현장에서 먼저 해야 할 일은 양쪽 Serial 설정을 정확히 비교하는 것입니다.


2장 시리얼 통신은 비트의 시간 약속이다#

2.1 같은 전선을 사용해도 Timing이 다르면 읽을 수 없다#

RS-232 배선이 다음과 같이 완벽하다고 가정하겠습니다.

A TX → B RX

A RX ← B TX

GND ↔ GND

전압도 정상이고 Cable도 정상입니다.

그런데:

A
9600 baud

B
115200 baud

라면 정상적으로 데이터를 해석하기 어렵습니다.

이유는 수신 장비가 언제 한 Bit를 읽어야 하는지 서로 다른 시간 기준을 사용하기 때문입니다.


2.2 비동기 Serial은 별도의 Clock 선이 없다#

일반적인 UART 기반 비동기 Serial 통신에는 다음과 같은 별도의 Clock Line이 없습니다.

CLOCK

대신 송신 측과 수신 측이 미리 같은 Baud Rate를 설정합니다.

개념적으로:

송신기
"한 Bit를 이 시간만큼 유지하겠다."

수신기
"그 시간 간격에 맞춰 Sampling하겠다."

라는 약속을 하는 것입니다.

이 약속이 맞지 않으면 Bit 위치를 잘못 읽게 됩니다.


3장 첫 번째 숫자 9600 — Baud Rate#

3.1 Baud Rate란 무엇인가#

Baud Rate는 초당 전송되는 Symbol 수를 의미합니다.

예:

9600 baud

는 초당 9600개의 Symbol Timing으로 통신한다는 의미입니다.

일반적인 Binary UART 기반 Serial 통신에서는 하나의 Symbol이 하나의 Bit 상태에 대응하는 경우가 많아:

9600 baud
≈
9600 bit/s의 Line Timing

처럼 보입니다.

하지만 개념적으로 Baud Rate와 Bit Rate는 같은 용어가 아닙니다.


3.2 Baud Rate와 Bit Rate를 구분해야 하는 이유#

일반 통신 이론에서는 하나의 Symbol이 여러 Bit를 표현할 수도 있습니다.

따라서:

Baud Rate
=
Symbol / second

Bit Rate
=
Bit / second

입니다.

RS-232에서 흔히 사용하는 Binary UART 환경에서는 숫자가 동일하게 나타나는 경우가 많지만 정의 자체는 다릅니다.


4장 9600 baud에서 한 Bit는 얼마나 길까#

9600 baud의 Bit Timing을 단순 계산하면:

1 / 9600 second

입니다.

약:

104.17 μs

입니다.

즉 하나의 Bit 상태가 약 104 μs 정도 유지됩니다.

개념적으로:

Bit 1
──────── 104 μs

Bit 0
──────── 104 μs

처럼 진행됩니다.


4.1 115200 baud라면#

1 / 115200

이므로 약:

8.68 μs

입니다.

9600과 비교하면 훨씬 짧습니다.

그래서:

송신
115200

수신
9600

처럼 설정이 다르면 수신기의 Sampling Timing이 완전히 어긋나게 됩니다.


5장 두 번째 숫자 8 — Data Bits#

5.1 실제 데이터에 몇 Bit를 사용할 것인가#

9600-8-N-1에서 두 번째 값:

8

은 Data Bits를 의미합니다.

즉 하나의 Character를 전달할 때 실제 Data 영역을 8 Bit로 구성합니다.

예:

01000001

은 ASCII 문자 A를 표현할 수 있습니다.


5.2 7 Data Bits도 존재한다#

일부 Legacy 장비에서는:

7 Data Bits

를 사용할 수 있습니다.

예:

9600-7-E-1

같은 설정입니다.

7 Bit ASCII 기반 시스템이나 오래된 통신 장비에서 볼 수 있습니다.


5.3 7 Bit와 8 Bit가 다르면#

송신:

8 Data Bits

수신:

7 Data Bits

이라면 수신기는 Data와 Parity 또는 Stop Bit의 위치를 다르게 해석할 수 있습니다.

결과적으로:

문자 깨짐

Frame Error

Parity Error

응답 없음

등이 발생할 수 있습니다.


6장 세 번째 문자 N — Parity#

6.1 Parity란 무엇인가#

Parity는 간단한 오류 검출을 위해 Data Bit 뒤에 추가할 수 있는 Bit입니다.

대표적인 설정은:

N
None

E
Even

O
Odd

입니다.

일부 UART와 장비에서는:

M
Mark

S
Space

를 지원하기도 합니다.


7장 Even Parity는 어떻게 동작할까#

예를 들어 Data Bit가:

10110001

이라고 하겠습니다.

1의 개수를 세어 특정 규칙에 맞도록 Parity Bit를 추가합니다.

Even Parity에서는 전체 1의 개수가 짝수가 되도록 Parity Bit를 결정합니다.

Odd Parity에서는 전체 1의 개수가 홀수가 되도록 합니다.


7.1 Parity는 강력한 오류 검출 기능이 아니다#

Parity는 매우 단순한 오류 검출 방식입니다.

일부 Bit Error를 발견할 수 있지만 모든 전송 오류를 검출하지는 못합니다.

그래서 실제 장비 Protocol에서는 추가로:

Checksum

LRC

CRC

등을 사용하는 경우가 많습니다.


8장 N은 No Parity#

9600-8-N-1에서:

N

은 Parity Bit를 사용하지 않는다는 의미입니다.

Frame은 개념적으로:

Start
↓
8 Data Bits
↓
Stop

형태가 됩니다.

Parity 설정이 E라면:

Start
↓
Data
↓
Even Parity
↓
Stop

이 됩니다.


9장 네 번째 숫자 1 — Stop Bit#

9.1 Stop Bit는 Character의 끝을 표시한다#

9600-8-N-1의 마지막:

1

은 Stop Bit 1개를 사용한다는 뜻입니다.

비동기 Serial 통신에서는 Character의 시작과 끝을 구분해야 합니다.

일반적인 구조는:

Start Bit
↓
Data Bits
↓
Parity Optional
↓
Stop Bit

입니다.


9.2 Stop Bit는 단순한 빈 시간과는 다르다#

입문 과정에서 Stop Bit를:

문자 사이의 휴식 시간

처럼 설명하기도 하지만 엄밀히 말하면 UART Frame에 포함된 정해진 Signal 상태입니다.

수신기는 Stop Bit가 예상되는 위치에서 정상적인 Stop 상태가 나타나는지 확인할 수 있습니다.

그렇지 않으면 Framing Error가 발생할 수 있습니다.


10장 9600-8-N-1의 전체 Frame#

8-N-1에서는 일반적으로:

1 Start Bit

8 Data Bits

0 Parity Bit

1 Stop Bit

이므로 Character 하나를 전달하는 데 총:

10 bits

가 사용됩니다.

개념적으로:

Idle
  │
  ▼

Start
  │
  ├─ D0
  ├─ D1
  ├─ D2
  ├─ D3
  ├─ D4
  ├─ D5
  ├─ D6
  ├─ D7
  │
Stop
  │
  ▼

Idle

입니다.


11장 한 Byte를 보내는데 왜 10 Bit가 필요한가#

Data 자체는 8 Bit입니다.

하지만 UART는 Character의 경계를 알기 위해 Start와 Stop Bit가 필요합니다.

따라서 8-N-1에서는:

Data
8 bits

Overhead
2 bits

입니다.

즉:

총 10 bits

를 전송해야 Data 8 Bit를 전달할 수 있습니다.


12장 9600-8-N-1의 실제 Data 처리량#

9600 baud에서 일반적인 8-N-1이라고 하겠습니다.

Character 하나당:

10 bits

이 필요합니다.

따라서 이론적인 Character 전송률은 대략:

9600 / 10
=
960 characters/s

입니다.

즉:

9600 baud
=
9600 Byte/s

가 아닙니다.

실제 유효 Data 처리량은 Frame Overhead의 영향을 받습니다.


12.1 Protocol Overhead도 추가된다#

Application 수준에서는 추가로:

STX

Address

Command

Length

Checksum

ETX

같은 Field가 들어갈 수 있습니다.

그래서 실제 업무 Data 처리량은 더 낮아질 수 있습니다.


13장 Data Bit는 어떤 순서로 전송될까#

일반적인 UART에서는 Data Bits를 Least Significant Bit부터 전송하는 경우가 흔합니다.

예를 들어:

0x41

은 Binary로:

01000001

입니다.

UART Line에서는 D0부터 D7 순서로 전달됩니다.

장비 Protocol 문서에서 Hex Data를 확인할 때 이 점을 이해하면 Logic Analyzer 결과를 읽는 데 도움이 됩니다.


14장 Baud Rate가 다르면 어떤 증상이 나타날까#

가장 흔한 설정 불일치입니다.

송신:

9600

수신:

19200

이라면 수신 Sampling Timing이 달라집니다.

결과:

문자가 깨짐

Random Byte

Frame Error

전혀 응답 없음

이 나타날 수 있습니다.


14.1 완전히 무응답처럼 보일 수도 있다#

상위 Protocol이:

STX
DATA
CRC
ETX

형태라고 하겠습니다.

Byte가 깨지면:

STX 인식 실패

CRC 실패

ETX 인식 실패

가 발생할 수 있습니다.

Application은 Packet 전체를 버립니다.

사용자에게는:

장비가 응답하지 않는다.

로 보일 수 있습니다.


15장 Parity가 다르면 어떻게 될까#

송신:

9600-8-E-1

수신:

9600-8-N-1

이라고 가정합니다.

양쪽의 Frame 구조가 다릅니다.

수신기가 Data와 Parity, Stop Bit 위치를 다르게 해석할 수 있으므로:

Parity Error

Frame Error

문자 깨짐

Packet 폐기

등의 문제가 발생할 수 있습니다.


16장 Stop Bit가 다르면 무조건 통신이 안 될까#

이 부분은 조금 더 신중하게 봐야 합니다.

예를 들어 송신 측이 2 Stop Bits를 사용하고 수신 측이 1 Stop Bit를 기대하는 경우처럼 특정 조합은 실제 구현에 따라 동작할 수도 있습니다.

하지만 반대 방향이나 Timing 조건에 따라 Framing Error가 발생할 수 있습니다.

따라서:

1 Stop Bit
↔
2 Stop Bits

를:

무조건 통신 불가

라고 단정하는 것보다 양쪽 설정을 동일하게 맞추는 것이 원칙이라고 이해하는 것이 좋습니다.


17장 RS-232와 UART를 구분하자#

9600-8-N-1은 흔히 UART Frame 설정과 관련된 표현입니다.

RS-232는 전기적인 Interface를 정의합니다.

개념적으로:

Application Data
↓
UART Frame
↓
RS-232 Transceiver
↓
RS-232 Cable

이라고 볼 수 있습니다.


17.1 UART 설정이 맞아도 전기적 Interface가 다르면 안 된다#

예:

장비 A
RS-232

장비 B
3.3V TTL UART

두 장비 모두:

9600-8-N-1

로 설정되어 있다고 해도 직접 연결하면 안 됩니다.

전기적 Signal Level이 다르기 때문입니다.


18장 설정과 배선을 동시에 봐야 한다#

Serial 장애에서는 크게 두 축을 나눠야 합니다.

물리적 Interface#

RS-232인가?

TTL인가?

TX/RX 배선은 맞는가?

GND는 정상인가?

Frame 설정#

Baud Rate

Data Bits

Parity

Stop Bits

Flow Control

입니다.

둘 중 하나라도 맞지 않으면 통신은 실패할 수 있습니다.


19장 Flow Control은 9600-8-N-1에 포함되지 않는다#

중요한 부분입니다.

9600-8-N-1

만으로 모든 Serial 설정이 표현되는 것은 아닙니다.

별도로:

Flow Control

설정이 존재할 수 있습니다.

대표적으로:

None

RTS/CTS

XON/XOFF

입니다.

따라서 두 장비가 모두:

9600-8-N-1

이라고 표시되어 있어도 Flow Control이 다르면 통신에 문제가 생길 수 있습니다.


20장 장비 매뉴얼에서는 어떻게 표시될까#

예:

Baud Rate:
9600

Data Bits:
8

Parity:
None

Stop Bits:
1

Flow Control:
None

또는:

Serial:
9600, 8N1, No Flow Control

처럼 표시될 수 있습니다.

현장에서는 단순히 9600만 확인하지 말고 모든 설정값을 한 세트로 확인해야 합니다.


21장 산업 장비에서 많이 보는 설정#

장비마다 다르지만 예를 들면 다음과 같은 조합을 볼 수 있습니다.

9600-8-N-1

19200-8-N-1

38400-8-N-1

115200-8-N-1

9600-7-E-1

어떤 것이 표준 정답인 것은 아닙니다.

제조사가 정의한 Protocol과 Hardware에 맞춰 설정합니다.


22장 높은 Baud Rate가 무조건 좋은 것은 아니다#

Baud Rate를 높이면 더 빠르게 데이터를 보낼 수 있습니다.

하지만 무조건 높은 값을 사용하는 것이 항상 좋은 것은 아닙니다.

환경에 따라:

Cable 길이

Cable 특성

Noise

Hardware 성능

Clock 정확도

장비 지원 범위

등을 고려해야 합니다.

특히 Legacy Device는 특정 Baud Rate만 지원할 수도 있습니다.


23장 실제 현장 사례 — 새 장비로 교체했더니 문자만 깨진다#

기존 장비:

9600-8-N-1

신규 장비:

19200-8-N-1

이라고 가정하겠습니다.

Cable과 Pinout은 동일합니다.

Terminal에는:

▒A??▒

같은 데이터가 나타납니다.

이 경우 Cable을 다시 만드는 것보다 먼저:

Baud Rate

를 확인하는 것이 좋습니다.


24장 실제 현장 사례 — 아무 데이터도 없는 것처럼 보인다#

장비 A:

9600-8-N-1

Controller:

115200-7-E-1

이라고 하겠습니다.

Controller는 들어오는 Byte를 정상적인 Packet으로 해석하지 못합니다.

상위 Protocol Parser에서:

Header 없음

CRC Error

Frame Invalid

등으로 Data를 버릴 수 있습니다.

최종 화면에는:

장비 응답 없음

만 표시될 수 있습니다.


25장 STX·ETX Protocol과 Serial Frame은 다른 층이다#

Serial Frame:

Start Bit

Data Bits

Parity

Stop Bit

와:

STX

CMD

DATA

CRC

ETX

는 서로 다른 개념입니다.

전자는 UART 전송 단위이고 후자는 상위 장비 Protocol의 Message 구조입니다.


25.1 계층으로 보면#

장비 Protocol

STX | CMD | DATA | CRC | ETX

        ↓

Byte Stream

        ↓

UART Frame

Start | Data | Parity | Stop

        ↓

RS-232 전기 신호

입니다.

이 구조를 이해하면 장애를 훨씬 쉽게 분리할 수 있습니다.


26장 CRC 오류가 많다고 Protocol부터 의심하지 않는다#

예를 들어 Log에:

CRC ERROR

가 반복된다고 하겠습니다.

실제 원인이:

Baud Rate 불일치

라면 Byte 자체가 잘못 수신되고 있습니다.

그러면 당연히 CRC 계산도 맞지 않습니다.

따라서:

CRC Error
↓
무조건 CRC Algorithm 문제

라고 판단하면 안 됩니다.

먼저 Serial 설정과 물리 신호를 확인해야 합니다.


27장 Linux에서 Serial 설정 확인하기#

Linux에서는 stty를 사용해 Serial Port 설정을 확인하거나 변경할 수 있습니다.

예:

stty -F /dev/ttyS0 -a

현재 설정을 확인합니다.

시험 환경에서 9600 baud를 설정하려면:

stty -F /dev/ttyS0 9600

8 Data Bits:

stty -F /dev/ttyS0 cs8

Parity 없음:

stty -F /dev/ttyS0 -parenb

1 Stop Bit:

stty -F /dev/ttyS0 -cstopb

처럼 설정할 수 있습니다.

배포판과 stty 구현에 따라 세부 Option 동작이 다를 수 있으므로 실제 시스템에서는 Manual을 확인합니다.


28장 Python에서 9600-8-N-1 설정하기#

pySerial에서는 다음과 같이 설정할 수 있습니다.

import serial

ser = serial.Serial(
    port="/dev/ttyS0",
    baudrate=9600,
    bytesize=serial.EIGHTBITS,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    timeout=1
)

ser.write(b"TEST\r\n")

response = ser.readline()

print(response)

ser.close()

이를 설정값으로 표현하면:

9600-8-N-1

입니다.

실제 TEST가 유효한 장비 명령이라는 뜻은 아니며 장비 Protocol은 제조사 문서를 따라야 합니다.


29장 Windows에서도 같은 원리가 적용된다#

Windows의 COM Port 설정에서도 다음 항목을 볼 수 있습니다.

Bits per second

Data bits

Parity

Stop bits

Flow control

예:

Bits per second
9600

Data bits
8

Parity
None

Stop bits
1

Flow control
None

입니다.

OS가 달라져도 Serial 통신의 기본 설정 원리는 같습니다.


30장 Logic Analyzer나 Oscilloscope로 무엇을 볼 수 있을까#

Software 설정만으로 해결되지 않으면 실제 Signal을 확인할 수 있습니다.

단, RS-232 전압을 직접 측정하려면 사용하는 장비가 해당 전압 범위를 안전하게 지원하는지 확인해야 합니다.

확인할 수 있는 항목:

Signal 존재 여부

Bit Timing

전압 수준

Noise

Frame Timing

등입니다.


30.1 Logic Analyzer 사용 시 주의#

일반적인 저전압 Logic Analyzer는 RS-232의 전압 수준을 직접 입력받도록 설계되지 않은 경우가 있습니다.

따라서 RS-232 Line을 Logic Analyzer에 바로 연결하기 전에:

입력 전압 허용 범위

Level Converter

RS-232 Decoder

등을 확인해야 합니다.


31장 Baud Rate를 추정할 수도 있다#

매뉴얼이 없는 장비에서 Oscilloscope나 적절한 Analyzer로 Bit 폭을 측정하면 Baud Rate를 추정할 수 있습니다.

예:

Bit Width
약 104 μs

라면:

1 / 104 μs
≈
9600

이므로 9600 baud일 가능성을 확인할 수 있습니다.

다만 실제 값은 측정 오차와 Clock 오차를 고려해야 합니다.


32장 설정을 바꿀 때 하나씩 변경한다#

통신이 안 된다고 다음을 동시에 바꾸면:

Baud Rate

Parity

Data Bits

Stop Bits

어떤 변경이 효과가 있었는지 알 수 없습니다.

가능하면:

현재 설정 기록
↓
한 항목 변경
↓
결과 확인
↓
원복 또는 다음 변경

방식으로 테스트합니다.


33장 Auto Baud 기능도 존재한다#

일부 장비나 MCU는 들어오는 신호 Timing을 분석해 Baud Rate를 자동으로 감지하는 기능을 제공할 수 있습니다.

하지만 모든 장비가 지원하는 기능은 아닙니다.

따라서:

장비가 알아서 속도를 맞추겠지.

라고 가정해서는 안 됩니다.

매뉴얼에서 Auto Baud 지원 여부를 확인합니다.


34장 USB-to-Serial Adapter도 설정을 확인한다#

PC에서 USB-to-RS232 Adapter를 사용하는 경우:

Application
↓
Virtual COM Port
↓
USB Driver
↓
USB Serial Chip
↓
RS-232 Transceiver
↓
Device

경로를 거칩니다.

통신 오류가 있으면:

COM Port 번호

Driver

Serial 설정

Adapter 종류

RS-232인지 TTL인지

도 같이 확인합니다.


35장 흔히 하는 잘못된 판단#

35.1 9600은 Byte/s다#

아닙니다.

Baud Rate를 Byte/s와 동일하게 해석하면 안 됩니다.


35.2 9600 baud면 항상 9600 bit/s다#

일반적인 Binary UART에서는 숫자가 동일하게 보이는 경우가 많지만 개념적으로 Baud와 Bit Rate는 다른 값입니다.


35.3 8-N-1이면 Byte 하나에 8 Bit만 전송한다#

아닙니다.

Start와 Stop Bit가 추가됩니다.


35.4 Parity가 있으면 데이터가 안전하다#

Parity는 제한적인 오류 검출 기능입니다.

강력한 무결성 검사는 CRC 등 상위 Protocol 방식이 필요합니다.


35.5 Baud만 같으면 통신된다#

아닙니다.

다음이 함께 맞아야 합니다.

Data Bits

Parity

Stop Bits

Flow Control

Physical Interface

Protocol

35.6 CRC 오류면 CRC 코드가 잘못됐다#

반드시 그렇지 않습니다.

Serial 설정이나 Noise 때문에 Byte 자체가 손상됐을 수도 있습니다.


36장 장애 증상별 점검표#

증상 우선 확인
완전 무응답 Interface·배선·Port
이상한 문자 Baud Rate·Data Bits
간헐적 문자 깨짐 Baud·Noise·Signal
Parity Error Parity 설정·Signal
Framing Error Baud·Stop Bit·Signal
CRC Error 반복 Serial 설정·Noise·Protocol
Packet Header 인식 실패 Baud·Data Bits·Protocol
일부 데이터 누락 Flow Control·Buffer
재부팅 후만 통신 안 됨 기본 Serial 설정 저장 여부

37장 현장 점검 순서#

Serial 장비에서 Data가 깨지거나 응답이 없으면 다음 순서로 확인합니다.

1. Interface가 RS-232인지 확인
↓
2. TX / RX / GND 확인
↓
3. Baud Rate 확인
↓
4. Data Bits 확인
↓
5. Parity 확인
↓
6. Stop Bits 확인
↓
7. Flow Control 확인
↓
8. 실제 Byte 확인
↓
9. Packet 구조 확인
↓
10. Checksum / CRC 확인

아래에서 위로 올라가는 방식입니다.


38장 설정 비교표#

항목 장비 A 장비 B 판단
Interface RS-232 RS-232 일치
Baud 9600 115200 불일치
Data Bits 8 7 불일치
Parity None Even 불일치
Stop Bits 1 1 일치
Flow Control None RTS/CTS 불일치

이 경우 Cable을 교체하기 전에 Serial 설정부터 맞추는 것이 좋습니다.


39장 자기 점검#

39.1 9600-8-N-1에서 9600은 무엇인가#

Baud Rate입니다.

초당 Symbol 수를 의미합니다.


39.2 8은 무엇인가#

한 Character의 Data 영역에 사용하는 Data Bit 수입니다.


39.3 N은 무엇인가#

Parity를 사용하지 않는다는 뜻입니다.


39.4 마지막 1은 무엇인가#

Stop Bit 1개를 사용한다는 의미입니다.


39.5 두 장비 모두 9600-8-N-1이면 반드시 통신되는가#

아닙니다.

추가로:

RS-232 전기 Interface

TX/RX/GND

Flow Control

장비 Protocol

등이 맞아야 합니다.


40장 이 글을 마치며#

9600-8-N-1은 단순한 숫자와 문자 조합이 아닙니다.

이 값은 Serial Line에서 하나의 Character를 어떤 속도와 구조로 보낼 것인지 정의하는 약속입니다.

정리하면:

9600
Baud Rate

8
Data Bits

N
No Parity

1
Stop Bit

입니다.

그리고 실제 전송은:

Idle
↓
Start Bit
↓
Data Bits
↓
Parity Optional
↓
Stop Bit
↓
Idle

구조로 진행됩니다.

이 설정이 서로 맞지 않으면:

문자 깨짐

Parity Error

Framing Error

CRC Error

Packet 인식 실패

응답 없음

같은 여러 증상으로 나타날 수 있습니다.

특히 다음 네 가지를 기억하면 됩니다.

Baud Rate는 Symbol 속도이며 일반적인 UART 환경에서는 Bit Timing과 밀접하게 연결됩니다.

8-N-1에서는 Data 8 Bit를 보내기 위해 Start와 Stop Bit까지 포함한 Line 전송이 필요합니다.

CRC나 Packet 오류처럼 보이는 문제도 실제 원인은 Baud·Parity 같은 하위 Serial 설정일 수 있습니다.

9600-8-N-1이 같아도 Flow Control, RS-232 전기 Interface, 배선, 상위 Protocol까지 맞아야 실제 장비 통신이 완성됩니다.

Serial 통신 장애를 만났을 때 가장 중요한 것은 숫자를 외우는 것이 아니라:

전기 신호
↓
Bit Timing
↓
UART Frame
↓
Byte
↓
Packet
↓
장비 명령

이라는 흐름을 따라가며 어느 단계부터 데이터 해석이 달라지는지 찾는 것입니다.

이 페이지의 목차