0

私は PIC32MX クリッカー (PIC32MX534F064H マイクロコントローラー) を使用して、UART 経由でデータを送信し、ボーレート 115200 で USB からシリアルへのコンバーターを使用して 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

以下は、GPS チップとの通信に使用するために PIC32MX795F512L で 9600 UART5 を構成する方法です。これは、115200 に置き換えるだけで同じである必要があり、動作するはずです。偽の FTDI USB<-> シリアル コンバーターを使用している場合に 9600 を試行しない場合、偽物は非常に気まぐれです。

    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 に答える