私がやろうとしているのは、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 が返らないことです。
私が試したこと
- GPSがデータを出力していることを確認しました
- ピンPTD2が実際に接続され、データを受信していることを確認しました(オシロスコープのおかげです)
- ピン PTE22 を使用して UART データを送信し、UART オブジェクトに問題があるかどうかを確認します。データは正常に送信されました。
- GDB を使用したデバッグ。これはすぐにうさぎの穴になり、しばらくしてあきらめました。私が見つけたのは、 fsl_uart_hal.c で UART_SET_C3 を呼び出した後、コードがデバッガーで永久に待機することです (行 325 )
- 構成オブジェクトの変更 (parityMode の変更)。
私が知る限り、UARTデータの読み取りで見たすべての例/デモに従っています。誰かが何が起こっているのかについて何か考えを持っているなら、私はそれを聞きたい.