这段时间项目都在使用NXP的KE系列MCU, KE02和KE06以及KEA系列的ADC都有FIFO功能,不使用FIFO功能的话,在多路采集的话,ADC会频繁进中断,这样对MCU来说是负担,所以经常需要开启FIFO功能,这样在所有通道采集完后进一次中断。
而具体来说呢,不同系列像KE02和KE06在FIFO功能使用上有一些不同,主要是配置的寄存器有些区别,所以在写驱动时候需要特别注意。如在KE06上寄存器如下
而在KE02上
所以在驱动上要注意区分,官网的SDK自带的驱动为了通用使用宏来区分
如果自己来写这个驱动,如果只是对一种片子使用可以直接按照手册来配置,如果想做到通用,也可以参照SDK,甚至可以直接使用SDK,按照你自己的硬件来配置初始化,通道,时钟,是否使用FIFO,中断,转换模式等就可以使用了。在配置FIFO深度时候需要注意,如果是8级FIFO,深度就配置为7。Kinetis最大ADC的FIFO深度为8级,使用时候需要注意。跟FIFO配置相关的结构体可以参照SDK定义
现在NXP大部分的片子在SDK中都可以找到,而且SDK的编码风格也很不错,可以直接拿来用,但是要熟悉SDK的目录结构,这样可以快速搭建产品原型。SDK可以支持IAR,KEIL,KDS,CW等多种环境,还有多种中间件。
ADC采集的质量直接关系到一些算法的正确与否,所以ADC部分在软件设计时候要考虑周全。可以结合参考芯片手册和SDK的源码以及例程,做深入研究研究。从软硬件设计到采集到滤波到处理都要仔细。关系到系统的精度和稳定,以及算法的正确与否。有时候还需要所中滤波算法结合使用。
嵌入式程序猿提供多种芯片的Modbus, CAN J1939等协议栈开发,提供高质量的源码文件和设计文件。同时承接电机控制,制冷系统电控,通风电控等嵌入式项目设计,我们严格按照产品的开发流程输出,从需求到文档到代码到测试提供整套流程文档和培训,欢迎沟通合作。