使用 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 协议接收的数据的主要内容,如果未能解决你的问题,请参考以下文章

SPH00000562发现结转数量少了90

C语言中的UART通信

sphinx SPH_MATCH_EXTENDED2 基本应用

如何在启动时检查麦克风访问权限?

UART 接收中断检查数据结束

0645-6.2.0-为什么我在CDH6上使用Spark2.4 Thrift失败了