TI论坛
直播中

杜喜喜

8年用户 1588经验值
私信 关注
[问答]

利用stm32f103控制TLC3578,返回的采样值不变化是怎么回事?


  • u16 TLC3578_Write_Data(u16 data)
    {
    u16 a;
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
    SPI2_CS_HIGH;
    delay_ms(1);
    SPI2_CS_LOW;
    a = SPI2_ReadWriteByte(data);
    delay_ms(1);
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
    SPI2_CS_HIGH;
    return a;
    }

                      

回帖(2)

李淑嘉

2024-11-27 16:39:11
对于TLC3578,您输入的信号是什么?输入的是变化的信号吗?
CFR寄存器您配置的是什么?
举报

杜喜喜

2024-11-28 09:09:39
从您提供的代码来看,您正在使用STM32F103微控制器通过SPI接口与TLC3578进行通信。如果返回的采样值不变化,可能存在以下几个问题:

1. 硬件连接问题:请检查您的硬件连接是否正确,包括SPI接口的MISO、MOSI、SCK和CS引脚是否正确连接到TLC3578。此外,确保TLC3578的电源和地线连接正确。

2. SPI配置问题:请检查您的SPI配置是否正确。您需要确保SPI的时钟频率、CPOL和CPHA设置与TLC3578的要求相匹配。您可以在STM32的初始化代码中检查这些设置。

3. TLC3578配置问题:请确保您已经正确配置了TLC3578的寄存器。您需要根据TLC3578的数据手册设置正确的寄存器值,以确保ADC正常工作。

4. 代码逻辑问题:您的代码中有两个`GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);`调用,这可能会导致问题。您应该只在初始化时调用一次这个函数,以禁用JTAG功能。此外,您的代码中没有对TLC3578的寄存器进行写入操作,这可能是导致采样值不变化的原因。

以下是修改后的代码示例:

```c
u16 TLC3578_Write_Data(u16 data) {
    u16 a;

    // 禁用JTAG功能
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

    // 拉高CS
    SPI2_CS_HIGH;
    delay_ms(1);

    // 拉低CS
    SPI2_CS_LOW;

    // 写入数据
    SPI2_ReadWriteByte(0x00); // 写入寄存器地址
    SPI2_ReadWriteByte(data); // 写入数据

    // 拉高CS
    delay_ms(1);
    SPI2_CS_HIGH;

    // 读取数据
    SPI2_CS_LOW;
    a = SPI2_ReadWriteByte(0x01); // 读取寄存器地址
    SPI2_ReadWriteByte(0x00); // 读取数据
    a = SPI2_ReadWriteByte(0x00); // 读取数据
    SPI2_CS_HIGH;

    return a;
}
```

请注意,您需要根据TLC3578的数据手册和您的硬件设计调整代码。希望这些建议能帮助您解决问题。
举报

更多回帖

×
20
完善资料,
赚取积分