打印
[STM32F4]

【STM32F469I试用】+简易示波器(四)任意波形动态显示

[复制链接]
2446|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 294479435 于 2016-1-16 19:03 编辑

任意波形动态显示

再次感谢论坛的这次活动,让我有机会与大家一起分享我的小小作品。

简易示波器功能描述:

1.测量直流信号、交流信号的电压幅度;

2.测量交流信号的周期,并计算频率;

3.显示交流信号波形;

4.波形的放大和缩小;

5.···········

暂时就先实现以上几个简单的基本功能,STM32芯片是3.3V供电,AD采样也只有0-3.3V,前端没有做硬件电路,所以这些测量暂时都是0-3.3V;

目前实现功能:任意波形显示;
首先看一下效果:
1.采集IO引脚翻转:
2.采集DAC模拟输出锯齿波:
3.采集DAC模拟输出方波:
大致实现过程:
首先在之前贴基础上更改:【STM32F469I试用】+简易示波器(三)方波简单显示
a.ADC连续采集1024*6个数据并使能DMA存储在uhADCxConvertedValue数组中;
                HAL_ADC_Stop(&AdcHandle);
                for(i = 0; i < 1024*5; i++)
                {
                        y3 =400 - (80*3.3*uhADCxConvertedValue[i+512]/4095);
                }
                HAL_ADC_Start(&AdcHandle);
                flag = 1;
b.DMA完成后进入中断,关闭ADC采样并将数据复制到显示缓冲区的数组中,设定标志位置1,开启ADC继续采集(如果不暂停ADC,新采集的值会打乱完整的1024*6个数据,所以复制过程中暂停采集);
                 if(temp == 0)
                  {
                        for(i = 0; i<500;i++)
                        {
                                aPointsRe.y = y3;
                                //aPointsRe.x = x;
                        }
                }
                  else if(temp < 10)
                  {
                          for(i = 0; i<500;i++)
                        {
                                aPointsRe.y = y3[i+temp*500];
                                //aPointsRe.x = x;
                        }
                  }
                GUI_SetColor(GUI_GREEN);
                GUI_DrawPolyLine(aPointsRe,              /* Ö¸ÏòÒªÏÔʾµÄÕÛÏß */
                                                         GUI_COUNTOF(aPointsRe), /* µãÁбíÖÐÖ¸¶¨µÄµãÊýÁ¿ */
                                                         50,       /* Ô­µãµÄXλÖà */
                                                         40);
                  temp++;
                  if(temp == 10)
                  {
                          temp = 0;
                          flag = 0;
                  }
                  GUI_Delay(100);
c.回到主函数进行数据处理,由于每次显示的是500个数据,所以显示10次后在此读取ADC数据进行显示;



P60116-172859.jpg (43.44 KB )

P60116-172859.jpg

P60116-172925.jpg (38.54 KB )

P60116-172925.jpg
沙发
lin704932121| | 2016-1-16 19:19 | 只看该作者
做的很好,赞一个。

使用特权

评论回复
板凳
734774645| | 2016-1-17 13:16 | 只看该作者
这是非实时显示的吧?

使用特权

评论回复
地板
294479435|  楼主 | 2016-1-17 14:48 | 只看该作者
734774645 发表于 2016-1-17 13:16
这是非实时显示的吧?

怎么不是实时呢,只是采样频率还不能调

使用特权

评论回复
5
294479435|  楼主 | 2016-1-17 14:49 | 只看该作者
lin704932121 发表于 2016-1-16 19:19
做的很好,赞一个。

感谢支持,以后继续更新

使用特权

评论回复
6
294479435|  楼主 | 2016-1-17 14:54 | 只看该作者
734774645 发表于 2016-1-17 13:16
这是非实时显示的吧?

实时显示

使用特权

评论回复
评分
参与人数 1威望 +5 收起 理由
734774645 + 5 赞一个!
7
734774645| | 2016-1-17 16:17 | 只看该作者

真是太棒了,很不错,我也学习学习数字示波器的原理去

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

110

帖子

4

粉丝