근데 뭔지 모르겠어요 ㅠ.ㅠ
할 때는...
UART는 LSB 부터 온다.
즉. 0x01 이면 펄스 1 부터 앞에 온다.
UART는 9600bps에서 1바이트가 대략 1ms다.
스코프로 트리거 걸어서 간격 재보면 대충 펄스만 보고도 속도를 알 수 있다.
UART는 9600bps에서 바이트당 약 10비트를 쓴다.
8비트 + 스타트 + 스톱 + 패리티 (패리티에 따라..) = 10비트
따라서 초당 9600 비트를 보내는 전송이므로 10비트로 나누면 = 960바이트 / 1초 = 1바이트 / 1ms 가 된다.
2400bps라면 1초에 240 바이트가 전송 가능하므로 1 바이트는 1000/240 = 4ms
아 귀찮고 1/4 속도이므로 대충 4ms가 된다.
4ms는 보고 만지면 알 수 있는 거 아님? ㅋㅋ
펄스가 떨어지는 지점을 스타트 비트 기준으로 보면 대충 아 제대로 나오네 알 수 있다.
로직 어날라이저까지 쳐다보면 힘들다.
설정하다 반나절 훅간다.
대신 보다보면 펄스를 눈으로 읽을 수 있다;;
넌 패리티라면 이렇게 될 것이다.
동 -동동동동찍찍찍찍-동 = 스타트 - 00001111 - 스톱 = LSB 가 먼저 오므로 0xF0이 될 것이다.
우와 님은 펄스를 읽는 남자군요 내공 좋으시네요 영웅이 됨
UART는 말 그대로 비동기, 기준 클럭이 없다. 통신 쌍방간 속도를 추정해내거나 약속해야 한다.
그런데 이 비동기 속도라는 것이 칩마다 제각각 만들어내는 클럭에 의존하므로..
소스 클럭의 정수 배나 정수 몫과 일치하지 않으면 그것이 에러율이 된다.
항상 주의할 것. 본 블로그 상단 메뉴에서 "찾기" 누르고 UART로 검색하세열