Autor Tema: Baud rate mayor a 115200 en PIC32  (Leído 2121 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Baud rate mayor a 115200 en PIC32
« 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.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Baud rate mayor a 115200 en PIC32
« Respuesta #1 en: 07 de Enero de 2017, 07:54:03 »
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.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re:Baud rate mayor a 115200 en PIC32
« Respuesta #2 en: 08 de Enero de 2017, 12:18:33 »
A ok... Ya vi pero toca aplicar ese codigo, sabes de algun programa como el hyperterminal que llegue a esa velocidad para probar

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Baud rate mayor a 115200 en PIC32
« Respuesta #3 en: 08 de Enero de 2017, 13:22:36 »
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.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re:Baud rate mayor a 115200 en PIC32
« Respuesta #4 en: 16 de Enero de 2017, 15:10:37 »
Bueno, con el código que dejo a continuación pude llegar a los 460800bps.

Código: [Seleccionar]
    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.


 

anything