配置 PIC18f2455 以使用 RS232
Configure PIC18f2455 to use RS232
我将 PIC18f2455 的 USART 与 RS232 一起使用,但在配置时遇到了一些问题。
我使用的是 24 MHz Crystal 振荡器。
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 功能上...
对于 16MHz 的微控制器时钟,将 USART_BRGH_LOW, 25
更改为 USART_BRGH_HIGH, 103
,这将导致 9,615.38 baud (9600 -0.2%)。为什么不使用 CPUDIV = OSC1_PLL2
给你一个 48 MHz 的时钟?然后你会使用 USART_BRGH_LOW, 77
.
我将 PIC18f2455 的 USART 与 RS232 一起使用,但在配置时遇到了一些问题。
我使用的是 24 MHz Crystal 振荡器。 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 功能上...
对于 16MHz 的微控制器时钟,将 USART_BRGH_LOW, 25
更改为 USART_BRGH_HIGH, 103
,这将导致 9,615.38 baud (9600 -0.2%)。为什么不使用 CPUDIV = OSC1_PLL2
给你一个 48 MHz 的时钟?然后你会使用 USART_BRGH_LOW, 77
.