TIwilliam hill官网
直播中

贺服窍

7年用户 1012经验值
私信 关注
[问答]

TLV320AIC23用IO模拟的,读不到数据是怎么回事?


  • 最近有个数字对讲机的项目,目前采用用STM32为主控MCU,TLC320AIC23做音频的采集与回放。问下在用这芯片的时候,I2S读写一定要严格按照设定的采样周期来吗。我用IO模拟的,但是读不到数据。希望能解答下或者提供实例代码。我的程序时MDK编的,见附件。

回帖(3)

李朝

2024-11-6 14:07:41
请严格按照芯片资料中的时序来。
你的系统运行的时候,请用示波器抓波形对比芯片资料查看是否正确。、
只要你的时序没问题,时钟没有超过我们规定的频率,是会读到数据的。
希望对你有帮助。
举报

夏日余晖

2024-11-6 14:08:50

你好:


首先确认下你的pin21和pin22的配置是否正确。

其次是AIC23需要I2C修改以下寄存器:


将寄存器值改为全0后,在测试下。


举报

远不及你

2024-11-6 18:13:08
根据您的描述,您在使用TLV320AIC23芯片进行音频采集和回放时遇到了问题。以下是一些建议和可能的解决方案:

1. 确保硬件连接正确:请检查您的STM32与TLV320AIC23之间的硬件连接是否正确。包括I2C、I2S和电源连接。

2. 检查I2C通信:确保您的I2C通信设置正确,包括时钟速率、地址等。您可以通过I2C扫描工具检查设备是否被正确识别。

3. 检查I2S通信:确保您的I2S通信设置正确,包括采样率、通道数等。您需要确保STM32和TLV320AIC23之间的I2S设置是一致的。

4. 检查代码:请检查您的代码,确保您正确地初始化了I2C和I2S接口,并正确地配置了TLV320AIC23的寄存器。以下是一段示例代码,供您参考:

```c
#include "stm32f4xx_hal.h"
#include "tlv320aic23.h"

I2C_HandleTypeDef hi2c1;
I2S_HandleTypeDef hi2s2;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_I2C1_Init(void);
static void MX_I2S2_Init(void);

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_I2C1_Init();
  MX_I2S2_Init();

  // 初始化TLV320AIC23
  if (AIC23_Init(&hi2c1) != 0)
  {
    Error_Handler();
  }

  // 音频采集和回放
  while (1)
  {
    // 读取音频数据
    uint16_t audio_data;
    HAL_I2S_Receive(&hi2s2, (uint8_t *)&audio_data, 1, HAL_MAX_DELAY);

    // 处理音频数据
    // ...

    // 发送音频数据
    HAL_I2S_Transmit(&hi2s2, (uint8_t *)&audio_data, 1, HAL_MAX_DELAY);
  }
}

void SystemClock_Config(void)
{
  // 配置系统时钟
}

static void MX_GPIO_Init(void)
{
  // 初始化GPIO
}

static void MX_I2C1_Init(void)
{
  // 初始化I2C1
}

static void MX_I2S2_Init(void)
{
  // 初始化I2S2
}
```

5. 调试:使用调试工具(如ST-LINK)逐步调试您的代码,检查I2C和I2S通信是否正常。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们为您提供更具体的帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分