本发明专利技术公开了一种SPI系统自动读取数据的控制方法及SPI系统,该方法包括以下步骤:S1:SPI系统判断SPI总使能位开启且配置接收数据总量符合要求,则进行数据读取;S2:SPI系统往TX FIFO里填充数据,来将数据读取到RX FIFO中,并记录已接收数据总量;S3:SPI系统比较已接收数据总量和配置接收数据总量,来判断继续执行步骤S2还是结束工作。该方法通过SPI系统硬件往TX FIFO中填充数据,CPU只需要响应RX FIFO中断,搬走数据即可,不需要再往TX FIFO中填充数据,减少了CPU负担;根据已接收数据总量和配置接收数据总量就可以持续不断读取数据,CPU只需要响应RX FIFO中断,减少CPU占用率。减少CPU占用率。减少CPU占用率。
【技术实现步骤摘要】
SPI系统自动读取数据的控制方法及SPI系统
[0001]本专利技术具体涉及一种SPI系统自动读取数据的控制方法及SPI系统。
技术介绍
[0002]SPI协议作为一种应用广泛的外设接口协议,应用于读取Flash器件数据、陀螺仪装置数据、主从SPI芯片间交换数据等。其中,SPI系统读取Flash器件数据相对于其他的应用场景来说,其读取的数据量是十分庞大的。
[0003]传统的大数据量读取方法是,cpu一开始填满TX FIFO,此后当TX FIFO的水位触发中断起来之后,cpu不仅要及时搬运走RX FIFO的数据,且cpu判断要读取的数据还未全部读取完成时,cpu还要持续填充数据进入TX FIFO触发SPI控制器读取数据。该方法的缺点就是cpu在SPI读取大批量数据过程中需要不断响应SPI中断、填充TX FIFO来启动SPI接收数据,损失了cpu的效率。
技术实现思路
[0004]为解决上述问题,本专利技术提供了SPI系统自动读取数据的控制方法及SPI系统,只需要在一开始配置阶段配置好要读取的数据量的大小,在未读取完规定的数据量之前,SPI系统会一直读取数据,自动化高;并且设立数据保护机制,当cpu忙碌无法及时取走RX FIFO数据造成RX FIFO被写满时,自动暂停自动读过程,等待cpu空闲取走数据之后,再次自动开启自动读,防止读取过程中有效数据丢失。本专利技术的具体技术方案如下:一种SPI系统自动读取数据的控制方法,该方法包括以下步骤:S1:SPI系统判断SPI总使能位开启且配置接收数据总量符合要求,则进行数据读取;S2:SPI系统往TX FIFO里填充数据,来将数据读取到RX FIFO中,并记录已接收数据总量;S3:SPI系统比较已接收数据总量和配置接收数据总量,来判断继续执行步骤S2还是结束工作。该方法通过SPI系统硬件自动往TX FIFO中填充数据,CPU只需要响应RX FIFO中断,搬走数据即可,不需要再往TX FIFO中填充数据,减少了CPU负担;SPI系统会判断已接收数据总量和配置接收数据总量关系,持续不断读取数据,CPU只需要响应RX FIFO中断,减少CPU占用率。
[0005]进一步地,步骤S1中,SPI系统在读取数据前,会预先配置接收RX FIFO水位中断触发值和配置接收数据总量。可以根据实际情况来设置RX FIFO水位中断触发值和配置接收数据总量,灵活性高。
[0006]进一步地,步骤S1中,配置接收数据总量符合要求为:配置接收数据总量不为零。
[0007]进一步地,步骤S2中,SPI系统自动往TX FIFO里填充数据后,发出一组时钟信号,使SPI系统将数据读取到RX FIFO。
[0008]进一步地,SPI系统每读取设定容量的数据到RX FIFO中后,会产生RX FIFO水位触发中断,通知CPU搬运RX FIFO中的数据。
[0009]进一步地,步骤S2中,SPI系统在读取数据后,会判断RX FIFO中的数据是否已满,若RX FIFO中的数据已满,则触发保护机制。
[0010]进一步地,所述保护机制包括以下步骤:SPI系统暂停自动读取功能并进入等待状态,直至RX FIFO中的数据被CPU搬运后,使RX FIFO处于非满状态,再次执行步骤S2。在读取大批量数据过程中,若CPU处于忙碌状态而无法及时取走接收数据时,自动暂停SPI系统,等待CPU取走数据之后再次启动SPI系统,避免CPU忙碌无法及时读走数据,造成RX FIFO被写爆从而数据丢失。
[0011]进一步地,步骤S2中,SPI系统记录已接收数据总量包括以下步骤:SPI系统每接收一次数据,已接收数据总量则加一。
[0012]进一步地,步骤S3中,若已接收数据总量小于配置接收数据总量,则SPI系统再次执行步骤S2;若已接收数据总量等于配置接收数据总量,则SPI系统结束工作。
[0013]一种SPI系统,该SPI系统执行上述的SPI系统自动读取数据的控制方法,所述SPI系统包括通信连接的SPI控制器和CPU,所述SPI控制器包括RX FIFO和TX FIFO,所述RX FIFO用于存放读取到的数据,所述TX FIFO用于存放发送的数据,所述CPU用于搬运RX FIFO中的数据。该SPI系统以硬件自动填充的方式,触发SPI控制器收取数据,减少了CPU负担;设立数据保护机制,当RX FIFO满时,暂停SPI系统,进入等待状态,避免CPU忙碌无法及时读走数据,造成RX FIFO被写爆从而数据丢失。
附图说明
[0014]图1为本专利技术一种实施例所述的SPI系统自动读取数据的控制方法的流程图;图2为本专利技术一种实施例所述的SPI系统自动读取数据效果图;图3为本专利技术一种实施例所述的SPI系统数据读取保护机制运行效果图。
具体实施方式
[0015]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行详细描述。应当理解,下面所描述的具体实施例仅用于解释本专利技术,并不用于限定本专利技术。
[0016]SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。MISO
–ꢀ
Master Input Slave Output,主设备数据输入,从设备数据输出;MOSI
–ꢀ
Master Output Slave Input,主设备数据输出,从设备数据输入;SCLK
ꢀ–ꢀ
Serial Clock,时钟信号,由主设备产生;CS
ꢀ–ꢀ
Chip Select,从设备使能信号,由主设备控制。其中,CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个SPI设备成为可能。SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 "发送者(Transmitter)" 或者 "接收者(Receiver)"。 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了。FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是
没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种SPI系统自动读取数据的控制方法,其特征在于,该方法包括以下步骤:S1:SPI系统判断SPI总使能位开启且配置接收数据总量符合要求,则进行数据读取;S2:SPI系统往TX FIFO里填充数据,来将数据读取到RX FIFO中,并记录已接收数据总量;S3:SPI系统比较已接收数据总量和配置接收数据总量,来判断继续执行步骤S2还是结束工作。2.根据权利要求1所述的SPI系统自动读取数据的控制方法,其特征在于,步骤S1中,SPI系统在读取数据前,会预先配置接收RX FIFO水位中断触发值和配置接收数据总量。3.根据权利要求1所述的SPI系统自动读取数据的控制方法,其特征在于,步骤S1中,配置接收数据总量符合要求为:配置接收数据总量不为零。4.根据权利要求1所述的SPI系统自动读取数据的控制方法,其特征在于,步骤S2中,SPI系统自动往TX FIFO里填充数据后,发出一组时钟信号,使SPI系统将数据读取到RX FIFO。5.根据权利要求4所述的SPI系统自动读取数据的控制方法,其特征在于,SPI系统每读取设定容量的数据到RX FIFO中后,会产生RX FIFO水位触发中断,通知CPU搬运RX FIFO中的数据。6.根据权利要求1所述的SPI系统自动读取数据的控制方法,其特征...
【专利技术属性】
技术研发人员:ꢀ五一IntClG零六F一三四二,
申请(专利权)人:珠海市一微半导体有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。