ATXMEGA 시리즈 USART의 BSEL 및 BSCALE를 쉽게 계산하는 방법
USART는 ATMEGA의 USART(UART) 사용 방법과 대체로 같지만, ATMEGA 시리즈와 달리 BSCALE(Baud Rate Scale factor)의 시계 척도 조정 기능이 있다.BSCALE와 BSEL(Baud Rate bits)을 결합하면 어떤 시스템 시계든 임의의 전송 속도를 설정할 수 있습니다.
그러나 BSCALE의 계산 방법은 데이터 테이블을 봐도 정확하지 않다.avr-gcc 라이브러리에서도 USART를 쉽게 사용할 수 있는 함수와 매크로를 찾을 수 없습니다.
응용 노트를 찾아보면 excel의 보트율 계산 매크로가 있다니!
AVR1307: Using the XMEGA USART ( pdf , 소스 코드와 excel 파일 등의 zip )
이 zip에서이런 서류가 있어요.Excel 파일을 열어 CPU Clock 및 User Baurate를 지정하면 BSCALE, BSEL, CLK2X의 지정해야 할 값과 오류율을 한눈에 볼 수 있습니다.
녹색 칸은 작은 오류의 통신을 할 수 있음을 보여 줍니다.
예를 들어, 시스템 클록 1MHz의 경우 19.2kbps로 USART를 사용하려는 경우
- BSCALE: -1
- BSEL: 11
- CLK2X: 1
위 그림에서 볼 수 있듯이 '% 1' 을 선택하면 오류율이 0.16%입니다.
USART 초기화의 소스 코드는 다음과 같습니다.
main.c
#define F_CPU 1000000UL
・・・ 省略 ・・・
void initUsart()
{
// USARTCO, 19.2kbps, -0.16%
// BSCALE:-1, BSEL:11, CLK2X: 1
// Set BSCALE and BSEL
USARTC0_BAUDCTRLA = 11;
USARTC0_BAUDCTRLB = USART_BSCALE3_bm | USART_BSCALE2_bm | USART_BSCALE1_bm | USART_BSCALE0_bm;
// Enable RX,TX and CLK2X
USARTC0_CTRLB = USART_RXEN_bm | USART_TXEN_bm | USART_CLK2X_bm;
// Async, 8bits, non parity-bits, 1stop-bit
USARTC0_CTRLC = USART_CMODE_ASYNCHRONOUS_gc | USART_CHSIZE_8BIT_gc | USART_PMODE_DISABLED_gc;
}
Reference
이 문제에 관하여(ATXMEGA 시리즈 USART의 BSEL 및 BSCALE를 쉽게 계산하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hideyuki/items/7a5f3806b5e9477191cb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)