打印
[方案相关]

ADC转换结果由DMA传输

[复制链接]
1478|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lesheng002|  楼主 | 2020-5-7 16:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
项目需要检测外部电压,低于4.5V,则认为关机了,用单通道ADC检测,结果由DMA传输到数组中,程序反复监4测这个检测结果,芯片选的是HC32L176,官网没有现成的例子可供参考,自己折腾几天都没有结果,请各位大亨帮忙提供个DEMO什么的,谢谢先

使用特权

评论回复
沙发
lesheng002|  楼主 | 2020-5-7 18:36 | 只看该作者
华大技术给我发了个DEMO,使用顺序扫描转换,我按照DEMO测试发现Start=1后只起动了一次转换,后面需手工启动,一点不好用

使用特权

评论回复
板凳
smartpower| | 2020-5-7 22:31 | 只看该作者
两种方法:  
1. 采用内置的电压比较器,对分压后的VCC与内置2.5V进行比较。
2. 采用内置的LVD,对分压后的VCC电压送到LVD的输入口进行检测。

使用特权

评论回复
地板
smartpower| | 2020-5-7 22:37 | 只看该作者
我学得第三种方法,更简单。不需要外部电路即可。VCC分压后的电压与DAC的输出电压进行比较,只需要读VC的比较结果就行了。




使用特权

评论回复
5
smartpower| | 2020-5-7 22:50 | 只看该作者
从下图来看,通用TIM可以实现ADC定时自动转换的啊,每次只需要读最结果寄存器就行了。


使用特权

评论回复
6
lesheng002|  楼主 | 2020-5-8 08:01 | 只看该作者
smartpower 发表于 2020-5-7 22:50
从下图来看,通用TIM可以实现ADC定时自动转换的啊,每次只需要读最结果寄存器就行了。

我测试过2个方式,1是单次连续转换,查询转换完成标志,读结果并判断,2是单次连续转换,结果由DMA传输到RAM中,不需要人工干预启动转换的过程,
测试结果发现,2种方式都会卡死,造成系统滴答中断函数都不会被执行,且后一种方式只第一次初始化执行了一次转换,后面就不执行了
真的用DMA方式会影响到MCU 的正常运行?
你提到的这个方式还没试过,试试看

使用特权

评论回复
7
liaotian001| | 2020-5-8 09:43 | 只看该作者
lesheng002 发表于 2020-5-8 08:01
我测试过2个方式,1是单次连续转换,查询转换完成标志,读结果并判断,2是单次连续转换,结果由DMA传输到 ...

跟我们FAE联系一下,看看哪里配置错误的问题。这个功能是很普通的功能,使用ADC+DMA采样,基本上每个客户都是用到的。

使用特权

评论回复
8
lesheng002|  楼主 | 2020-5-8 10:49 | 只看该作者
liaotian001 发表于 2020-5-8 09:43
跟我们FAE联系一下,看看哪里配置错误的问题。这个功能是很普通的功能,使用ADC+DMA采样,基本上每个客户 ...

贵公司的FAE有做个DEMO给我,ADC+DMA+TIM2, TIM2用于触发ADC转换,DMA用于ADC转换完成后将结果传输到RAM中,功能是实现了,但一启动ADC,碰到延时函数,系统就死了,而我的延时函数是通过系统滴答函数来实现的,

使用特权

评论回复
9
lesheng002|  楼主 | 2020-5-8 20:33 | 只看该作者
lesheng002 发表于 2020-5-8 10:49
贵公司的FAE有做个DEMO给我,ADC+DMA+TIM2, TIM2用于触发ADC转换,DMA用于ADC转换完成后将结果传输到RAM ...

问题就出现在延时函数,库函数中使用ADC必须先调用函数Bgr_BgrEnable()初始化,函数中有个延时delay10us,这个延时函数是华大官方写的延时函数,使用SysTick定时器完成,而我自己的延时也是借用SysTick定时器实现,这样当初始化ADC时就将我自己的SysTick定时器初始化给破坏了,因而我的延时就卡死了,其它公司库函数都没有用SysTick来做延时,习惯了就没想过有冲突。看来换个MCU问题还是不少

使用特权

评论回复
评论
martinhu 2020-5-12 17:57 回复TA
你可以把延时函数换了啊,用NOP循环什么的…… 
10
lesheng002|  楼主 | 2020-5-12 20:58 | 只看该作者
@martinhu 为什么贵公司不考虑用户会使用SysTick,而是要用户换这种延时函数,虽然可以解决,但这样做我觉得不合理

使用特权

评论回复
评论
martinhu 2020-5-13 15:54 回复TA
这个问题我回答不了 
11
aa642895350| | 2020-6-16 15:55 | 只看该作者
您好,请问ADC+DMA+TIM2的DEMO能发我一份参考吗?谢谢

使用特权

评论回复
12
liaotian001| | 2020-6-16 19:31 | 只看该作者
ADC 输入, LVD输入, VC输入,在HC32L13x以上系列, 同一个端口是复用ADC,LVD,VC等模拟电路的,联合使用很方便。
并且支持硬件自动触发DMA搬运数据,功耗更低,使用实时性更强。

使用特权

评论回复
13
lesheng002|  楼主 | 2020-7-4 16:10 | 只看该作者
aa642895350 发表于 2020-6-16 15:55
您好,请问ADC+DMA+TIM2的DEMO能发我一份参考吗?谢谢

这个DEMO还需要吗?

使用特权

评论回复
14
wangliuliu566| | 2020-11-13 10:49 | 只看该作者
lesheng002 发表于 2020-7-4 16:10
这个DEMO还需要吗?

能否在本帖共享一下? 谢谢

使用特权

评论回复
15
martinhu| | 2020-11-14 13:15 | 只看该作者
wangliuliu566 发表于 2020-11-13 10:49
能否在本帖共享一下? 谢谢

这个是之前楼主提到的样例demo。
hc32l19x_ddl_TIM2 Trig ADC DMA transfer_2.zip (5.39 MB)

看楼主之前在抱怨,systick延时与自己程序冲突就说MCU有问题,这么简单的延时函数可以自己改吧,难道身为程序员,非得全部做好了拿现成的?

使用特权

评论回复
16
lesheng002|  楼主 | 2020-12-14 22:28 | 只看该作者
martinhu 发表于 2020-11-14 13:15
这个是之前楼主提到的样例demo。

你们是做核心库函数的,本来就应该考虑到的,还要用户测试去发现,是想考验一下用户的能力?另外来讲,你改就改呗,还觉得我提出这么个问题有错了,真是怪了。

使用特权

评论回复
17
martinhu| | 2020-12-15 14:24 | 只看该作者
lesheng002 发表于 2020-12-14 22:28
你们是做核心库函数的,本来就应该考虑到的,还要用户测试去发现,是想考验一下用户的能力?另外来讲,你 ...

不好意思,延时函数不是我做的……

使用特权

评论回复
18
aoo| | 2020-12-16 10:15 | 只看该作者
千人QQ群:206032332

使用特权

评论回复
19
edyd| | 2020-12-20 16:24 | 只看该作者
延迟函数不要乱用

使用特权

评论回复
20
两只袜子| | 2020-12-21 09:01 | 只看该作者
延迟函数不可以乱用的啊

使用特权

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

本版积分规则

7

主题

89

帖子

0

粉丝