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

    文章

    11123

    浏览量

    207905
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6081

    浏览量

    34941
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

    网关数据采集解决方案

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

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

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

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

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

    制造行业定制软件解决方案——工业信息采集平台

    ,缺少标准接口数据共享难度大,开放利用不够。 平台介绍 工业信息采集平台实现与各种工业设备(PLC、仪器仪表、传感器、机器人等等)连接,实现对现场的各种工业
    发表于 12-20 17:14

    数据采集网关:工业数据采集上云

    实现数据的整合、转换和分析。数据采集网关功能数据采集网关具备了强大的数据采集能力。它可以从各种数据源中
    的头像 发表于 12-12 16:46 620次阅读
    <b class='flag-5'>数据采集</b>网关:工业<b class='flag-5'>数据采集</b>上云

    工程监测数据采集需要哪些技术

    、变形等物理现象。 通信技术:监测数据需要通过通信技术传输到数据中心或者云端服务器,以便进行数据的存储、管理和分析。
    的头像 发表于 11-24 10:43 519次阅读
    工程监测<b class='flag-5'>数据采集</b>需要哪些<b class='flag-5'>技术</b>

    基于FPGA的高速数据采集系统该怎么设计?

    点击上方 蓝字 关注我们 目前,在数据采集系统的硬件设计方案中,有采用通用单片机和USB相结合的方案,也有采用DSP和USB相结合的方案,前
    的头像 发表于 10-06 14:55 1874次阅读
    基于FPGA的高速<b class='flag-5'>数据采集</b>系统该怎么设计?

    基于ARM与线性CCD的高速数据采集系统设计

    接口,它使电路工作在更加平稳、简洁而易丁控制,同时也提高了ARM的工作效率。为了提高通信速度,这里采用通用申行总线(USB)技术米与PC进行通信。ARM是用来控制主处理器的数据采集
    发表于 09-26 07:41

    信息技术是干什么?

    广播电子技术信息技术
    橙群微电子
    发布于 :2023年09月22日 09:17:48