无法读取UART数据

时间:2018-04-14 20:08:25

标签: c uart nxp-microcontroller

我尝试做的很简单,从UART读取ASCII数据。我正在使用恩智浦kl27并且正在使用Kinetis 1.2.0。我有一个GPS(tx引脚)连接到PTD2引脚,并将该引脚配置为UART2_Rx。

PORT_HAL_SetMuxMode(PORTD,2u,kPortMuxAlt3); //UART2_Rx
PORT_HAL_SetMuxMode(PORTE,22u,kPortMuxAlt4); //UART2_Tx (unused)

UART对象的配置如下:

uart_user_config_t g_uartConfig= {
    .baudRate = 9600u,
    .parityMode = kUartParityDisabled,
    .stopBitCount = kUartOneStopBit,
    .bitCountPerChar = kUart8BitsPerChar,
};

最后,这是我用来尝试和接收UART数据的代码:

uart_state_t g_uartState;
UART_DRV_Init(2u, &g_uartState, &g_uartConfig);

uint8_t rxChar
// Uart #, return data, data count, timeout in miliseconds
UART_DRV_ReceiveDataBlocking(2u, &rxChar, 1u,1000u);

问题是UART_DRV_RecieveDataBlocking永远不会返回。

如果有帮助,这是原理图的相关部分: diagram

我尝试过什么

  1. 我已确认GPS正在输出数据
  2. 我已确认引脚PTD2实际上已连接并接收数据(感谢示波器)
  3. 使用引脚PTE22发送UART数据,以查看故障是否与UART对象有关。数据发送成功。
  4. 使用GDB进行调试。这很快就变成了一个兔子洞,过了一会儿我就放弃了。我发现的是在fsl_uart_hal.c(line 325)中调用UART_SET_C3之后代码在调试器中永远等待
  5. 更改配置对象(更改parityMode)。
  6. 我可以告诉我跟踪我读过UART数据的所有示例/演示。如果有人对正在发生的事情有任何想法,我很乐意听到它。

1 个答案:

答案 0 :(得分:0)

问题确实是软件。我的cmakeLists文件遗失了这个:

"${ProjDirPath}/KSDK_1.2.0/platform/drivers/src/uart/fsl_uart_irq.c"

此文件正确设置UART中断。