完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题: 用该芯片采集8路的ad信号,使用的是连续转换模式,每次ad转换完成进入中断函数,在中断里切换下个通道,依次采集各通道模拟量。但是当ad的采样率大于200Hz以上时,就会出现读取的数据错误,每两个通道采集过来的电压值一样,等于只采集了一半通道。
1.想知道为什么会出现这种情况?该怎么解决?另外如何实现快速的采集多路的AD信号? 2.如果利用DMA,能否通过配置寄存器自动切换输入通道,从而轮流采集各个ad输入通道的信号? |
|
相关推荐
2个回答
|
|
是否可以看下设置的采样转换速率,或许这个原因导致的
|
|
|
|
1. 造成这种情况的原因是可能由于中断处理程序的执行时间过长导致的。当采样率大于200Hz时,中断处理程序处理不完一个通道的转换就开始处理下一个通道的转换,导致采集过来的电压值一样。解决该问题的方法有以下几种:
-优化中断处理程序,尽量减少中断处理程序的执行时间,确保一个通道的转换完成后再开始下一个通道的转换。可以考虑使用快速嵌入式开发语言如汇编语言来编写中断处理程序,减少指令执行时间。 -增加采样间隔,降低采样率。适当降低采样率可以减少中断处理程序的负荷,避免数据错误。 实现快速采集多路AD信号的方法有: -使用DMA(Direct Memory Access)控制器,通过配置寄存器实现自动切换输入通道,轮流采集多个AD输入通道的信号。DMA控制器通过直接访问内存和外设的方式,减少了CPU的负载,可以提高采样速度。 -使用FIFO缓冲区,将采样的数据存储在缓冲区中,以减少对主存储器的访问次数,提高采样速率。 2. 利用DMA可以实现自动切换输入通道,从而轮流采集各个AD输入通道的信号。配置DMA控制器的源地址和目的地址为AD输入数据寄存器和存储数据的缓冲区地址,设置传输大小为每次采样数据大小。在传输完成后触发中断,可以在中断中进行数据处理或者切换下一个通道。通过这种方式可以实现快速的采集多路AD信号。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-运动追踪之编写程序
424 浏览 0 评论
855 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1662 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1260 浏览 0 评论
904 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11871 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 12:16 , Processed in 0.780401 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号