[技术问答] 新唐M481芯片EADC采样会收到GPIO的强烈影响

[复制链接]
1635|10
 楼主| HanGuang001 发表于 2023-10-17 20:06 | 显示全部楼层 |阅读模式
本帖最后由 HanGuang001 于 2023-10-18 15:11 编辑

新唐M481通过PB9脚(EADC通道9)采样,AD采样外围接口为运放射极跟随器方式通过200欧姆电阻对地104电容后,送入PB9引脚进行采样,PB0~PB3设置为准双向口,读取外部ADC芯片数据问题:当PB0~PB3读取外部ADC芯片数据时,PB9信号干扰严重(有明显高低电瓶脉冲),当PB0~PB3状态不变(不读取外部ADC芯片数据)时,PB9输入信号基本是稳定的
还请路过各大神指点下怎么破呢,先行谢过!!!

PB0~PB3读取外部芯片数据时BP9采样通道

PB0~PB3读取外部芯片数据时BP9采样通道

PB0~PB3不读取外部芯片数据时BP9采样通道

PB0~PB3不读取外部芯片数据时BP9采样通道
电源.jpg
daichaodai 发表于 2023-10-17 23:33 来自手机 | 显示全部楼层
理论上不会这样的,看一下你的配置上是不是有问题。
jasontu 发表于 2023-10-18 10:52 | 显示全部楼层
可以检查下外部vref电源稳不稳。
 楼主| HanGuang001 发表于 2023-10-18 15:01 | 显示全部楼层
jasontu 发表于 2023-10-18 10:52
可以检查下外部vref电源稳不稳。

谢谢大神的回复  测过了 电源是很稳定的
 楼主| HanGuang001 发表于 2023-10-18 15:08 | 显示全部楼层
daichaodai 发表于 2023-10-17 23:33
理论上不会这样的,看一下你的配置上是不是有问题。

谢谢大神回复,配置是这样的,没查出配置的问题
   SYS->GPB_MFPH &= ~(SYS_GPB_MFPH_PB14MFP_Msk | SYS_GPB_MFPH_PB15MFP_Msk);
    SYS->GPB_MFPH |= (SYS_GPB_MFPH_PB14MFP_UART3_RXD | SYS_GPB_MFPH_PB15MFP_UART3_TXD);               
    /* Set I2C1 multi-function pins */
          SYS->GPC_MFPL &= ~(SYS_GPC_MFPL_PC4MFP_Msk | SYS_GPC_MFPL_PC5MFP_Msk);
          SYS->GPC_MFPL |= (SYS_GPC_MFPL_PC5MFP_I2C1_SCL | SYS_GPC_MFPL_PC4MFP_I2C1_SDA);
    /* I2C clock pin enable schmitt trigger */
    PC->SMTEN |= GPIO_SMTEN_SMTEN5_Msk;          //PC5
        /* Configure PC.4 as 开漏 mode  */
    GPIO_SetMode(PC, BIT4, GPIO_MODE_OPEN_DRAIN);
          //EADC0
          //单通道采集
    SYS->GPB_MFPH &= ~(SYS_GPB_MFPH_PB9MFP_Msk | SYS_GPB_MFPH_PB8MFP_Msk );              //| SYS_GPB_MFPH_PB10MFP_Msk
    SYS->GPB_MFPH |= (SYS_GPB_MFPH_PB9MFP_EADC0_CH9 | SYS_GPB_MFPH_PB8MFP_EADC0_CH8 );     
    SYS->GPB_MFPL &= ~(SYS_GPB_MFPL_PB0MFP_Msk | SYS_GPB_MFPL_PB1MFP_Msk|SYS_GPB_MFPL_PB2MFP_Msk | SYS_GPB_MFPL_PB3MFP_Msk|SYS_GPB_MFPL_PB4MFP_Msk | SYS_GPB_MFPL_PB5MFP_Msk);
    SYS->GPB_MFPL |= (SYS_GPB_MFPL_PB0MFP_GPIO | SYS_GPB_MFPL_PB1MFP_GPIO|SYS_GPB_MFPL_PB2MFP_GPIO | SYS_GPB_MFPL_PB3MFP_GPIO|SYS_GPB_MFPL_PB4MFP_GPIO | SYS_GPB_MFPL_PB5MFP_GPIO);       
                //避免对AD产生干扰
                GPIO_SetMode(PB, BIT10|BIT11, GPIO_MODE_OPEN_DRAIN);
                PB10=PB11=0;   
                GPIO_SetMode(PD, BIT0, GPIO_MODE_OPEN_DRAIN);//漏极开路 工作指示灯
                GPIO_SetMode(PD, BIT1|BIT2, GPIO_MODE_QUASI);//准双向口   压力开关
          GPIO_SetMode(PB, BIT0|BIT1|BIT2|BIT3|BIT4|BIT5, GPIO_MODE_QUASI);//准双向口  电子秤采样用准双向口
          GPIO_SetMode(PA, BIT0|BIT1|BIT2|BIT3|BIT4|BIT5|BIT6|BIT7|BIT8|BIT9|BIT10|BIT11|BIT12|BIT13|BIT14|BIT15, GPIO_MODE_OUTPUT);   //推挽输出
                /* Disable the GPB0 - GPB3 digital input path to avoid the leakage current. */
    GPIO_DISABLE_DIGITAL_PATH(PB, BIT6|BIT7| BIT8|BIT9|BIT10| BIT11);

                EADC_Open(EADC, EADC_CTL_DIFFEN_SINGLE_END);
          EADC_SetExtendSampleTime(EADC,0,0xFF);//Set ADC extend sample time
          EADC_SetExtendSampleTime(EADC,1,0xFF);//Set ADC extend sample time
    EADC_ConfigSampleModule(EADC, 0, EADC_ADINT0_TRIGGER, 9);  //|EADC_SOFTWARE_TRIGGER    EADC_ADINT0_TRIGGER
          EADC_ConfigSampleModule(EADC, 1, EADC_ADINT0_TRIGGER, 8);//模块转换触发源为EADC_ADINT0_TRIGGER
    EADC_CLR_INT_FLAG(EADC, EADC_STATUS2_ADIF0_Msk);       
         
    /* Enable the sample module 7 interrupt */
    EADC_ENABLE_INT(EADC, BIT0);//Enable sample module  A/D ADINT0 interrupt.  使能转换完成ADINT0 EOC中断  ADCIEN0=1
    EADC_ENABLE_SAMPLE_MODULE_INT(EADC, 0, BIT0);//Enable sample module 0 interrupt.ADC0的模块0中断使能
    NVIC_EnableIRQ(EADC00_IRQn);       
          EADC_START_CONV(EADC, BIT0);

配置是这样的
tpgf 发表于 2023-11-3 15:16 | 显示全部楼层
EADC和普通的ADC采样有什么区别吗
gwsan 发表于 2023-11-3 15:54 | 显示全部楼层
是不是得看看关于这个adc内部电路和io的关系啊
tfqi 发表于 2023-11-3 19:12 | 显示全部楼层
如果换一个adc通道进行采集 试试看是什么现象
zljiu 发表于 2023-11-3 19:44 | 显示全部楼层
二者之间的配置是不是有相互干扰的地方呢
aoyi 发表于 2023-11-3 20:02 | 显示全部楼层
会不会是因为供电芯片功率不够导致的呢
nawu 发表于 2023-11-3 20:33 | 显示全部楼层
在软件中保证二者不同时工作的话 看看还会不会出现这个现象
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

32

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部