TI论坛
直播中

王晾其

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

ADC3101寄存器配置DOUT无输出是怎么回事?


  • 目前3个时钟都是正常,均为外部时钟,MCLK = 12.288M, BCLK = 3.08M,WCLK = 48k,输入为模拟信号,输出为I2S  ,   通过单片机的I2C接口配置ADC3101里的寄存器,I2C 读写ADC3101 寄存器都正常  ,DOUT就是没输出波形,请问能不能给个参考的例子 ,就实现一个简单的AD转换功能。让DOUT 能测试到输出波形。
    以下为寄存器配置:


回帖(2)

李建

2024-10-22 09:56:32
  是TLV320ADC3101-EVM 板吗?
举报

邹俩珍

2024-10-22 18:22:06
根据您提供的信息,您正在使用ADC3101进行AD转换,并且已经配置了相关的时钟和寄存器。但是,DOUT没有输出波形。为了解决这个问题,我们可以按照以下步骤进行排查和配置:

1. 确认硬件连接:首先,请确保ADC3101的硬件连接正确,包括电源、地、时钟、数据输入和输出等。

2. 检查寄存器配置:请检查您提供的寄存器配置是否正确。以下是一些建议的寄存器配置:

   - 控制寄存器(Control Register):0x00
     - 配置为I2S模式(位[7:6] = 01)
     - 配置为单声道模式(位[5:4] = 00)
     - 配置为16位数据宽度(位[3:2] = 00)
     - 配置为正常工作模式(位[1:0] = 00)

   - 时钟控制寄存器(Clock Control Register):0x01
     - 配置为外部时钟模式(位[7] = 0)
     - 配置为12.288MHz MCLK(位[6:0] = 0x0F)

   - 数据格式寄存器(Data Format Register):0x02
     - 配置为I2S格式(位[7] = 1)
     - 配置为左对齐(位[6] = 0)
     - 配置为16位数据宽度(位[5:4] = 00)

3. 检查输入信号:请确保输入信号的幅度和频率在ADC3101的允许范围内。

4. 检查I2C通信:请确保I2C通信正常,包括地址、读写操作等。

5. 检查输出信号:请使用示波器或逻辑分析仪检查DOUT引脚的输出信号,以确认是否有波形输出。

以下是一个简单的示例代码,用于配置ADC3101并读取AD转换结果:

```c
#include

#define ADC3101_ADDR 0x48 // ADC3101的I2C地址

void setup() {
  Wire.begin(); // 初始化I2C通信
  // 配置ADC3101寄存器
  writeRegister(0x00, 0x40); // 控制寄存器
  writeRegister(0x01, 0x0F); // 时钟控制寄存器
  writeRegister(0x02, 0x40); // 数据格式寄存器
}

void loop() {
  // 读取AD转换结果
  uint16_t data = readData();
  Serial.print("AD转换结果:");
  Serial.println(data);
  delay(1000); // 等待1秒
}

void writeRegister(uint8_t reg, uint8_t value) {
  Wire.beginTransmission(ADC3101_ADDR);
  Wire.write(reg);
  Wire.write(value);
  Wire.endTransmission();
}

uint16_t readData() {
  uint16_t data = 0;
  Wire.requestFrom(ADC3101_ADDR, 2);
  if (Wire.available() == 2) {
    data = Wire.read() << 8; // 读取高8位
    data |= Wire.read(); // 读取低8位
  }
  return data;
}
```

请尝试使用上述示例代码,并根据您的硬件连接和需求进行相应的修改。希望这些信息能帮助您解决问题。
举报

更多回帖

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