0

我正在使用 PIC32MX Clicker(PIC32MX534F064H 微控制器)通过 UART 传输数据,并使用 USB 到串行转换器以 115200 的波特率在 PC 上接收数据。

当我尝试通过 PIC32 发送数据并在我的 PC 上读取时,我收到了数据,但数据不同。请参阅下面的代码片段。如果有人能建议我修改什么以使 uart 工作,那就太好了。谢谢

#define GetSystemClock()      (80000000ul)
#define GetPeripheralClock()  (GetSystemClock()/(1 << OSCCONbits.PBDIV))
#define GetInstructionClock() (GetSystemClock())

void initSerial(){
UARTConfigure(UART5,UART_ENABLE_PINS_TX_RX_ONLY);
 UARTSetFifoMode(UART5, UART_INTERRUPT_ON_TX_NOT_FULL
         | UART_INTERRUPT_ON_RX_NOT_EMPTY);
 UARTSetLineControl(UART5, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1);
UARTSetDataRate(UART5, GetPeripheralClock(), 115200);
UARTEnable(UART5, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));
}


void writeSerial(uint8_t c){
while(!UARTTransmitterIsReady(UART5));
UARTSendDataByte(UART5, c);
while(!UARTTransmissionHasCompleted(UART5));
}
4

1 回答 1

0

下面是我如何在 PIC32MX795F512L 上配置我的 9600 UART5 以用于与 GPS 芯片通信。这应该是一样的,只是用 115200 替换它应该可以工作。如果它不尝试 9600,因为您有一个假的 FTDI USB<-> 串行转换器,那么假的可能非常善变。

    UARTConfigure(UART5, UART_ENABLE_PINS_TX_RX_ONLY);
    UARTSetFifoMode(UART5, UART_INTERRUPT_ON_RX_NOT_EMPTY);
    UARTSetLineControl(UART5, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1);
    /* configPERIPHERAL_CLOCK_HZ = 40000000 */
    UARTSetDataRate(UART5, configPERIPHERAL_CLOCK_HZ, 9600);
    UARTEnable(UART5, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));
    INTSetVectorPriority(INT_VECTOR_UART(UART5), configKERNEL_INTERRUPT_PRIORITY + 1);
    INTSetVectorSubPriority(INT_VECTOR_UART(UART5), INT_SUB_PRIORITY_LEVEL_2);
    INTEnable(INT_SOURCE_UART_RX(UART5), INT_ENABLED);
于 2016-09-27T12:53:48.567 回答