2016-09-24 23 views
0

私はPIC32を介してデータを送信しようとすると、私はボーレート115200PIC32MXクリッカーUART問題

でシリアルコンバータにUSBを使用してPC上で同じようにUARTを介してデータを送受信するためPIC32MXクリッカー(PIC32MX534F064Hマイクロコントローラ)を使用しています私の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)); 
} 

答えて

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); 
+0

この方法で成功した場合は、アップしてください。ありがとう – blsmit5728