티스토리 뷰

728x90

1. 개요

  

 일반 GPIO 핀을 이용하여 Uart TX 기능을 구현해 보자.



2. 분석

  

 위키 백과에 따르면 보통 8비트 데이터를 전송하며, 상황에 따라 5~9비트 데이터를 전송할 수 있다. 또한 데이터 비트 앞, 뒤로 시작 비트와 종료 비트, 그리고 패리티 비트가 존재한다.



 위키 백과에 따르면 시작 비트와 패리티 비트는 하나, 종료 비트는 레지스터에 따라 최대 2개까지 존재할 수 있다고 명시되어 있는데, 오실로스코프로 구현되어 있는 몇몇 보드의 Uart 신호를 출력해 보면 실제로는 그렇지 않다.


우선 아래 두 사진을 보자.

  첫 번째 사진은 0x11(0001 0001), 두 번째 사진은 0x88(1000 1000)의 Uart로 출력되는 파형이다. 여기서 우리는 Tx는 데이터 신호가 없을 시 HIGH로 유지되며 '10'이라는 신호가 출력된 후, 데이터 신호가 나오는 것을 알 수 있다.


또한 '0xB1'의 신호 사진인 아래 사진을 보면 4bit 단위가 아닌 8bit 모두가 뒤집혀 있는 것을 알 수 있다. 


그리고 아래 두 사진으로 오실로스코프 왼쪽 신호부터 나온다는 것을 확인할 수 있다.




3. Source Code

  

 코드를 작성하는데에 있어 몇가지 주의해야할 것들이 있다.

  • Clock : 반 클락에 대한 상태를 유지하는 시간을 소스 코드 상에서는 Delay로 조절해야 한다. 기본적인 9600 baud rate 같은 경우 0.5 Clock은  1/9600 s, 즉 약 104us이다.(57600 = 16us, 115200 = 8us), 대부분 소프트웨어로 MicroSecond까지는 조절 가능하지만 그 이하는 불가능 하다. 따라서 속도가 빠른 것은 소프트웨어로 기능을 구현할 수 없다.

  • Data Bit : 앞서 설명 했듯이 Data Bit가 뒤집혀있는 것을 프로그램으로 보장해야한다.

  • Start Bit : 사진에서 나와있듯이 Data Bit가 나오기전 '10'의 Start Bit를 추가해야한다.

  • Normal State : 데이터 신호가 없을 때는 1이 유지된다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함