实现单片机的ADC模块的数据快速采集

[复制链接]
hanwe 发表于 2020-8-26 22:02 | 显示全部楼层

                DataBuf[2*i]  =ADRESH;
                DataBuf[2*i+1]=ADRESL;        

这两个寻址操作在8位机上就是个不在乎时间的做法
 楼主| kangzj 发表于 2020-8-26 22:12 | 显示全部楼层
关于20MHz 晶振是否起作用的问题,本diy 是带 usb 数据传输的。晶振一定是起作用了。  不过,我可以将晶振拔了,试试。
 楼主| kangzj 发表于 2020-8-26 22:16 | 显示全部楼层
我这个diy就是专用这个mcu 进行数据采集,其他事情由usb连的host去做。故mcu的 负担不会太重的。
chenho 发表于 2020-8-26 22:21 | 显示全部楼层
这两行代码很费时,也许可修改试一下。
stly 发表于 2020-8-26 22:32 | 显示全部楼层
看看这两行代码到底能耗多少时钟周期。
 楼主| kangzj 发表于 2020-8-26 22:36 | 显示全部楼层
我是初学者,如何用汇编指令得到的数据变为数组,还要学习。请老师们 赐教一些相关的代码?  
houcs 发表于 2020-8-26 22:42 | 显示全部楼层
采样时间的作用是让放大器稳定,电容充电,还考虑到温度的影响。
ousj 发表于 2020-8-26 22:45 | 显示全部楼层
转化时间是指在输入稳定,电容充电完成后,开始转化到转化完成的时间。
wangzsa 发表于 2020-8-26 22:48 | 显示全部楼层

假设你的外部晶振20M,没有倍频,那么Fosc = 20M, TAD = 1/(20M/16) = 0.8us .
采样保持时间如你配置的 8TAD = 6.4us;
转换时间 最小是11TAD = 8.8us;
6.4us+8.8us = 15.2us.
lium 发表于 2020-8-26 22:56 | 显示全部楼层
不应该差那么多的,检查一下你的时钟。
 楼主| kangzj 发表于 2020-8-26 23:01 | 显示全部楼层

好的,我明天去单位试一下,多谢各位大侠了哈        
CoolSilicon 发表于 2020-8-27 10:36 | 显示全部楼层
20Mhz, 0.5ms一个数据, 明显的是时钟不对嘛..
首先你检查系统时钟是多少, 其次, 看看ADC模块用了什么时钟,有无分频.
a511484095 发表于 2020-8-27 14:36 | 显示全部楼层
你这个ADGO完全没必要再加进去了,不然每次循环都要执行一次ADGO。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部