4469|7

111

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【GD32450I-EVAL】简易示波演示 [复制链接]

淘了一块便宜的函数发生器回来,通过电阻分压后测算电压。通过液晶屏显示。

本来弄了个前置放大电路板子,可我模电水平实在不行,弄来弄去弄不好,只能直接分压了。

此时使用的是PA4引脚,ADC0通道4

 

1-使用计时器每100ms进行一次连续转换

    timer_initpara.prescaler         = 9999;
    timer_initpara.period            = 999;
    timer_init(TIMER2,&timer_initpara);    
    timer_interrupt_enable(TIMER2, TIMER_INT_UP);
    timer_interrupt_flag_clear(TIMER2, TIMER_INT_FLAG_UP);
    // timer_interrupt_flag_clear(TIMER2, TIMER_INT_FLAG_CH1);
    // dbg_periph_enable(DBG_TIMER2_HOLD);
    nvic_irq_enable(TIMER2_IRQn, 1U, 0U);

    /* enable TIMER2 */
    timer_enable(TIMER2);

2-定时器中断服务函数

void TIMER2_IRQHandler(void)
{
    if(timer_interrupt_flag_get(TIMER2, TIMER_INT_FLAG_UP)==SET)
    {
        adc_special_function_config(ADC0, ADC_CONTINUOUS_MODE, ENABLE);
        adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);
        timer_interrupt_flag_clear(TIMER2, TIMER_INT_FLAG_UP);
    }
}

3-ADC每次测试完480个点(刚好屏幕跨度像素)停止转换

void ADC_IRQHandler(void)
{
    uint16_t i=0;
    char t_char[30] = "";
    static int s_counter=0;
    static uint16_t s_recorder[480];
    uint16_t *t_displaySize;
    
    if(adc_interrupt_flag_get(ADC0, ADC_INT_FLAG_EOC)==SET)
    {
        s_recorder[s_counter] = adc_regular_data_read(ADC0);
        adc_counter++;
        s_counter++;
        if(s_counter>=480){
            s_counter = 0;
            adc_special_function_config(ADC0, ADC_CONTINUOUS_MODE, DISABLE);
            t_displaySize = EXT_BUFFER0_ADDR;
            memset((void *)EXT_BUFFER0_ADDR, 0, LCD_WIDTH * LCD_HEIGHT * LCD_FB_BYTE_PER_PIXEL * 2);
            for (i = 0; i < 480; i++)
                t_displaySize[s_recorder[i]*272/0xFFF*480 + i] = 0xAAAA;
        }
        adc_interrupt_flag_clear(ADC0, ADC_INT_FLAG_EOC);
    }
}

4-其中,停止转换的时候将点写入到显示缓存

            for (i = 0; i < 480; i++)
                t_displaySize[s_recorder[i]*272/0xFFF*480 + i] = 0xAAAA;

 

 

调整频率时的显示效果:

此帖出自GD32 MCU论坛

最新回复

楼主,有QQ么加一下,有偿请教您问题   详情 回复 发表于 2020-11-6 16:11
点赞 关注
 

回复
举报

2057

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

做得不错,给力

此帖出自GD32 MCU论坛
 
 
 

回复

1万

帖子

2853

TA的资源

管理员

板凳
 

兆易GD32450I-EVAL

汇总贴:https://bbs.eeworld.com.cn/thread-1140981-1-1.html

此帖出自GD32 MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 

回复

7608

帖子

18

TA的资源

五彩晶圆(高级)

4
 

响应看起来挺快

此帖出自GD32 MCU论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

1942

帖子

2

TA的资源

版主

5
 

感觉还不错,就是屏幕的UI设计的不太美观哈,功能挺不错的,但是这个个示波器的频率应该不会太高,可以简单的测量一些频率较低的波形,不过能做到这里非常厉害啦~点个赞!!!

此帖出自GD32 MCU论坛

点评

其实一开始是想用 littlevgl 来显示,那就漂亮了,可是看着看着忽然发现用 littlevgl 的图标刷新率太感人了……那个刷新率做出来也没意义  详情 回复 发表于 2020-10-25 22:35
 
 
 

回复

111

帖子

0

TA的资源

一粒金砂(中级)

6
 
w494143467 发表于 2020-10-12 14:32 感觉还不错,就是屏幕的UI设计的不太美观哈,功能挺不错的,但是这个个示波器的频率应该不会太高,可以简单 ...

其实一开始是想用 littlevgl 来显示,那就漂亮了,可是看着看着忽然发现用 littlevgl 的图标刷新率太感人了……那个刷新率做出来也没意义

此帖出自GD32 MCU论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

7
 

楼主,有QQ么加一下,有偿请教您问题

此帖出自GD32 MCU论坛

点评

什么问题先直接说一下吧,能在论坛里说清楚就直接论坛里搞定了  详情 回复 发表于 2020-11-7 18:56
 
 
 

回复

111

帖子

0

TA的资源

一粒金砂(中级)

8
 
张少兵 发表于 2020-11-6 16:11 楼主,有QQ么加一下,有偿请教您问题

什么问题先直接说一下吧,能在论坛里说清楚就直接论坛里搞定了

此帖出自GD32 MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表