我正在尝试将这些 SPH0645 麦克风 (I2S) 连接到 STM32f767ZI 板。
我已正确接线,现在只是尝试通过 UART 将数据传递到我的电脑来测试麦克风。希望有人能指出我正确的方向。
我试过直接传递到 UART 传输。但是我认为我可能需要一些数据处理 - 我正在从 UART 接收,但有时只是 0 或其他时候只是乱码,这不是来自麦克风,因为即使我断开麦克风,它仍然在传输。
I2S 麦克风在 32 位帧中接收 24 位数据,最后 8 位是垃圾。该协议(protocol)是 Big Endian,我认为 HAL 库可以处理此问题,但我不完全确定。
uint16_t data;
while (1)
{
/* USER CODE END WHILE */
HAL_StatusTypeDef result= HAL_I2S_Receive(&hi2s1,&data,2,100);
HAL_UART_Transmit(&huart3,&data,2,100);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
我错过了什么?
最佳答案
检查
HAL_I2S_Receive(&hi2s1, &data, 1, 100)
的返回值您是否验证了
HAL_I2S_Receive
期望uint32_t*
作为第二个参数?我认为它应该期待uint16_t*
使用
HAL_UART_Transmit
您希望通过 UART 传输数据。您不应该将data
作为参数传递给HAL_UART_Transmit
吗?
关于c - 使用 UART 检查从 SPH0645 Mic I2S 协议(protocol)接收的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57351731/