0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术基于SPI接口的大容量通用数据采集方案

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-05 10:24 次阅读

数据采集是工业控制系统中的重要环节,较高的采样率对数据处理环节提出了高的要求。当数据量不大,采样率不高时,使用CPU进行传输处理是非常简单方便的;当遇到大的数据容量,高的采样率时,如果仍然使用CPU处理数据传输,将会带来巨大的CPU负载,难以满足高速大容量数据采集的要求。通常,在数据容量比较大,采样率较高的场合,使用DMA技术将数据直接传输到内存,不经过CPU管理,是比较通用的方案。

英创公司针对英创主板ESM335x已有的硬件资源,在linux-4.1.6操作系统环境下,提出了一种基于SPI接口的大容量通用数据采集方案,其物理连接如图1所示。这里用另一块ESM335x作为主设备,模拟数采装置,实际使用可以是任何支持SPI主模式的设备。使用时,连接SPI主从设备的公共地后,只需要连接ESM335x主板上对应SPI_SCLK、SPI_MOSI、SPI_CS0N的 3个管脚,见表1。

图1 SPI接口大容量通用数据采集连接图

表1 ESM335x工控主板SPI接口数采方案管脚说明

信号名称 CN2(管脚标号) 说明
GPIO29/SPI_MOSI F14 SPI数据信号,主设备输出,从设备输入
GPIO30/SPI_SCLK F15 SPI时钟信号,主设备输出,从设备输入
GPIO31/SPI_CS0N F16 SPI片选信号,低有效,主设备输出,从设备输入

该方案使用SPI作为传输协议,采用双buffer的DMA技术,能够达到1Msps(一个采样点数据位宽8-16位)。ESM335x工作在SPI从模式,能够接收的最高时钟为16MHz(最低不限制),即最高数据传输率为2MBytes/s。当DMA缓存buffer1装满数据后,会触发DMA中断,通知CPU将数据读出DMA缓存,然后继续将新传输进入的数据存储在buffer2;buffer2装满数据后,也产生DMA中断通知CPU取出数据,然后将新数据存储到buffer1,如此循环,如图2所示。当主机传输完成不再提供时钟信号后,ESM335x(从设备)通过定时器超时读出DMA缓存中剩余的数据。

图2 DMA双buffer示意图

图3 使用DMA技术的SPI数据采集CPU负载

如图3所示,使用此方案后,CPU负载率很低,此例中不到1%。用户使用时,需要按如下步骤进行操作:

1、加载SPI从模式驱动。在linux操作系统中,使用insmod spi-slave.ko命令,会创建设备节点/dev/spi-slave。

2、应用程序打开设备:

fd = open ( "/dev/spi-slave", O_RDWR, S_IRUSR | S_IWUSR );

3、设定传输参数

//configure info transfer to driver

structspi_slave_transfer

{

unsignedintclk; //驱动根据不同clk,设定不同长度的dma buffer,满足填满一个buffer的时间不超过10ms(双buffer)

unsignedintmode; //SPI mode: 0,1,2,3

unsignedintbits_per_word; //每个采样点的位数

};

structspi_slave_transfer transfer;

transfer.clk =16000000; //16M clk ---16KB every buffer

transfer.mode = 1;

transfer.bits_per_word = 16;

4、传入参数至内核,启动传输:

if(ioctl ( fd, SPI_SLAVE_START, &transfer )<0)

{

printf ( "START WRONG!!!!!!!!!!!!!!!!\n" );

exit ( 1 );

}

此时,主板上的SPI已经进入从模式,有数据传入时,将存入DMA缓存,存满一个buffer就通知CPU读出数据到CPU维护的一个内存区域(256个kfifo组成链表,kfifo大小与buffer相同,使用完后会覆盖第一个kfifo)。同时,当一次传输完成后,通过定时器读出剩余在DMA buffer中的数据。应用程序应及时使用read函数从CPU维护的区域读出数据,以免CPU维护太多内存。

count_in_byte = 0;

read_count = 0;

while(1)

{

FD_ZERO(&fdRead);

FD_SET(fd,&fdRead);

aTime.tv_sec = 2;

aTime.tv_usec = 0;

ret = select ( fd+1, &fdRead, NULL, NULL, &aTime );

if( ret<0 )

printf( "select, something wrong!\n " );

if( ret>0 )

{

if( FD_ISSET(fd, &fdRead) )

{

memset(read_buf,0,4096*4);

read_count = read(fd, read_buf, 4096*4);

if( read_count<0 )

{

printf ( "READ WRONG!!!!!!!!!!!!!!!!\n" );

exit ( 1 );

}

if(read_count){ //0 --- end-of-file not printf

count_in_byte += read_count;

printf("\nread_count = %d\ncount_in_byte = %d\n", read_count, count_in_byte);

}

//process data, here just print to console

if(read_count < 20){

for( i=0; i

{

printf ( "%02x ", read_buf[i] );

if(i%10 == 9)

printf ( "\n" );

}

printf("\n");

}

}

}

printf ( "remaining time %u.%u!\n",aTime.tv_sec, aTime.tv_usec );

}

5、完成传输,关闭SPI。

if(ioctl ( fd, SPI_SLAVE_STOP, &transfer )<0)

{

printf ( "STOP WRONG!!!!!!!!!!!!!!!!\n" );

exit ( 1 );

}

6、关闭设备文件

close ( fd );

当主设备前后两次传输的参数不一样时,从设备需要分两次调用open/close函数,按以上步骤进行操作。如有用户对这个方案感兴趣,可以联系我们,我们将提供驱动文件和完整的应用程序示例。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11298

    浏览量

    209389
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6085

    浏览量

    35307
收藏 人收藏

    评论

    相关推荐

    深控信息技术公司:不需要点表的工业网关数据采集方案

    深控信息技术公司的 “不需要点表的工业网关” 数据采集方案,颠覆了传统依赖点表进行数据采集的模式。传统方式往往需要大量的人力和时间去配置点表,且在面对复杂多变的工业环境和设备时,容易出
    的头像 发表于 12-16 15:29 130次阅读
    深控<b class='flag-5'>信息技术</b>公司:不需要点表的工业网关<b class='flag-5'>数据采集</b><b class='flag-5'>方案</b>

    数据网关与数据采集器的区别

    在现代信息技术和工业自动化领域,数据的收集、处理和传输是至关重要的。数据网关和数据采集器是实现这些功能的两个关键组件,它们在数据流动和管理中
    的头像 发表于 11-28 15:52 267次阅读

    数控机床CNC数据采集方案

    产品介绍及解决方案智控YC-8000CNC-WIFI-01-03数控机床数据采集网关能够实时采集机床的运行状态、加工过程的参数、设备维护信息
    的头像 发表于 11-11 09:51 248次阅读
    数控机床CNC<b class='flag-5'>数据采集</b><b class='flag-5'>方案</b>

    PLC数据采集解决方案

    问题,这些问题限制了企业生产力的提升和管理效能的增强。因此,打造一套高效率、高可靠性的PLC数据采集解决方案显得尤为关键。 二、解决方案概述 针对工业生产中的数据采集需求,我们提出一套基于PLC的
    的头像 发表于 10-31 15:58 218次阅读
    PLC<b class='flag-5'>数据采集解决方案</b>

    水利数据采集远程监控平台是什么

    水利数据采集远程监控平台是一种基于现代信息技术的管理系统,用于对水资源、水环境、水利工程等进行实时的数据采集和远程监控。这个平台通常包括硬件设备和软件系统两部分。 硬件设备主要包括传感器、数据
    的头像 发表于 07-22 15:36 357次阅读

    Modbus数据采集物联网平台可以采集什么设备?有什么功能?

    在当今工业物联网(IIoT)的浪潮中,Modbus协议无疑是连接传统工业设备与现代信息技术的重要桥梁,具备简单易用、通用性强、扩展性强等优势。对此,数之能提供Modbus数据采集物联网平台解决
    的头像 发表于 07-22 13:29 228次阅读
    Modbus<b class='flag-5'>数据采集</b>物联网平台可以<b class='flag-5'>采集</b>什么设备?有什么功能?

    数据采集网关与工业物联网平台一体化解决方案

    随着信息技术的进步,智能制造逐渐从概念走向现实。工业物联网通过连接设备、系统和人员,实现了生产过程的高度自动化和智能化。然而,在实际应用中,如何高效地采集和处理海量的数据成为了亟待解决的问题。这就需要一种可靠且高效的
    的头像 发表于 07-14 10:42 377次阅读
    <b class='flag-5'>数据采集</b>网关与工业物联网平台一体化解决<b class='flag-5'>方案</b>

    NI数据采集板卡如何连接使用?

    和控制。   1. 了解数据采集板卡: 首先,需要了解所使用的NI数据采集板卡的型号和规格。NI提供了多种型号的数据采集板卡,具有不同的输入通道数、采样率、接口类型等特性。在选择和使用
    的头像 发表于 07-11 10:05 920次阅读

    信捷PLC数据采集监控系统解决方案

    印刷、食品饮料等行业得到广泛使用。 对此,物通博联提供接入信捷PLC全系列的数据采集监控系统解决方案。该方案的核心在于其高度集成的数据采集网关,它能够接入PLC实现对设备状态
    的头像 发表于 06-25 13:51 486次阅读
    信捷PLC<b class='flag-5'>数据采集</b>监控系统解决<b class='flag-5'>方案</b>

    工控数据采集平台是什么?

    各种信息,平台通过对这些数据的管理,帮助企业实现生产过程的优化、设备维护、质量控制以及能源管理等多种功能。   工控数据采集平台的主要功能和特点包括: 1. 数据采集:支持多种通信协议
    的头像 发表于 06-14 15:29 412次阅读

    数据采集网关的功能和应用场景

    随着信息技术的飞速发展,物联网系统在各行业的应用越来越广泛,数据采集网关作为物联网系统中的重要组成部分,发挥着至关重要的作用。本文将详细介绍数据采集网关的功能及应用场景,以便读者更好地理解其在物联网
    的头像 发表于 06-13 15:22 740次阅读
    <b class='flag-5'>数据采集</b>网关的功能和应用场景

    数据采集边缘网关解决企业数据采集痛点的关键

    随着信息技术的快速发展,企业对于数据采集和处理的需求日益增长。然而,传统的数据采集方式往往面临着数据量大、传输延迟、安全性不足等问题,给企业的运营和管理带来了诸多挑战。在这样的背景下,
    的头像 发表于 04-07 13:56 385次阅读

    网关数据采集解决方案

    随着物联网技术的快速发展,数据采集已成为企业运营、管理和决策的重要支撑。网关作为连接不同网络的关键设备,其在数据采集过程中发挥着至关重要的作用。本文将详细介绍一种网关数据采集解决方案
    的头像 发表于 03-08 16:05 617次阅读
    网关<b class='flag-5'>数据采集解决方案</b>

    工业级数据采集通用网关在车间数据采集的应用-天拓四方分享

    数据采集网关是至关重要的。 工业级数据采集通用网关具备数据采集、处理、传输功能的设备,可连接多种工业现场设备,如PLC、传感器、执行器等,实现数据
    的头像 发表于 01-30 16:15 395次阅读

    基于物通博联工业数据采集网关的工厂数据采集方案

    随着工业互联网技术的不断发展,工厂生产过程中的数据采集和管理变得越来越重要。然而,由于工厂现场设备众多、种类繁多,数据采集和管理面临着很多挑战,如设备接口不统一、
    的头像 发表于 01-26 15:14 470次阅读
    基于物通博联工业<b class='flag-5'>数据采集</b>网关的工厂<b class='flag-5'>数据采集</b><b class='flag-5'>方案</b>