使用 UART 检查从 SPH0645 麦克风 I2S 协议接收的数据
Posted
技术标签:
【中文标题】使用 UART 检查从 SPH0645 麦克风 I2S 协议接收的数据【英文标题】:Using UART to check data receiving from SPH0645 Mic I2S protocol 【发布时间】:2019-08-05 03:00:00 【问题描述】:我正在尝试将这些 SPH0645 麦克风 (I2S) 连接到 STM32f767ZI 板。
我已正确接线,现在只是尝试通过将数据通过 UART 传递到我的电脑来测试麦克风。希望有人能指出我正确的方向。
我已尝试直接传递到 UART 传输。但是我认为我可能需要一些数据处理 - 我从 UART 接收,但有时只是 0 或其他时间只是乱码,这不是来自麦克风,因为即使我断开麦克风,它仍然会传输。
I2S 麦克风在 32 位帧中接收 24 位数据,最后 8 位是垃圾。协议是 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 */
我错过了什么?
【问题讨论】:
【参考方案1】:查看HAL_I2S_Receive(&hi2s1, &data, 1, 100)
的返回值
您是否确认 HAL_I2S_Receive
期望 uint32_t*
作为第二个参数?我认为它应该期待uint16_t*
使用HAL_UART_Transmit
,您希望通过 UART 传输数据。你不应该将data
作为参数传递给HAL_UART_Transmit
吗?
【讨论】:
对不起,我不小心显示了一个测试代码,该代码将测试 UART 传输是否工作。 - 它成功传输“存储”,我已经编辑了我的问题以反映我的错误。以上是关于使用 UART 检查从 SPH0645 麦克风 I2S 协议接收的数据的主要内容,如果未能解决你的问题,请参考以下文章