TI论坛
直播中

陈伟

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

ads1232重复上电出现0x7fffff或0x800000,什么原因导致的?


  • void ADS1232_Init(void)
    {
    u8 i;

    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(
    RCC_APB2Periph_AFIO
    |RCC_APB2Periph_GPIOB
    |RCC_APB2Periph_GPIOC
    |RCC_APB2Periph_GPIOE
    , ENABLE);

    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关闭jtag,保留swd

    //ADS1232
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_SetBits(GPIOB,GPIO_Pin_5);
    GPIO_SetBits(GPIOB,GPIO_Pin_4 |GPIO_Pin_8);
    GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3 |GPIO_Pin_4|GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOE, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 |GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_Init(GPIOE, &GPIO_InitStructure);


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_SetBits(GPIOB,GPIO_Pin_0);

    //////////////////////////////////////////////////////////////////
    delay_ms(20);
    Res_1302;//拉低
    delay_ms(10);

    GPIO_WriteBit(GPIOB, GPIO_Pin_6, Bit_SET);
    GPIO_WriteBit(GPIOB, GPIO_Pin_7, Bit_SET);//设置增益

    RESET_CLK1 ;
    RESET_CLK2 ;
    RESET_CLK3 ;
    Set(1);
    Set(3);
    Set(5);
    delay_ms(10);

    Set_1302;//拉高


    for(i=0;i<26;i++)
    {
    SET_CLK1;
    SET_CLK2;
    SET_CLK3;
    delay_us(3);
    RESET_CLK1;
    RESET_CLK2;
    RESET_CLK3;
    }

    delay_ms(10);
    /////////////////////////////////
    Res_1302;//复位拉低
    delay_ms(10);

    GPIO_WriteBit(GPIOB, GPIO_Pin_6, Bit_SET);
    GPIO_WriteBit(GPIOB, GPIO_Pin_7, Bit_SET);//设置增益

    RESET_CLK1 ;
    RESET_CLK2 ;
    RESET_CLK3 ;
    Set(2);
    Set(4);
    Set(6);
    delay_ms(10);

    Set_1302;//复位拉高
    for(i=0;i<26;i++)
    {
    SET_CLK1;
    SET_CLK2;
    SET_CLK3;
    delay_us(3);
    RESET_CLK1;
    RESET_CLK2;
    RESET_CLK3;
    }
    delay_ms(10);
    }

    上面这段代码是初始化ads1232,没找到到底是程序上除了问题,还是电路设计上出了问题,看了网上有说吧外置晶振的两个电容去掉,试了也不行,重新换了晶振也不行。

回帖(2)

马龙

6 天前
典型的上电初始条件问题,  上电后加点延时避开信号不稳定 的阶段.  具体实际用示波器测量后确定吧
举报

张亮

6 天前
根据您提供的代码片段和问题描述,ADS1232重复上电出现0x7fffff或0x800000的原因可能有以下几点:

1. 初始化代码问题:您的初始化代码中有一些注释和未完成的部分,这可能导致ADS1232的初始化不正确。请确保您的初始化代码是完整的,并且正确配置了GPIO和RCC。

2. 硬件连接问题:请检查您的ADS1232模块与STM32之间的硬件连接是否正确。确保所有引脚都已正确连接,并且没有短路或断路的情况。

3. 电源问题:请检查您的电源是否稳定,以及ADS1232模块的供电是否正常。不稳定的电源可能导致模块无法正常工作。

4. ADS1232模块损坏:如果以上问题都排除了,那么可能是ADS1232模块本身存在问题。您可以尝试更换一个新的模块进行测试。

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

1. 检查您的初始化代码,确保所有配置都是正确的。您可以查阅ADS1232的数据手册,了解正确的初始化配置。

2. 检查硬件连接,确保所有引脚都已正确连接。

3. 检查电源,确保电源稳定且正常供电。

4. 如果以上步骤都无法解决问题,尝试更换一个新的ADS1232模块进行测试。

希望以上建议能帮助您解决问题。如果您还有其他问题,请随时提问。
举报

更多回帖

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