高速数据采集是系统实时处理能力的试金石。例如,实现100kSPS采样率的AD转换,系统必须在10μs内稳定、可靠地响应AD中断、读取AD数据。常规的WinCE或Linux嵌入式操作系统难以满足此需求,传统方案通常采用FPGA/CPLD直接控制AD芯片,缓存数据后发出中断请求,系统响应中断读取批量数据。这种方法实现复杂且成本高。
为此,本方案采用基于英创ESM7000工控主板的高效低成本高速AD采集方案。ESM7000搭载了NXP的异构多核处理器i.MX7D,集高性能的ARM Cortex-A7双核与运行速度240MHz、带硬件浮点运算的ARM Cortex-M4内核于一体。方案中,高性能Cortex-A7负责人机交互、数据处理、通讯管理等任务,实时AD数据采集则由Cortex-M4内核完成。
选用TI的ADS8588S作为AD芯片,它是一款单电源供电的16位、高速8通道同步AD采样芯片,具备集成的模拟前端,直接连接传感器,无需外部驱动电路,实现高性能、高精度及零延迟的AD转换,非常适合工业自动化应用。
ESM7000与ADS8588S的连接简单。CONV启动AD转换信号由ESM7000的PWM3提供,ADC_BUSY信号连接到GPIO25,作为转换完成的中断请求。配置ADS8588S时,仅需3条SPI信号线,ESM7000的SPI_MOSI则作为GPIO用于硬件复位信号。为了实现高速可靠响应,以上接口均由ESM7000的Cortex-M4内核管理。
ADS8588S SPI接口时钟最高为20MHz,读取8通道16位AD数据需要128个SPI时钟,最短耗时6.4μs。最快AD转换时间为3.9μs,结合图2中的读取时序,AD转换加上读取结果最少需10.3μs,不足以实现100kSPS的AD采集。但通过采用2次平均模式,AD转换时间在8.4μs~8.8μs之间,满足100kSPS的最大采样率要求。
ESM7000 Cortex-M4内核上运行FreeRTOS操作系统,实现了100kSPS AD数据采集的实际波形。通过直接利用ESM7000的PWM产生中断信号,并在中断服务程序中启动SPI读操作,ADC_BUSY信号线可省略。提高SPI操作效率,数据接收在SPI FIFO中断中完成,AD数据直接存入M4与A7共享的乒乓buffer。M4程序在采样到指定数量的AD数据后,通过RPmsg协议通知应用程序,应用程序读取AD数据。主要代码使用了FreeRTOS。
本方案利用i.MX7D的异构CPU架构,实现高速、低成本的AD采集。基于此方案,推出了ESM2001工控机,详情请参考链接:emtronix.com/product/em...。对于需要更高采样率的客户,通过简单的硬件改造,无需增加成本,也可实现200kSPS的高速AD采集。如有需求,请与英创联系。
更多关于ESM7000的实时应用介绍及软件开发说明,请访问链接:emtronix.com/article/ar...
emtronix.com/download/e...
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。