查看: 4312|回复: 8

[已解决] MKE02芯片AD功能完成一次AD转换时间问题(已解决)

[复制链接]

该用户从未签到

5

主题

32

帖子

0

注册会员

Rank: 2

积分
99
最后登录
1970-1-1
发表于 2014-6-23 16:26:11 | 显示全部楼层 |阅读模式
我在测试MKE02芯片的AD一次采样时间时,发现跟理论的不符合,怎样编才能实现AD采样时间最短,并且保证12bit采样,我是按照官网的函数配置调用的,理论计算23ADCK cycles+5 bus clock cycles=28cycles,我配置AD时钟为20M未分频,应该为50ns*28=1.4us,但是实际测得时间为5us?不知道为何?难道AD采样其他地方还使用了时间吗?采用官网ad API接口函数求大神指点
1.jpg
我知道答案 目前已有7人回答
$T[~4UW7@40CBB(OKSYO}BU.jpg
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-6-24 14:34:41 | 显示全部楼层

RE:MKE02芯片AD功能完成一次AD转换时间问题

楼主你好,
你的ADICLK=0X00,ADLSMP=0是吗?
不知道你的AD转换时间是怎么测试的,是否准确呢?
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

32

帖子

0

注册会员

Rank: 2

积分
99
最后登录
1970-1-1
 楼主| 发表于 2014-6-24 17:32:20 | 显示全部楼层

回复:MKE02芯片AD功能完成一次AD转换时间问题

回复第 2 楼 于2014-06-24 14:34:41发表:
楼主你好,
你的ADICLK=0X00,ADLSMP=0是吗?
不知道你的AD转换时间是怎么测试的,是否准确呢? 

是滴,配置AD时钟为bus 时钟20M,测试方法是多次读取AD,即多次调用函数为
 ADC_PollRead(ADC,ADC_CHANNEL_AD3 ) ;取平均,计算时间不算太精确,本来想有个定时器来的,当时没有配置,最后采用比较简单方法进行不算精确测量,当读取AD前,某个IO口输出高电平,多次读取AD后,IO口置低,示波器测试,当然也减去了IO开关时间,粗测,不算精确。谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-6-25 09:38:06 | 显示全部楼层

回复:MKE02芯片AD功能完成一次AD转换时间问题

回复第 3 楼 于2014-06-24 17:32:20发表:
回复第 2 楼 于2014-06-24 14:34:41发表:
楼主你好,
你的ADICLK=0X00,ADLSMP=0是吗?
不知道你的AD转换时间是怎么测试的,是否准确呢? 

是滴,配置AD时钟为bus 时钟20M,测试方法是多次读取AD,即多次调用函数为
 ADC_PollRead(ADC,ADC_CHANNEL_AD3 ) ;取平均,计算时间不算太精确,本来想有个定时器来的,当时没有配置,最后采用比较简单方法进行不算精确测量,当读取AD前,某个IO口输出高电平,多次读取AD后,IO口置低,示波器测试,当然也减去了IO开关时间,粗测,不算精确。谢谢
 

这么测肯定不准的,因为GPIO输出也是有延时的,而且如果你查看汇编你会发现有好多的取值之类的代码,那些代码每一条都占用一定机器周期,另外,你调用函数,有一些函数的进入,返回都是暂用机器周期的,加起来时间也不小了,因为你的主频就是20M,一个机器周期也就0.05us,这样想下多条汇编指令肯定会暂用好多的时间,这个道理就和你问我单周期乘法指令测试是一样的,最好用systick测试,否则这样时间说明不了什么问题。
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

32

帖子

0

注册会员

Rank: 2

积分
99
最后登录
1970-1-1
 楼主| 发表于 2014-6-25 09:44:24 | 显示全部楼层

回复:MKE02芯片AD功能完成一次AD转换时间问题

回复第 4 楼 于2014-06-25 09:38:06发表:
回复第 3 楼 于2014-06-24 17:32:20发表:
回复第 2 楼 于2014-06-24 14:34:41发表:
楼主你好,
你的ADICLK=0X00,ADLSMP=0是吗?
不知道你的AD转换时间是怎么测试的,是否准确呢? 

是滴,配置AD时钟为bus 时钟20M,测试方法是多次读取AD,即多次调用函数为
 ADC_PollRead(ADC,ADC_CHANNEL_AD3 ) ;取平均,计算时间不算太精确,本来想有个定时器来的,当时没有配置,最后采用比较简单方法进行不算精确测量,当读取AD前,某个IO口输出高电平,多次读取AD后,IO口置低,示波器测试,当然也减去了IO开关时间,粗测,不算精确。谢谢
 

这么测肯定不准的,因为GPIO输出也是有延时的,而且如果你查看汇编你会发现有好多的取值之类的代码,那些代码每一条都占用一定机器周期,另外,你调用函数,有一些函数的进入,返回都是暂用机器周期的,加起来时间也不小了,因为你的主频就是20M,一个机器周期也就0.05us,这样想下多条汇编指令肯定会暂用好多的时间,这个道理就和你问我单周期乘法指令测试是一样的,最好用systick测试,否则这样时间说明不了什么问题。
 
 
好滴,谢谢大神,我测试后,再重新看看,多谢
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-6-25 09:50:11 | 显示全部楼层

RE:MKE02芯片AD功能完成一次AD转换时间问题

不客气,如果测试后还有问题,欢迎继续跟帖讨论。
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

354

帖子

0

高级会员

Rank: 4

积分
693
最后登录
1970-1-1
发表于 2014-6-26 14:00:04 | 显示全部楼层

回复:MKE02芯片AD功能完成一次AD转换时间问题

楼主可以看下这篇博客:  详解Kinetis内部ADC转换速率 
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

32

帖子

0

注册会员

Rank: 2

积分
99
最后登录
1970-1-1
 楼主| 发表于 2014-6-27 10:05:03 | 显示全部楼层

RE:MKE02芯片AD功能完成一次AD转换时间问题(已解决)

版主回答很细致太感谢了
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-6-27 10:14:01 | 显示全部楼层

回复:MKE02芯片AD功能完成一次AD转换时间问题

回复第 8 楼 于2014-06-27 10:05:03发表:
版主回答很细致太感谢了 

不客气,的确关于测试代码执行时间这块还是有比较多的人在问,回头有空,我会做个测试程序作为经验分享,这样就更能方便大家了。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 08:07 , Processed in 0.107324 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表