RS232C는 5v~15v인데 ARM은 3.3v라서 그냥 신호를 주고 받지 못한다.
신호레벨이 않맞음.
1:1방식 - 한 개씩 밖에 주고 받지 못한다.
RS422A는 1:N 방식
RS485는 N:N방식
<동기모드 비동기 모드>
칩을 쓰는 이유는 편하기 때문에…
일반회로로도 다 작성 하는 것이 가능하다.
동기는 데이터가 언제 오는지 알고 있는 것.(빠르다.)
비동기는 뜬금없이 데이터가 날라오는 것.(편하다)
A가 B에게 물건을 주고 간다고 가정할 때 그냥 물건을 던지고 가는 것은 비동기 물건을 줄 떄 "야~ 이거 여깄다" 알려주는 것은 동기.
1 대 1로 이야기 하는 것 , 지명하고 이야기(동기.)
대중에게 이야기 하다보니까 내 이야기(비동기)
동기는 약속이 되어있다. 데이터를 보내겠다는 신호를 주고 데이터를 보낸다.
PA0번에 인터럽트를 건 다고 생각한다면…
비동기는 그냥 데이터를 날리는 것.
동기는 데이터가 날라오겠구나 하고 날라오는 것.
동기모드에서는 'A'라는 걸 그냥 보내면 된다. 야~이거봐라 하고 하는 거니까.
비동기모드는 그냥 던져주는거니까 메모같은 걸 남겨줘야 한다. 그래서
1111 |
'A' |
2222 |
이런 형식으로 보내줘야 한다.
스톱비트 - 데이터의 끝을 알리는 것.
페리티비트 - 비동기 모드에 들어가야 됨
동기모드는 서로서로 보고 있는 상태이므로 데이터를 보내면 어~데이터 받았다라는 답이 오면 어~ 그럼 다음 데이터보내께 이런 방식 (헨드쉐이킹. 에코를 몇 번 주고 받는 것.) 인터넷에서는 3 헨드쉐이킹한다. 에코를 보내면 에코를 받았다고 보내고 또 받았다고 또 보내는 것. 그걸 3번 하는 것.
Max232칩을 사용하면 231쪽의 스태다드 방식의 통신이 가능하다.
설정에 따른 ARM내부에서 어떤 클락이 나오는지 보여줌.
디버그유닛 - 많이 쓰는 특정 레지스트를 모아 놓은 것. p.129
USART에서는 대부분 비동기모드를 사용
보레이트 - 데이터 통신속도. 속도가 클 수록 빠르다.
보레이트 속도가 안 맞으면 데이터를 못 받을 뿐 통신은 된다.
연결만 되면 글자가 깨져서라도 읽혀지긴 한다.
48MHz(MCK) / (16 X CD값) 125쪽
p.132 DBUG 보레이트 발생 레지스터 DBUG_BRGR 사용
표를 보면서 설정.
p.125쪽 것을 보면서 설정해야 함.
p.129 DBGU 제어 레지스터 DBGU_CR
쓰는 거에 11 넣어주면 됨 Tx Rx 송신 수신
DBGU 모드 레지스터 DBGU_MR - 페리티나 에코모드 설정.
DBGU 상태레지스터 DBGU_SR - 초기화 시킬 때 사용. 인터럽트관련
레지스터 // 데이터가 들어왔을 때 버퍼에 데이터를 읽지 않으면 반복.
지금은 읽을 필요 없음.
지금은 우리가 읽고 싶을 때 읽을 것임.
DBGU 수신홀딩 - 버퍼, 어디에 데이터가 있어야 보내거나 받을거 아냐
DBGU 송신홀딩 - 1이 아니라면 다음에 송신할 문자가 들어있다.
콜링은 데이터가 들어오는지 계속 보고 있는 것.
언제 들어올지 모르기 때문에 필요한 것.
p.131에서 b12에 RXBUFF에 값이 들어있다고 하면 거기에 들어가 있는지 계속 확인한다.
P.34에서 아래표에 P9,10은 DBGU 콘넥터.
PIO 주변장치 A선택 주변장치 A로 사용한다. P9,10 비트 1설정.
응답이 올때까지 아무 일도 못하고 기다려야 하는가와(동기)
응답이 오기까지 다른 일을 할 수 있는가(비동기)의 차이
'About 프로그래밍!!! > ARM' 카테고리의 다른 글
[ARM] 카운터 (0) | 2010.07.05 |
---|---|
[ARM]통신 인터럽트 (0) | 2010.07.01 |
[ARM]인터럽트(두 개 거는 것) (0) | 2010.06.28 |
[ARM]인터럽트 확인.(초기화) (0) | 2010.06.28 |
[ARM]인터럽트(그냥) (0) | 2010.06.28 |