6650|9

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

TIM1设置为60KHz触发ADC,怎么得到90KHz的结果? [复制链接]



代码见3楼附件
此帖出自stm32/stm8论坛

最新回复

阅~~~留印记 PS: LZ是马甲王子  详情 回复 发表于 2012-1-11 10:19
点赞 关注
 

回复
举报

92

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
通过示波器测试发现,这个60KHz是没问题的。但是通过ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;来触发ADC转换。ADC输出规则转换3个通道,输出到DMA,缓存大小为120字。DMA半满/全满中断打开。
结果应该是20Ksps每通道,但是得到的结果是30Ksps/通道。中断频率应该是1KHz成了1.5KHz。
ADCCLK=9MHz(72/8=9);
SAMPLE=55.5;
Fsps=9,000,000/(12.5+55.5)=132,325.94Hz,关了连续转换模式。
怎么转换实际速度大了1.5倍呢?
此帖出自stm32/stm8论坛
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这是ADC部分的完整代码

gcc_C_tmm800_adc.pdf (19.12 KB)

此帖出自stm32/stm8论坛
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
楼主,我看了看代码,没做实验,理论推测一下,发现一个问题

/* ADC1 configuration ------------------------------------------------------*/
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 3;
ADC_Init(ADC1, &ADC_InitStructure);

你看ADC_InitStructure.ADC_ScanConvMode = ENABLE;
这句话的意思是一个触发信号过来,ADC就连续把你的3个通道转换一下

不过看楼主的意图,似乎是希望一次触发信号,只转换1个通道,60KHz的触发信号,实现3个通道分别有20Ksps的采样率
我建议改成ADC_InitStructure.ADC_ScanConvMode = DISABLE;

楼主目前ADC时钟9MHz,一个通道采样加转换是12.5 + 55.5 = 68个时钟
3个就是68 * 3 = 204时钟,9 MHz/ 208 = 43 KHz,实际上你的60KHz的触发信号超过这个43 KHz
就是说你的每2个触发信号会丢掉一个,我估计这是造成你实际采样率变成30 Ksps的原因
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢LS的兄弟,不过计算下来,就算扫描模式下,一个触发引起一个扫描,也不该是采样率变大1.5倍。
9MHz/68 = 132KHz,如果你的分析成立,那么结果应该是至少2倍。就是说一个触发之后,转换2次成功,第三次被下一个触发中断。而且,通过对转换结果在PC上画波形图来看,并没有发生数据错位的情况。
所以,不应该出现你说的这种情况。
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

6
 
楼主可能没明白我的意思,一个触发信号会引起3个通道连续进行转换
我认为发生的情况可能是这样的:
第一个TIM1触发信号到达ADC,通道1转换,OK,DMA传输,然后自动开始通道2转换OK,DMA传输
接着是第三个通道转换,转换过程中第二个触发信号到达,由于三个通道都设置成规则组,因此是不会打断第三个通道的转换的,通道三继续转换,接着DMA,而TIM1的触发信号会丢失掉,但是数据不会错位。
直到第三个触发信号开始新的一轮转换,这个过程中第四个触发信号又丢掉
这样的结果就是60KHz的触发频率,实际上只有一半是有效的,结果变成每个通道都是30Ksps。
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
那我再试一下。
我的理解,关了扫描模式就是只处理一个通道了。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
11.3.8 Scan mode
This mode is used to scan a group of analog channels. Scan mode can be selected by setting the SCAN bit in the ADC_CR1 register. Once this bit is set, ADC scans all the channels selected in the ADC_SQRx registers (for regular channels) or in the ADC_JSQR (for injected channels). A single conversion is performed for each channel of the group. After each end of conversion the next channel of the group is converted automatically. If the CONT bit is set, conversion does not stop at the last selected group channel but continues again from the first selected group channel.
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
是我没仔细看资料,确实如Barboon所说。
一个触发是转换一组通道,而不是一个通道。
当然我上面需要实现的功能,不是应该关闭SacnMode,而是要把TIM的频率降下来。
此帖出自stm32/stm8论坛
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

10
 
阅~~~留印记

PS: LZ是马甲王子
此帖出自stm32/stm8论坛
 
个人签名~~~~~~
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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