请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
查看: 4669|回复: 44

求助!STC8G1K08芯片AD采样过程中有突然跳变的数值

[复制链接]

该用户从未签到

1

主题

25

回帖

79

积分

注册会员

积分
79
发表于 2023-1-30 16:49:27 | 显示全部楼层 |阅读模式
问题内容:我检测市电波形,通过电压互感器转换成低电压,然后通过芯片采集数据,大概需要每周期采集100次,然后我测试单通道采集AD值,因为市电是个正弦波,我只检测正点压,负电不考虑,然后就出现了一种情况,就是正弦波偶尔测出来的波形如下图1所示。突然变成0了,我用示波器测了输入端波形,正常的。


图1

图1

图1

AD设置如下:官方例程改的

void ADC_Init()
{
    ADC_InitTypeDef     ADC_InitStructure;      //结构定义

    // 1+2+11+10 = 24  24MHz/(2*24) = 500kHz   0.000002秒一次
    ADC_InitStructure.ADC_SMPduty   = 15;       //ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
    ADC_InitStructure.ADC_CsSetup   = 0;        //ADC 通道选择时间控制 0(默认),1
    ADC_InitStructure.ADC_CsHold    = 1;        //ADC 通道选择保持时间控制 0,1(默认),2,3
    ADC_InitStructure.ADC_Speed     = ADC_SPEED_2X1T;       //设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
    ADC_InitStructure.ADC_Power     = DISABLE;              //ADC功率允许/关闭    ENABLE,DISABLE
    ADC_InitStructure.ADC_AdjResult = ADC_RIGHT_JUSTIFIED;  //ADC结果调整,  ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
    ADC_InitStructure.ADC_Priority  = Priority_0;           //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
    ADC_InitStructure.ADC_Interrupt = DISABLE;          //中断允许  ENABLE,DISABLE
    ADC_Inilize(&ADC_InitStructure);                    //初始化

    // ADC电源打开1ms内不允许测量(有波动),如果测量,那么测量出来的结果也大概率是不准的
    ADC_PowerControl(ENABLE);                           //单独的ADC电源操作函数, ENABLE或DISABLE
}

没有中断,没有定时器,就1个串口1不断发送信号给PC
串口设置如下:只发送,不接收数据

    // 串口1初始化
    COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;     //模式,   UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
    COMx_InitStructure.UART_BRT_Use   = BRT_Timer1;         //选择波特率发生器, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2, 所以不用选择)
    COMx_InitStructure.UART_BaudRate  = baudrate;           //波特率,     110 ~ 115200
    COMx_InitStructure.UART_RxEnable  = ENABLE;             //接收允许,   ENABLE或DISABLE
    COMx_InitStructure.UART_Interrupt = ENABLE;             //中断允许,   ENABLE或DISABLE
    COMx_InitStructure.BaudRateDouble = DISABLE;            //波特率加倍, ENABLE或DISABLE
    COMx_InitStructure.UART_Priority  = Priority_0;         //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
    COMx_InitStructure.UART_P_SW      = UART1_SW_P30_P31;   //切换端口,   UART2_SW_P10_P11,UART2_SW_P46_P47
    UART_Configuration(UART1, &COMx_InitStructure);     //初始化串口2 USART1,USART2,USART3,USART4


采集AD单通道:

void GetADValue_Cycle(u16* array)
{
    unsigned char i = 0;
    for (i = 0; i<200; i++)
    {
        EA = 0;
        array = Get_ADCResult(ADChannel_Set);
        EA = 1;
        delay_10us(20);
    }
}

每隔100ms发送一次数据,就是上图的波形参数,然后有些波形正常,有些波形就如图1所示,有一个值跳变成0。我调节过设置参数,增大采样时间,但是都没有效果,甚至效果更差。
有人遇到过类似的问题吗?






回复 送花

使用道具 举报

该用户从未签到

538

主题

8729

回帖

1万

积分

管理员

积分
14201
发表于 2023-1-30 19:10:13 | 显示全部楼层
你把你原理图的PDF发上来,明天上班时间我请梁工学习下您的原理图

该用户从未签到

538

主题

8729

回帖

1万

积分

管理员

积分
14201
发表于 2023-1-30 19:13:59 | 显示全部楼层
题外话,负电压如何测量:
1.png
2.png

该用户从未签到

45

主题

2741

回帖

6126

积分

超级版主

积分
6126
发表于 2023-1-30 21:41:31 | 显示全部楼层
我用STC的ADC做波形显示,没有遇到过读到0的,很想拿到一个能读到0的样片。

该用户从未签到

1

主题

25

回帖

79

积分

注册会员

积分
79
 楼主| 发表于 2023-1-31 10:29:09 | 显示全部楼层
神农鼎 发表于 2023-1-30 19:10
你把你原理图的PDF发上来,明天上班时间我请梁工学习下您的原理图

就直接接了个10k的限流电阻接到IO上,电阻上的波形用示波器测量都是正常的,芯片检测的数值也是正常的,就是不知道是我程序设置的问题还是哪里导致的,偶尔会跳变,有时候没有变成0,但是也是突然变得很小。

该用户从未签到

1

主题

25

回帖

79

积分

注册会员

积分
79
 楼主| 发表于 2023-1-31 10:31:27 | 显示全部楼层
梁工 发表于 2023-1-30 21:41
我用STC的ADC做波形显示,没有遇到过读到0的,很想拿到一个能读到0的样片。 ...

感觉不像是芯片的问题,因为我换了个芯片也还是存在这样的现象。

该用户从未签到

1

主题

25

回帖

79

积分

注册会员

积分
79
 楼主| 发表于 2023-1-31 10:39:21 | 显示全部楼层
梁工 发表于 2023-1-30 21:41
我用STC的ADC做波形显示,没有遇到过读到0的,很想拿到一个能读到0的样片。 ...

程序我也是用官方例程里面的多通道ADC串口2发送的程序,把串口2发送改成串口1发送,其他的就没有了

该用户从未签到

538

主题

8729

回帖

1万

积分

管理员

积分
14201
发表于 2023-1-31 13:29:33 | 显示全部楼层
还是要看下你的原理图的PDF,  另外输入信号通道串的10K 电阻太大,改成100欧

该用户从未签到

1

主题

25

回帖

79

积分

注册会员

积分
79
 楼主| 发表于 2023-1-31 15:23:28 | 显示全部楼层
神农鼎 发表于 2023-1-31 13:29
还是要看下你的原理图的PDF,  另外输入信号通道串的10K 电阻太大,改成100欧

原理图其实很简单的,就是一个3.3V供电芯片,然后一个几个隔离用的互感器,输出的电压直接通过10k电阻接到IO上,没有上拉电阻,然后还有一个LED灯,没了。另外10K的电阻应该不影响测量吧。。。。除了这个跳变的现象,正压测量出来的结果倒是能接收的。负压直接为0。

该用户从未签到

538

主题

8729

回帖

1万

积分

管理员

积分
14201
发表于 2023-1-31 15:43:11 | 显示全部楼层
上原理图的PDF,否则我没法请梁工学习您有问题的系统,再给出参考解决方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-3-28 18:03 , Processed in 0.070405 second(s), 67 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表