TI论坛
直播中

李继明

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

DDC112U数据转换,转换结果一直是0,是什么原因导致的?


  • void Read_Data(void)
    {

    DxMIT_LOW(); //DxMIT_HIGH();
    delay_ms(1);



    while(Read_pin(1));


    DxMIT_HIGH(); // DxMIT_LOW();
    // DCLK_LOW();
    delay_ms(10);
    // __nop();
    while(1)
    {

    DCLK_HIGH();      

    delay_ms(5);

    ddc112u_data|= Read_E_pin(1);
    // delay_ms(10);
    DCLK_LOW();

    n++;


    // delay_us(5);
    ddc112u_data<<=1;

    delay_ms(5);


    if(n>=20)
    {
    DxMIT_LOW();// DxMIT_HIGH();
    ddc112u_data&=0x0fffff;
    ddc112u_data=0;
    n=0;
    break;

    }
    }
    f=!f;

    GPIO_WriteBit(GPIOE,GPIO_Pin_11,f);
    // GPIO_WriteBit(GPIOE,GPIO_Pin_10,f);



    if(count>=100 && f)
    {

    // m=!m;
    GPIO_WriteBit(GPIOE,GPIO_Pin_10,m=!m);
    count=0;

    }
    count++;


    使用GPIO模拟输出频率, DxMIT_LOW mcu引脚 通过与非门连到DDC112,这里输入高低电平是反的,                clk大概 500khz,conv 大概  5khz,输入4-20ma,   但是转换结果不对,一直是0,不知是什么原因

回帖(2)

夏日余晖

2024-11-20 11:07:18

您好,

您要测量

4-20mA电流吗?使用 DDC112应该不太合适,因为它是测量电量的ADC,一般用来测微弱电流的,测量单位是pC:


虽然测量量程与CF有关,但是测量这么大的电流需要很大的CF:


举报

石玉兰

2024-11-20 17:28:22
从您提供的代码片段来看,您正在尝试从DDC112U读取数据。代码中存在一些问题,可能导致转换结果一直是0。以下是一些可能的原因:

1. 时序问题:在读取数据时,需要确保正确的时序。您的代码中有一些延迟函数(如`delay_ms`),但它们可能不足以满足DDC112U的时序要求。您需要查阅DDC112U的数据手册,了解其时序要求,并相应地调整延迟函数。

2. 引脚配置问题:确保您已经正确配置了与DDC112U通信所需的引脚。例如,DxMIT、DCLK和Read_E_pin等引脚需要正确配置为输出或输入模式。

3. 读取数据位顺序问题:在读取数据时,您需要确保按照正确的顺序读取数据位。您的代码中使用了`ddc112u_data |= Read_E_pin(1);`来读取数据位,但您需要确保在读取每个数据位之间正确地切换DCLK引脚的状态。

4. 代码逻辑问题:您的代码中有一些注释掉的代码行,这可能会影响代码的逻辑。例如,您注释掉了`DxMIT_HIGH();`和`DCLK_LOW();`,这可能会影响数据的读取。

为了解决这些问题,您可以尝试以下步骤:

1. 查阅DDC112U的数据手册,了解其时序要求,并相应地调整延迟函数。

2. 确保您已经正确配置了与DDC112U通信所需的引脚。

3. 检查您的代码逻辑,确保按照正确的顺序读取数据位,并在读取每个数据位之间正确地切换DCLK引脚的状态。

4. 如果问题仍然存在,您可以尝试使用调试工具(如调试器或逻辑分析仪)来检查与DDC112U通信的引脚状态,以确定问题所在。

希望这些建议能帮助您解决问题。如果您需要更多帮助,请提供更多关于您的硬件和软件环境的信息。
举报

更多回帖

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