TI论坛
直播中

飞毛腿452

9年用户 996经验值
擅长:电源/新能源
私信 关注
[问答]

用TLC3574进行AD转换,无论输入怎样改变,输出数据不变化,怎么解决?


  • 我用TLC3574进行AD转换,按照技术手册中微处理器方式接线,硬件默认,模式0工作,CS启动,不知什么原因,无论输入怎样改变,输出数据不变化。特急!有没有合适程序我参考一下?

回帖(2)

陈浩

2025-2-7 15:03:54
建议你按照28页图11的时序查一下你的电路。注意
1. ~CS启动模式下,FS要一直为高。
2. 对照21页表1看一下选择通道的命令给对没有。测试的时候只测两个通道就行了,注意两个通道给不同的输入电压,然后看输出电压是否正确。
3. 用示波器抓一下EOC的波形,和~CS的波形对照一下,看看EOC的波形对不对。
举报

laisvl

2025-2-7 17:39:15
根据您的描述,您在使用TLC3574进行AD转换时遇到了输出数据不变化的问题。以下是一些建议和可能的解决方案:

1. 检查硬件连接:确保您的硬件连接正确,包括电源、地线、数据线、时钟线和控制线。检查是否有短路或断路的情况。

2. 检查输入信号:确保您的输入信号在TLC3574的允许范围内。如果输入信号超出范围,可能会导致输出数据不变化。

3. 检查CS信号:确保CS信号正确触发。CS信号应该在启动AD转换时变为低电平,然后在转换完成后变为高电平。

4. 检查时钟信号:确保时钟信号的频率和占空比符合TLC3574的要求。如果时钟信号不正确,可能会导致输出数据不变化。

5. 检查程序:检查您的程序是否正确初始化TLC3574,以及是否正确读取AD转换结果。以下是一段参考程序:

```c
#include

#define TLC3574_CS_PIN  PB0
#define TLC3574_CLK_PIN PB1
#define TLC3574_DIN_PIN PB2
#define TLC3574_DOUT_PIN PB3

void TLC3574_init() {
    DDRB |= (1 << TLC3574_CS_PIN) | (1 << TLC3574_CLK_PIN) | (1 << TLC3574_DIN_PIN);
    PORTB |= (1 << TLC3574_CS_PIN);
}

uint16_t TLC3574_read() {
    uint16_t result = 0;
    PORTB &= ~(1 << TLC3574_CS_PIN); // CS低电平,启动AD转换

    for (int i = 0; i < 16; i++) {
        PORTB |= (1 << TLC3574_CLK_PIN); // 时钟上升沿
        result |= (PIND & (1 << TLC3574_DOUT_PIN)) ? (1 << (15 - i)) : 0; // 读取数据
        PORTB &= ~(1 << TLC3574_CLK_PIN); // 时钟下降沿
    }

    PORTB |= (1 << TLC3574_CS_PIN); // CS高电平,完成AD转换
    return result;
}

int main() {
    TLC3574_init();
    while (1) {
        uint16_t adc_value = TLC3574_read();
        // 处理AD转换结果
    }
}
```

请根据您的实际硬件和开发环境进行相应的修改。希望这些建议能帮助您解决问题。
举报

更多回帖

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