2013-12-10 5 views
0

어떻게 USART 보오율을 2Mbps, 3Mbps 또는 4Mbps로 높일 수 있습니까? 내가 STM32L151RCT6A를 사용하고 있는데, 나는 921600까지 돌릴 수있다. 나는 PLL 32MHz로 클럭을 설정했다. 그것이 가능하다는 것을 보여주는 데이터 시트에서, 이것은 누구도 이것을 한 적이 있습니까?USART ~ 4MBps! 방법? STM32L151xx

+0

어떤 모드를 사용하고 있습니까? USART는 UART 유형의 물건, 시리얼 동기화 등을 할 수 있으며 모든 모드에서 4Mbit/초가 가능하지 않을 수 있습니다. –

+0

usart-RX/TX를 인터럽트를 통해 사용하고 있습니다. 이것은 baud rate 계산 공식을 사용하여 수행 할 수 있습니다.이 공식은 pclk 주변 장치 클럭을 사용하지만이를 테스트해야합니다. – Ishmeet

+3

[참조 설명서] (http://www.st.com/web/en/resource/technical/document/reference_manual/CD00240193.pdf)의 26.3.4 장에서 자세히 설명합니다. OVER8 = 1 및 USART_BRR = 1로 4Mb가됩니다. 그것을 * 신뢰할 수있게 만들고 비트 전송률을 유지하는 것은 중요하지 않습니다. –

답변

2

데이터 시트는 특정 부품과 주변 장치 세트 및 전기적 특성에 대해서만 설명했습니다. 장치를 사용하는 방법에 대한 정보는 Reference Manual이 필요합니다. 이 전송 속도는 다음 방정식을 제공한다 :

송/수신 보드 = CK_APB1/(8 × (2 - OVER8) X USARTDIV)

USARTDIV가 USART_BRR 레지스터에 부호화되어있는 부호없는 고정 소수점 수는

. OVER8 = 0, 소수부는 DIV_fraction 의해 4 비트의 부호화 프로그래밍

  • [3 : 0] USART_BRR 비트 레지스터 OVER8 = 1, 소수부는 3 부호화
  • USART_BRR 레지스터의 DIV_fraction [2 : 0] 비트와 3 비트를 지우고 을 지워야합니다.

USART는 APB1 버스에 있으며, 참조 설명서의 그림 12는 클럭 트리로 APB1 클록이 PLL 클럭에서 파생 된 방법을 보여줍니다. 최대 APB1 클럭은 32MHz입니다. 더 빠른 속도를 위해서는 OVER8 = 1이 필요합니다.

baud = 32X10/(USARTDIV x 8).

그래서 USARTDIV = 32X10 6/(전송 × 8) 따라서 4Mbps의 내용

, USARTDIV = 1 (자세한 내용은 표 138 S.No.12 참조). 2Mps의 경우 USARTDIV = 2입니다. 3Mbps를 달성하려면 APB1 클록을 24MHz로 낮추고 USARTDIV = 1로 설정해야합니다 (표 131 참조). 그러나 클럭 속도는 다른 모든 APB1 주변 장치에도 적용됩니다.

USART 전송 속도를 올바르게 프로그래밍하는 가장 간단한 방법은 STM32L1xx standard peripheral library입니다. 또한 올바른 주변 장치 클록 설정 (및 기타 사항)을 결정하고 초기화 코드를 생성하려면 STM의 MicroXplorer 도구를 사용할 수 있습니다.

+0

감사합니다. 좋은 대답입니다! 나는 2 개의 STM32L151RCT6A 보드 사이에 USART 통신을 시도 할 예정이다. USART TXD와 RXD를 연결하기 위해 매우 작은 전선을 사용할 것이고, STM32L1xx 표준 라이브러리를 보았고 나는 그것을 사용하고있다. – Ishmeet

+0

이 답변을 작성한 이후로 MicroXplorer는보다 포괄적 인 STM32CubeMX로 대체되었습니다. 비록 개인적으로 CubeMX가 생성 한 코드와 HAL보다 StdPeriph 라이브러리를 개인적으로 권장하지만 여전히 유용한 시계 계산기 및 핀 다중 플렉스 충돌 검사기입니다. – Clifford