TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: IngRandall en 07 de Enero de 2017, 01:18:16
-
Hola amigos del foro, quisiera saber si es posible tener una velocidad mayor a la de 115200 por el uart de un PIC32, gracias.
-
La respuesta es: SI
Te lo dice el mismo PDF del modulo UART en sus tablas ( O usando la formula ). LLegando a un maximo de 2.5Mbaudios ( Cargando 0 ) con 40Mhz de clk de perifericos, Y sin poner BGRH a 1. Si usas BGRH en 1 llegarias a 10Mbaudios. Las entradas cambian cada 10ns aproximadamente. Lo cual para 10Mhz es suficiente que se estaria enfrentando es suficiente.
-
A ok... Ya vi pero toca aplicar ese codigo, sabes de algun programa como el hyperterminal que llegue a esa velocidad para probar
-
Siempre use Putty y ahi te permite escribir la velocidad, y ademas deberias tener un puerto serie dedicado y no utilizar un USB-TTL ya que sino estarias enfrentandote a los tiempos de USB y no lograrias tener el baudrate deseado.
-
Bueno, con el código que dejo a continuación pude llegar a los 460800bps.
UARTConfigure(UART2, UART_ENABLE_PINS_TX_RX_ONLY);
UARTSetFifoMode(UART2, UART_INTERRUPT_ON_TX_NOT_FULL | UART_INTERRUPT_ON_RX_NOT_EMPTY);
UARTSetLineControl(UART2, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1);
U2MODEbits.BRGH=0;
UARTSetDataRate(UART2, GetPeripheralClock2(), DESIRED_BAUDRATE);
UARTEnable(UART2, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));
// Configure UART2 RX Interrupt
INTEnable(INT_SOURCE_UART_RX(UART2), INT_ENABLED);
INTSetVectorPriority(INT_VECTOR_UART(UART2), INT_PRIORITY_LEVEL_4);
INTSetVectorSubPriority(INT_VECTOR_UART(UART2), INT_SUB_PRIORITY_LEVEL_0);
U2MODEbits.SIDL=0;
DESIRED_BAUDRATE es un unsigned long donde pongo el valor de baud rate.
#define GetPeripheralClock2() (GetSystemClock()/1)
#define GetSystemClock() (80000000ul)
Gracias por su ayuda.