0

私がやろうとしているのは、UART から ASCII データを読み取るという単純なものです。NXP 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 が返らないことです。

それが役立つ場合、回路図の関連部分は次のとおりです。 ダイアグラム

私が試したこと

  1. GPSがデータを出力していることを確認しました
  2. ピンPTD2が実際に接続され、データを受信して​​いることを確認しました(オシロスコープのおかげです)
  3. ピン PTE22 を使用して UART データを送信し、UART オブジェクトに問題があるかどうかを確認します。データは正常に送信されました。
  4. GDB を使用したデバッグ。これはすぐにうさぎの穴になり、しばらくしてあきらめました。私が見つけたのは、 fsl_uart_hal.c で UART_SET_C3 を呼び出した後、コードがデバッガーで永久に待機することです (行 325 )
  5. 構成オブジェクトの変更 (parityMode の変更)。

私が知る限り、UARTデータの読み取りで見たすべての例/デモに従っています。誰かが何が起こっているのかについて何か考えを持っているなら、私はそれを聞きたい.

4

1 に答える 1