2016-09-24 2 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