飞思卡尔的KL25单片机AD做的是很不错的,SAR型能做到16位。不过数据手册就写得不怎么样了,简直可以说是坑爹,很难看懂。有的描述让人难以理解,你指望在别的地方对不理解的地方会有其他角度的描述,结果你发现关于同一描述,他们坚定的采用了复制粘贴的办法!擦!
而且,我还发现了数据手册的错误。用户手册上给出了一个案列,AD工作在16bit单端模式下ADCK为1MHZ,但是数据手册上注明如果AD工作在16比特模式,ADCK必须至少2MHZ,你说这不是坑爹不是!我给官网发了邮件,他们打哈哈让我去社区搜帖子。
结果,我看了整整一天的时间,跳过了很多不重要的功能,才能写出AD采集代码。这玩意寄存器20多个,手册有50页,很复杂。
我要采集的是地震波,只需要1K的采样率即可,特别低,通道为ADC0_SE4b。
下面是初始化代码,全是配置寄存器,中间用到了飞思卡尔自己提供的自校准函数,老实说,自校准这一块我根本没看。本函数使用连续采样,用到了硬件平均功能,让采集的32点做个平均之后再保存到结果寄存器中,目的也是降低采样率。禁用中断,禁用DMA。
void init_ADC16(void){
// Turn on the ADC0 clock as well as the PDB clocks to test ADC triggered by PDB
SIM_SCGC6 |= (SIM_SCGC6_ADC0_MASK );
// SIM_SCGC6 |= SIM_SCGC6_PDB_MASK ; pdb
/