1

我正在使用带有 RS232 的 PIC18f2455 的 USART 并且在配置它时遇到了一些麻烦。

我正在使用 24 MHz 晶体振荡器。PLL 使用 6 的预分频器启用(在输入端设置 4MHz)并在输出端提供固定的 96MHz。后分频器设置为 6,最后为微控制器时钟提供 16MHz。

使用这个时钟,我将 OpenUSART 功能的 SPBRG 设置为 25 ,波特率为 9600 。

这是我的 USART 配置:

#pragma config PLLDIV = 6, CPUDIV = OSC4_PLL6, USBDIV = 2, FOSC = HSPLL_HS OpenUSART(USART_TX_INT_ON & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_LOW, 25);

它卡在 OpenUSART 功能上......

4

1 回答 1

1

对于 16MHz 微控制器时钟更改USART_BRGH_LOW, 25USART_BRGH_HIGH, 103导致9,615.38 波特 (9600 -0.2%)。为什么不用CPUDIV = OSC1_PLL2给你一个 48 MHz 的时钟呢?然后你会使用USART_BRGH_LOW, 77.

于 2015-01-06T22:15:07.020 回答