【原创】详解Kinetis内部ADC转换速率
0赞前段时间有博友问到我Kinetis内部16位AD的转换速率的问题,虽然针对Kinetis内部的ADC模块我曾经写过从零入手系列,不过在那篇博客里的确对AD的转换速率没有过多的介绍,会让一些选型的攻城狮觉得不明朗。发现很多人选择Kinetis作为产品的控制器是看上了它自带的16位高精度高速ADC,的确MCU自带16为SAR型的AD真是很难得了(意法的STM32F4是12位的),因为∑-Δ型的做到16位的高精度很容易(但速度做不高),而用SAR型的做到内嵌的16位高精度AD真的很赞,说到这里不得不对飞思卡尔NB的半导体技术膜拜一下,难怪人家的片子贵啊,哎,不过还好Kinetis L系列开始走低端路线了,不到1刀啊,还是挺让人充满期待的,哈哈~
言归正传,在给出AD的转换速率之前先普及下知识,好多初手容易混淆AD模块的转换时钟和转换速率这两个概念,前者是AD模块的工作时钟(数字系统,少不了时钟)而后者则是由若干个转换时钟构成的,也就是说AD模块转换一次数据需要若干个阶段而每个阶段则花费一个或多个转换时钟的时间来完成。拿本篇的主角Kinetis来说,它的时钟是ADICLK(最高允许18MHz,不过在16位转换精度下建议这个时钟小于10MHz以保证转换的精度),而它的转换时间则通过以下公式来计算:
Conversion time = SFCAdder + AverageNum*(BCT + LSTAdder + HSCAdder)
而上面的每个参数都是通过ADC模块相应的寄存器来设置的,由若干个时钟组成,其中SFCAdder(即single or first continuous time adder,这个我虽然理解但是翻译不好,有英语好的博友欢迎下面留言解释一下),AverageNum(即硬件平均数,Kinetis自带的功能,搞过KinetisAD的都懂的),BCT(即Base Conversion time),LSTAdder(即Long sample time adder,长时间采样,通过设置寄存器可选),HSCAdder(即High Speed Conversion time,同样通过设置相应寄存器可选)。嘿嘿,这几个参数都解释了一遍,那下面就让我们看看这几个参数都包括了多少个时钟吧,上图了:
本篇既然主要内容是AD的转换速率,当然最好的效果是量化了,用事实说话,下面我截个图上来给大家瞧瞧Kinetis的AD到底转换速度能有多快,上图:
咳咳,还是没有收住写了这么多,目的就是让大家知其所以然,这种感觉是不是很爽,哈哈。这下就不会再有人问AD转换速率了吧,呵呵,当然如果有什么不对的地方还希望多多指正,另外如果想知道详细的转换时间而不想再拿起笔头一步步的算出来的话可以看看我以前写的那篇ADC计算小工具介绍了,移步到http://blog.chinaaet.com/detail/27778.html这里,即《【原创】飞思卡尔在线Kinetis ADC计算小工具》。
去烧壶水,呵呵,未完待续~