티스토리 뷰
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이 유지된다.
'HardWare > 기타' 카테고리의 다른 글
부산대 정컴 3학년 2학기 하드웨어 실험 설치법 (0) | 2017.09.17 |
---|---|
IoT 프로토콜 MQTT (0) | 2017.01.11 |
ESP8266-12E와 Arduino 차이점 및 오류 해결 방법 (0) | 2016.11.28 |
샤오미 분해 및 보드 쉽게 충전 가능한 독립 전원으로 사용하기 (10) | 2016.11.20 |
전자회로 심볼 (2) | 2016.11.17 |
- Total
- Today
- Yesterday
- php
- Notification
- 테라펀딩 #투게더펀딩 #P2P투자 #부동산 소액 투자 #카카오 #토스
- vim 설치
- Java Decompiler
- c언어
- 포켓몬 고
- Res
- LISTVIEW
- java
- java url
- jad
- 파일 입출력
- 서버
- 포켓몬 Go
- counter
- 카운터
- java 파일 입출력
- 유전
- 안드로이드
- 5582
- 파일입출력
- 인텐트
- vim
- android
- 알고리즘
- 아두이노
- Service
- 자바 입출력
- 유전 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |