직렬 통신 보드 속도 설정 및 보드 율 알고리즘
싱글 칩 마이크로 컴퓨터의 시리얼 통신을 사용하는 경우, 전송 속도를 설정해야하며 전송 속도는 9600, 19200 ...으로 설정해야합니다. 이게 전통인가요? 에서 무엇을? 해당 수정 발진기는 일반적으로 11.0592MHz입니다.
먼저 크리스탈 발진기를 설정 한 다음 보드 율을 설정하거나 보드 율을 설정 한 다음 크리스탈 발진기를 설정하십시오. 왜 이것을 설정해야합니까?
두 가지 더 신뢰할 수있는 진술이 있습니다.
1 : 직렬 장치 사용 요구 사항과 결합 된 전기, 전송 매체 등의 물리적 특성에 따라
효과적인 통신을 보장하기 위해, 전기, 전송 매체 등의 물리적 특성에 따라 직렬 장치 사용 요구 사항과 결합하여 RS232의 최대 전송 속도는 115200에 불과하며 두 단계 57600, 28800, 19200; 이 속도에 적응하려면 해당 수정 진동수를 설계하십시오.
2 : 이것은 통신 회선의 특성에 의해 결정됩니다.
전화선의 대역 통과는 300 ~ 3KHz입니다. 그 당시, 건초 처음 모뎀에 종사, 그래서 2400HZ 신호를 사용하는 해당 보오율은 2400입니다. 기본 주파수가 결정되기 때문에, 개선 된 패스 는 2400의 기초에 따라 속도 의 방법을 채택 하므로 나중에 9600.19200의 형성. . . .
어느 쪽이든, 보오율 (baud rate)과 크리스탈 주파수가 있습니다.
단일 칩 마이크로 컴퓨터의 직렬 통신의 보오율 계산.
모드 0과 모드 2에서 직렬 포트 전송 속도는 고정되어 있으며 모드 0은 Fosc / 12입니다. 모드 2는 PCON 레지스터의 SMOD 비트에 의해 결정되는 Fosc / 32 또는 Fosc / 64입니다.
모드 1과 모드 3에서 보오율은 가변 값입니다. 보오율은 타이머 1에 의해 생성 될 수 있습니다 (8052는 타이밍 2에 의해 생성 될 수 있음). 전송 속도 란 무엇입니까? 타이머 1 오버 플로우 속도에 따른 전송 속도가 결정됩니다.
전송 속도 = (2SMOD / 32) * (타이머 1 오버플로 율)
참고 : 여기서 2SMOD SMOD는 인덱스이고, SMOD는 보오율 이중 보오율 비트이며,이 비트는 PCON 레지스터에 있습니다.
보레이트 발생기로 타이머 1을 사용하는 경우 일반적으로 8 비트 자동 리로드 모드에서 작동하도록 타이머 1을 구성하고 타이머 1 인터럽트를 비활성화 한 다음 타이머 1 오버플로 를 계산하는 방법이 필요합니다. 오버플로 속도는 오버플로의 빈도입니다. 크리스털 주파수가 12MHz이고 TH1 값이 0xFE라고 가정하면 오버플로에 2 클럭 펄스 만 필요하며 오버플로 기간은 2us 이며 오버플로 주파수는 500KHz입니다. 타이머 섹션에 따르면 타이밍 시간은 다음 공식을가집니다.
타이밍 시간 = (최대 카운트 값 - 카운터 초기 값) * 머신 사이클 = (최대 카운트 값 - 카운터 초기 값) * (12 / 크리스털 주파수 (Hz)) = (256-TH1) * (12 / OSC_FREQ Hz)) (s).
그러면 오버플로의 빈도는 당연히 다음과 같습니다.
OSC_FREQ (Hz) / ((256-TH1) * 12).
최종 푸시 - 투 - 보오율은 다음과 같습니다.
(2SMOD / 32) * (OSC_FREQ (Hz) / ((256-TH1) * 12)).
전송 속도의 계산식을 사용할 수 있으며 당연히 전송 속도에 따라 TH1의 초기 값을 도출 할 수 있습니다.
BAUD_RATE = (2SMOD / 32) * (OSC_FREQ (Hz) / ((256-TH1) * 12))
32 * 12 * (256-TH1) = (2SMOD * OSC_FREQ (Hz)) / BAUD_RATE
256-TH1 = (2SMOD * OSC_FREQ (Hz)) / (BAUD_RATE * 32 * 12)
TH1 = 256- (2SMOD * OSC_FREQ (Hz)) / (BAUD_RATE * 32 * 12)
크리스털 주파수가 11.0592MHz라고 가정하면 보드 율은 9600이고 SMOD = 0입니다. TH1의 초기 값은 무엇입니까? 위 공식에 따라 TH1 = 256-11059200 / (9600 * 32 * 12) = 0xFD를 계산할 수 있습니다.





