CN103064805A - Spi控制器及通信方法 - Google Patents

Spi控制器及通信方法 Download PDF

Info

Publication number
CN103064805A
CN103064805A CN2012105726699A CN201210572669A CN103064805A CN 103064805 A CN103064805 A CN 103064805A CN 2012105726699 A CN2012105726699 A CN 2012105726699A CN 201210572669 A CN201210572669 A CN 201210572669A CN 103064805 A CN103064805 A CN 103064805A
Authority
CN
China
Prior art keywords
spi
data
transmission
controller
spi controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012105726699A
Other languages
English (en)
Other versions
CN103064805B (zh
Inventor
段长江
聂泽东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Shen Tech Advanced Cci Capital Ltd
Suzhou Zhongke Advanced Technology Research Institute Co Ltd
Original Assignee
Shenzhen Institute of Advanced Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Institute of Advanced Technology of CAS filed Critical Shenzhen Institute of Advanced Technology of CAS
Priority to CN201210572669.9A priority Critical patent/CN103064805B/zh
Publication of CN103064805A publication Critical patent/CN103064805A/zh
Application granted granted Critical
Publication of CN103064805B publication Critical patent/CN103064805B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Programmable Controllers (AREA)

Abstract

本发明涉及一种SPI控制器,包括内部总线接口模块,寄存器模块,数据转换模块,状态与中断控制模块,发送和接收数据缓存器,还包括有限状态机,用于根据寄存器模块中控制寄存器寄存的SPI传输参数和波特率寄存器寄存的SCLK波特率参数产生SS和SCLK输出。本发明提供的改进型SPI控制器,1)当被配置为主机时,SS输出完全由SPI控制器硬件自动控制,无需软件控制模拟SS输出,2)接收数据缓存器中数据的读取是可选的,减少了不必要的CPU读取接收数据缓存器操作,上述两点大大减少CPU操作SPI控制器时所需的软件控制,从而提高CPU的使用率。

Description

SPI控制器及通信方法
【技术领域】
本发明涉及串行通信技术,尤其涉及一种改进型的SPI控制器及基于该SPI控制器的通信方法。
【背景技术】
SPI(Serial Peripheral Interface,串行***设备接口)最早由Motorola公司提出的一种全双工、同步串行传输总线,主要用于微控制器和***设备之间的通信,以及用于微处理器和微处理器之间的通信。具有电路结构简单、传输速度快、通信可靠等优点。
SPI总线包括4根信号线:SS(Slave Select,从机选择),SCLK(SPI Clock,SPI传输时钟),MOSI(Master Output Slave Input,主机输出从机输入)和MISO(Master Input Slave Output,主机输入从机输出)。其中,SS由SPI主机输出,用于SPI主机选择SPI从机,低电平有效,即当SS输入为低时,SPI从机与SPI主机进行通信;SCLK是SPI主机输出的用于同步MOSI和MISO的时钟;MOSI是主机输出给从机的数据线;MISO是从机输出给主机的数据线。SPI总线的连接关系如图1所示。
SPI控制器控制SS的方法,如图2所示,具体为:
(1)、当被配置为从机时:SS管脚配置为SPI专用SS功能,作为输入连接到外面的SPI主机的SS输出,只用当SS输入为低时,SPI控制器才能和外面的SPI主机进行通信;
(2)、当被配置为主机时:
(2a)、如果为单SPI主机***,不需检测MODF(Mode Fault,模式错误)即多个SPI主机同时操作SPI总线,CPU(Central Processing Unit,中央处理单元)配置SPI控制器不使能MODF,SS作为输出连接到外部的SPI从机,此时SS输出通过CPU控制GPIO(Generic Purpose Input Output,通用输入输出)来实现,即SS管脚配置为GPIO功能,GPIO配置为输出状态,输出电平由CPU控制;此种情况下需软件控制以模拟SS输出;
(2b)、如果为多SPI主机***,需检测MODF,CPU配置SPI控制器使能MODF,SS管脚配置为SPI专用SS功能作为输入,SPI控制器检测SS输入:当SS输入为低,说明有其他的SPI主机正在操作SPI总线,SPI控制器需硬件自动配置为从机,并向CPU报告MODF;相反,当SS输入为高,说明没有其他的SPI主机在操作SPI总线,SPI控制器工作在主机模式,CPU配置SPI控制器不使能MODF,SS作为输出连接到外部的SPI从机,SS输出控制通过CPU控制GPIO来实现,并需软件控制以模拟SS输出。
如图3所示,SPI控制器接收数据缓存器工作原理:初始接收数据缓存器未存储数据,为空状态,将写入的数据依次存储到相应的位置,当存储N个数据后,假设接收数据缓存器最大容量为N,接收数据缓存器中存满数据,为满状态,此时没有空间存储新的数据。如果SPI控制器接收新的数据并写入接收数据缓存器,由于接收数据缓存器中的数据不会改变,新的数据将不会成功写入到接收数据缓存器中;只有将接收数据缓存器里面的数据读走,接收数据缓存器才有空间存储新的数据,新的数据才能成功写入到接收数据缓存器。
从上述分析中可以看到,SPI控制器存在如下两个不足:
1、当SPI控制器配置为主机时,SS输出不由SPI控制器直接控制,通过CPU(Central Processing Unit,中央处理单元)控制GPIO(Generic Purpose InputOutput,通用输入输出)来实现,需要软件控制来模拟SS输出。该方法通过CPU来控制GPIO来模拟SS输出,需要软件设计人员通过软件来控制,虽提供了一定的设计灵活性,但软件设计人员需要准确地用软件控制来模拟SS输出以满足SPI传输时序要求,增加了软件人员的负担;同时,软件控制需要额外占用CPU资源,增加了CPU的工作负荷。
2、SPI控制器中的接收数据缓存器存满数据后,里面的数据须要及时被读走,否则接收数据缓存器将不能接收新的数据。即,当SPI控制器被配置为主机:SPI控制器对***器件内部的控制寄存器进行写操作,SPI控制器输出有用的写数据到SPI从机,而此时SPI从机输出给SPI控制器的数据没有实际用途,SPI控制器也不关心这些数据,但当SPI控制器对SPI从机进行读操作时,SPI从机输出的有用数据需要写入接收数据缓存器,接收数据缓存器里面的数据必须要及时被读走;同理,当SPI控制器被配置为从机时:外部的SPI主机对SPI控制器进行读操作时,SPI控制器输出有用的数据到SPI主机,而此时SPI主机输出给SPI控制器的数据也没有实际用途,SPI控制器也不关心这些数据,但当外部SPI主机对SPI控制器进行写操作时,SPI主机输出的有用数据需要写入接收数据缓存器,接收数据缓存器里面的数据也必须及时被读走。
目前SPI控制器配置为主机时进行SPI传输的软件操作流程如下:
1)、CPU配置SPI控制器为主机,如果需要检测MODF(多SPI主机***),CPU配置SPI控制器使能MODF,SPI控制器将SS管脚配置为SPI专用SS功能作为输入,并检测SS输入:当SS为低,此时有其他的SPI主机正在操作SPI总线,SPI控制器需要硬件自动配置为SPI从机,并向CPU报告MODF;当SS为高,此时没有其他的SPI主机在操作SPI总线,则SPI控制器可以工作在主机模式,之后CPU配置SPI控制器不使能MODF;如果是单SPI主机***,则跳过前述的MODF检测过程,CPU配置SPI控制器为主机并且不使能MODF;
2)、CPU写操作波特率寄存器配置SCLK波特率参数;
3)、CPU写操作控制寄存器配置SPI传输参数;
4)、CPU配置SS管脚为GPIO功能,将GPIO配置为输出状态(软件操作控制);
5)、CPU控制GPIO输出低电平选择从机准备开始SPI传输(软件操作控制);
6)、CPU将需要发送的数据写入SPI控制器中的发送数据缓存器,该写操作将启动SPI传输;
7)、如果CPHA=0则执行步骤8),否则,如果CPHA=1则执行步骤10);
8)、每传输完一个数据后,将模拟SS输出的GPIO拉高(高电平),如果SPI控制器中的发送数据缓存器中还有数据要传输,则延时一段时间后(SS高电平保持时间)将模拟SS输出的GPIO拉低(低电平),开始下一个数据传输,以此类推,直到传输完发送数据缓存器里面的数据;等待传输完成后,CPU读取接收数据缓存器中的数据,如果需要继续传输则执行步骤5),开始下一次传输,否则传输完成;其中模拟SS输出的GPIO拉高时间、延时时间和拉低时间需软件人员控制以满足SPI传输时序要求(软件操作控制);
9)、等待发送数据缓存器里面的所有数据传输完成后,CPU读取接收数据缓存器中的数据,如果需要继续传输则执行步骤5),开始下一次传输,否则将模拟SS输出的GPIO拉高,完成传输(软件操作控制)。
因此,不管SPI控制器被配置为主机还是从机,接收数据缓存器存满数据后,不管接收到的数据有无实际用途,接收数据缓存器中的数据都必须及时被读走,否则接下来的数据就不能写进接收数据缓存器,大大增加了软件开销、以及对CPU资源的占用,同时,增加了软件设计人员的负担。
【发明内容】
本发明要解决的技术问题在于减少CPU操作SPI控制器时所需的软件控制,从而提高CPU的使用率。
为此,本发明一方面提供一种SPI控制器,包括内部总线接口模块,用于经内部总线实现CPU操作SPI控制器、寄存器模块,接收通过内部总线接口模块传输的CPU对SPI控制器的配置、数据转换模块,用于输出数据并串转换和输入数据串并转换、状态与中断控制模块,用于报告SPI控制器的状态和产生中断,还包括有限状态机,用于根据寄存器模块中控制寄存器寄存的SPI传输参数和波特率寄存器寄存的SCLK波特率参数产生SS和SCLK输出;发送和接收数据缓存器,分别用于缓存待传输和接收到的数据;所述有限状态机包括空闲、开始、传输和结束四个状态。
进一步地,所述SPI控制器还包括发送数据缓存器和接收数据缓存器,所述接收数据缓存器用于缓存SPI控制器接收到的数据;所述接收数据缓存器,进行如下控制:接收数据缓存器中数据存满后,当有新数据写入接收数据缓存器时,最先写入的数据被最先写入的数据之后的数据覆盖,依次类推,最后写入的数据之前的数据被最后写入的数据覆盖,进而形成一数据空间存储写入的新数据。
进一步地,所述数据转换模块包括输出数据并串转换单元和输入数据串并转换单元,所述输出数据并串转换单元用于读取发送数据缓存器中的并行数据后进行并串转换后输出,其中,当SPI控制器被配置为主机时,输出至MOSI信号线;反之,当SPI控制器被配置为从机时,输出至MISO信号线;所述输入数据串并转换单元用于将输入串行数据进行串并转换后写入接收数据缓存器,其中,当SPI控制器被配置为主机时,输入为MISO信号线;反之,当SPI控制器被配置为从机时,输入为MOSI信号线。
进一步地,所述寄存器模块包括控制寄存器和波特率寄存器,所述控制寄存器用于接收并寄存CPU配置SPI传输参数;所述波特率寄存器用于接收并寄存CPU配置SCLK时钟波特率参数。
进一步地,所述传输参数包括SPIE(SPI Enable,SPI使能)、MSS(MasterSlave Select,主从选择,其中‘1’为主、‘0’为从)、CPHA、CPOL、MODFEN和DataSize。
进一步地,所述CPHA和CPOL传输参数,支持8位、16位或32位的数据传输、最高位先传输或者最低位先传输。
本发明另一方面还提供一种SPI控制器的通信方法,包括,
S1、***复位,有限状态机处于空闲状态,SS输出高电平,SCLK输出即CPOL;
S2、CPU配置SPI控制器为主机,不使能MODF,使能SPI控制器,SPI控制器为主机并等待SPI传输;
S3、CPU将待传输的数据写入发送数据缓存器,写操作将启动SPI传输;
S4、有限状态机保持空闲状态,当检测到递增计数器计数为ClockNumber/2-1,有限状态机进入开始状态,并将SS输出低电平开始SPI传输;
S5、有限状态机保持开始状态,当递增计数器计数到ClockNumber/2-1时SCLK输出翻转,同时SS输出低电平;
S6、有限状态机处于传输状态直至数据传输结束,进入结束状态;
进一步地,还包括,
S7、有限状态机保持在结束状态到递增计数器计数到ClockNumber/2-1,之后有限状态机进行状态转换:
S8、当CPHA=0,有限状态机进入空闲状态,同时SS输出高电平并结束当前SPI传输、等待下次SPI传输;
S9、当CPHA=0,如果发送数据缓存器中仍存有数据,有限状态机进入传输状态,同时保持SS输出低电平开始下次SPI传输;反之,如果发送数据缓存器中无数据,有限状态机进入空闲状态,同时SS输出高电平并结束当前SPI传输、等待下次SPI传输。其中,步骤S1-S9为有限状态机的工作流程。
进一步地,所述SPI传输为:
S10、CPU配置SPI控制器为主机,并判断SPI主机***类型;
S11、当为多SPI主机***,检测MODF,CPU配置SPI控制器使能MODF,SPI控制器配置SS为输入并检测SS输入电平:SS为低,有其他的SPI主机操作SPI总线,此时SPI控制器硬件自动配置为从机,并向CPU报告MODF;SS为高,没有其他的SPI主机操作SPI总线,SPI控制器可以配置为主机并开始SPI传输,CPU配置SPI控制器不使能MODF,SPI控制器配置SS为输出,准备SPI传输;
当为单SPI主机***,CPU配置不使能MODF,SPI控制器配置SS为输出,准备SPI传输;
S12、CPU写操作波特率寄存器配置SCLK波特率参数;
S13、CPU写操作控制寄存器配置SPI传输参数;
S14、CPU将待传输的数据写入发送数据缓存器;数据转换模块将发送数据缓存器中的数据读出进行并串转换后输出至MOSI,同时将输入MISO进行串并转换后写入到接收数据缓存器;
S15、持续SPI控制器数据传输;
S16、当发送数据缓存器中还有数据,需继续传输执行步骤S14,并开始下次传输,否则传输结束。
进一步地,S17、CPU读取接收数据缓存器里面接收到的数据。
本发明提供的改进型SPI控制器,1)当被配置为主机时,SS输出完全由SPI控制器硬件自动控制,无需软件控制模拟SS输出,2)接收数据缓存器中数据的读取是可选的,减少了不必要的CPU读取接收数据缓存器操作,这两点大大减少CPU操作SPI控制器时所需的软件控制,从而提高CPU的使用率。
【附图说明】
图1示出现有技术的SPI总线的连接示意图。
图2示出现有技术的SPI控制器控制SS的示意图。
图3示出现有技术的SPI控制器接收缓存控制器的工作原理图。
图4示出本发明的SPI控制器的结构框架图。
图5示出本发明的SPI控制器控制SS的示意图。
图6示出本发明的SPI控制器的有限状态机的转换图。
图7示出本发明的SPI控制器接收缓存控制器的工作原理图。
图8示出本发明的CPHA=0时的SPI传输时序图。
图9示出本发明的CPHA=1时的SPI传输时序图。
【具体实施方式】
下面结合附图和具体实施例对本发明作进一步详细说明。
本发明提供一种SPI控制器,如图4所示,包括内部总线接口模块,用于经内部总线实现CPU操作SPI控制器、寄存器模块,接收通过内部总线接口模块传输的CPU对SPI控制器的配置、数据转换模块,用于输出数据并串转换和输入数据串并转换、状态与中断控制模块,用于报告SPI控制器的状态和产生中断,其特征在于,还包括有限状态机,用于根据寄存器模块中控制寄存器寄存的SPI传输参数和波特率寄存器寄存的SCLK波特率参数产生SS和SCLK输出;发送和接收数据缓存器,分别用于缓存待传输和接收到的数据;上述有限状态机包括空闲、开始、传输和结束四个状态。
如图5所示,为SPI控制器的SS端连接示意图,CPU1通过内部总线2与SPI控制器3连接,SPI控制器控制SS工作原理如下:
1)、当CPU配置SPI控制器为从机时:SPI控制器硬件自动配置SS管脚为输入,并连接到外部的SPI主机的SS输出,此状态下只有当SS输入为低时,SPI控制器才与外部的SPI主机进行通信;
2)、当CPU配置SPI控制器为主机时:
a)、当为单SPI主机***,不需检测MODF(Mode Fault,模式错误:即多个SPI主机同时操作SPI总线),CPU配置SPI控制器不使能MODF,即MODFEN=0),SPI控制器硬件自动配置SS管脚为输出,SS输出电平由SPI控制器根据SPI传输参数硬件控制,上述传输参数如CPHA(Clock Phase,时钟相位)和CPOL(Clock Polarity,时钟极性);
b)、当为多SPI主机***,需检测MODF,CPU配置SPI控制器使能MODF即MODFEN=1,SPI控制器硬件自动配置SS管脚为输入,SPI控制器检测SS输入:如果SS输入为低电平,则有其他的SPI主机正在操作SPI总线,SPI控制器硬件自动配置为从机,并向CPU报告MODF;相反,如果SS输入为高,则没有其他的SPI主机在操作SPI总线,SPI控制器可以工作在主机模式,之后CPU配置SPI控制器不使能MODF,即MODFEN=0,SPI控制器硬件自动配置SS管脚为输出,SS输出电平由SPI控制器根据SPI传输参数硬件控制,上述传输参数如CPHA和CPOL。
如图6所示,为有限状态机的转换图,上述有限状态机包括空闲、开始、传输和结束四个状态。
本发明提供的改进型SPI控制器,1)当被配置为主机时,SS输出完全由SPI控制器硬件自动控制,无需软件控制模拟SS输出,2)接收数据缓存器中数据的读取是可选的,减少了不必要的CPU读取接收数据缓存器操作,减少CPU操作SPI控制器时所需的软件控制,从而提高CPU的使用率。
进一步地,上述SPI控制器还包括发送数据缓存器和接收数据缓存器,上述接收数据缓存器用于缓存SPI控制器接收到的数据;上述接收数据缓存器,进行如下控制:接收数据缓存器中数据存满后,当有新数据写入接收数据缓存器时,最先写入的数据被最先写入的数据之后的数据覆盖,依次类推,最后写入的数据之前的数据被最后写入的数据覆盖,进而形成一数据空间存储写入的新数据。
如图7所示,本发明SPI控制器接收数据缓存器工作原理为,初始接收数据缓存器中没有数据,为空状态,之后将写入的数据依次存储到相应的位置,假设接收数据缓存器最大容量为N,则当存储N个数据后,接收数据缓存器中即存满了数据,为满状态。若SPI控制器接收新的数据并写入接收数据缓存器,此时,数据1会覆盖最先写入的数据0,同理,数据2覆盖数据1,依次类推,数据N覆盖数据N-1,这样将在地址N上产生一空间可用于存储写入的新数据。因此,即保证先进先出,又在存满数据后,将新的数据写入并覆盖之前写入的数据。
本发明提供的改进型SPI控制器,接收数据缓存器中数据的读取是可选的:如果有实际用途,则读走,否则可以不进行读操作,这样后续接收到的数据会自动覆盖掉接收数据缓存器中已经写入的数据,减少了不必要的CPU读取接收数据缓存器操作,同时减少CPU操作SPI控制器时所需的软件控制,从而提高CPU的使用率。
进一步地,上述数据转换模块包括输出数据并串转换单元和输入数据串并转换单元,上述输出数据并串转换单元用于读取发送数据缓存器中的并行数据后进行并串转换后输出,其中,当SPI控制器被配置为主机时,输出至MOSI信号线;反之,当SPI控制器被配置为从机时,输出至MISO信号线;上述输入数据串并转换单元用于将输入串行数据进行串并转换后写入接收数据缓存器,其中,当SPI控制器被配置为主机时,输入为MISO信号线;反之,当SPI控制器被配置为从机时,输入为MOSI信号线。
进一步地,上述寄存器模块包括控制寄存器和波特率寄存器,上述控制寄存器用于接收并寄存CPU配置SPI传输参数;上述波特率寄存器用于接收并寄存CPU配置SCLK时钟波特率参数。
其中,上述传输参数包括SPIE(SPI Enable,SPI使能)、MSS(Master SlaveSelect,主从选择:‘1’为主、‘0’为从)、CPHA、CPOL、MODFEN(模式错误使能)和DataSize(数据位宽选择:‘00’表示8-bit,‘01’表示16-bit,‘10’表示32-bit)。
上述状态与中断控制模块,用于报告SPI控制器的工作状态和产生中断,包括TxFIFOEmpty(发送数据缓存器空标志)、TxFIFOFull(发送数据缓存器满标志)、RxFIFOEmpty(接收数据缓存器空标志)、RxFIFOFull(接收数据缓存器满标志)和MODF。
SPI控制器可支持不同组合的CPHA和CPOL传输参数,支持8位、16位和32位的数据传输,以及支持最高位先传输MLFS=1或者最低位先传输MLFS=0。其中,MLFS(MSB LSB First Select,高低位选择:‘1’为MSB First最高位先传输,‘0’为LSB First最低位先传输)。
本发明另一方面针对SPI控制器还提供一种SPI控制器的通信方法,包括,
S1、***复位,有限状态机处于空闲状态,SS输出高电平,SCLK输出即CPOL;
S2、CPU配置SPI控制器为主机MSS=1,不使能MODF(MODFFEN=0),使能SPI控制器(SPIEN=1),SPI控制器为主机并等待SPI传输;
S3、CPU将要传输的数据写入发送数据缓存器,该写操作将启动SPI传输:SPI控制器检测到发送数据缓存器中有数据(TxFIFOEmpty=0)就读出发送数据缓存器中的数据并启动SPI传输;
S4、有限状态机保持空闲状态,当检测到递增计数器计数为ClockNumber/2-1,有限状态机处于开始状态,并将SS输出低电平开始SPI传输;
S5、有限状态机保持开始状态,当递增计数器计数到ClockNumber/2-1时SCLK输出翻转,以产生SCLK时钟输出,同时SS输出低电平,ClockNumber(波特率数值);
S6、有限状态机处于传输状态直至数据传输结束,进入结束状态;
进一步地,还包括,
S7、有限状态机保持在结束状态到递增计数器计数到ClockNumber/2-1,之后有限状态机进行状态转换:
S8、如图8所示,当CPHA=0,有限状态机进入空闲状态,同时SS输出高电平并结束当前SPI传输、等待下次SPI传输;
S9、如图9所示,当CPHA=1,如果发送数据缓存器中仍存有数据,有限状态机进入传输状态,同时保持SS输出低电平开始下次SPI传输;反之,如果发送数据缓存器中无数据,有限状态机进入空闲状态,同时SS输出高电平并结束当前SPI传输、等待下次SPI传输。
其中,上述SPI传输为:
S10、CPU配置SPI控制器为主机,并判断SPI主机***类型;
S11、当为多SPI主机***,需检测MODF,CPU配置SPI控制器使能MODF,SPI控制器配置SS为输入并检测SS输入电平:
SS为低电平,有其他的SPI主机操作SPI总线,此时SPI控制器硬件自动配置为从机,并向CPU报告MODF;
SS为高电平,没有其他的SPI主机操作SPI总线,SPI控制器可以配置为主机并开始SPI传输,CPU配置SPI控制器不使能MODF,SPI控制器配置SS为输出,准备SPI传输;
当为单SPI主机***,CPU配置不使能MODF,SPI控制器配置SS为输出,准备SPI传输;
S12、CPU写操作波特率寄存器配置SCLK波特率参数;SCLK时钟频率=***时钟频率/波特率寄存器的值,其中,最低位永远为0,即波特率寄存器的值为偶数,***时钟频率为SPI控制器所挂的内部总线接口时钟工作频率。
S13、CPU写操作控制寄存器配置SPI传输参数,如CPHA、CPOL;
S14、CPU将待传输的数据写入发送数据缓存器;数据转换模块将发送数据缓存器中的数据读出进行并串转换后输出至MOSI,同时将输入MISO进行串并转换后写入到接收数据缓存器;
S15、持续SPI控制器数据传输;
S16、当发送数据缓存器中还有数据,需继续传输执行步骤S14,并开始下次传输,否则传输结束。
S17、CPU读取接收数据缓存器里面接收到的数据。其中,步骤S17可选择性的应用;步骤S10-S17是CPU操作SPI控制器实现SPI传输的流程。
以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所作出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。

Claims (10)

1.一种SPI控制器,包括内部总线接口模块,用于经内部总线实现CPU操作SPI控制器、寄存器模块,接收通过内部总线接口模块传输的CPU对SPI控制器的配置、数据转换模块,用于输出数据并串转换和输入数据串并转换、状态与中断控制模块,用于报告SPI控制器的状态和产生中断,其特征在于,还包括有限状态机,用于根据寄存器模块中控制寄存器寄存的SPI传输参数和波特率寄存器寄存的SCLK波特率参数产生SS和SCLK输出;发送和接收数据缓存器,分别用于缓存待传输和接收到的数据;
所述有限状态机包括空闲、开始、传输和结束四个状态。
2.根据权利要求1所述的SPI控制器,其特征在于,所述SPI控制器还包括发送数据缓存器和接收数据缓存器,所述接收数据缓存器用于缓存SPI控制器接收到的数据;
所述接收数据缓存器,进行如下控制:接收数据缓存器中数据存满后,当有新数据写入接收数据缓存器时,最先写入的数据被最先写入的数据之后的数据覆盖,依次类推,最后写入的数据之前的数据被最后写入的数据覆盖,进而形成一数据空间存储写入的新数据。
3.根据权利要求2所述的SPI控制器,其特征在于,所述数据转换模块包括输出数据并串转换单元和输入数据串并转换单元,
所述输出数据并串转换单元用于读取发送数据缓存器中的并行数据后进行并串转换后输出,其中,当SPI控制器被配置为主机时,输出至MOSI信号线;反之,当SPI控制器被配置为从机时,输出至MISO信号线;
所述输入数据串并转换单元用于将输入串行数据后进行串并转换写入接收数据缓存器,其中,当SPI控制器被配置为主机时,输入为MISO信号线;反之,当SPI控制器被配置为从机时,输入为MOSI信号线。
4.根据权利要求1所述的SPI控制器,其特征在于,所述寄存器模块包括控制寄存器和波特率寄存器,所述控制寄存器用于接收并寄存CPU配置SPI传输参数;所述波特率寄存器用于接收并寄存CPU配置SCLK时钟波特率参数。
5.根据权利要求4所述的SPI控制器,其特征在于,所述传输参数包括SPIE、MSS、CPHA、CPOL、MODFEN和DataSize。
6.根据权利要求5所述的SPI控制器,其特征在于,所述CPHA和CPOL传输参数,支持8位、16位或32位的数据传输、最高位先传输或者最低位先传输。
7.一种SPI控制器的通信方法,其特征在于,包括,
S1、***复位,有限状态机处于空闲状态,SS输出高电平,SCLK输出即CPOL;
S2、CPU配置SPI控制器为主机,不使能MODF,使能SPI控制器,SPI控制器为主机并等待SPI传输;
S3、CPU将待传输的数据写入发送数据缓存器,写操作将启动SPI传输;
S4、有限状态机保持空闲状态,当检测到递增计数器计数为ClockNumber/2-1,有限状态机进入开始状态,并将SS输出低电平开始SPI传输;
S5、有限状态机保持开始状态,当递增计数器计数到ClockNumber/2-1时SCLK输出翻转,同时SS输出低电平;
S6、有限状态机处于传输状态直至数据传输结束,进入结束状态。
8.根据权利要求7所述的SPI控制器的通信方法,其特征在于,还包括,
S7、有限状态机保持在结束状态到递增计数器计数到ClockNumber/2-1,之后有限状态机进行状态转换:
S8、当CPHA=0,有限状态机进入空闲状态,同时SS输出高电平并结束当前SPI传输、等待下次SPI传输;
S9、当CPHA=0,如果发送数据缓存器中仍存有数据,有限状态机进入传输状态,同时保持SS输出低电平开始下次SPI传输;反之,如果发送数据缓存器中无数据,有限状态机进入空闲状态,同时SS输出高电平并结束当前SPI传输、等待下次SPI传输。
9.根据权利要求8所述的SPI控制器的通信方法,其特征在于,所述SPI传输为:
S10、CPU配置SPI控制器为主机,并判断SPI主机***类型;
S11、当为多SPI主机***,检测MODF,CPU配置SPI控制器使能MODF,SPI控制器配置SS为输入并检测SS输入电平:SS为低,有其他的SPI主机操作SPI总线,此时SPI控制器硬件自动配置为从机,并向CPU报告MODF;SS为高,没有其他的SPI主机操作SPI总线,SPI控制器可以配置为主机并开始SPI传输,CPU配置SPI控制器不使能MODF,SPI控制器配置SS为输出,准备SPI传输;
当为单SPI主机***,CPU配置SPI控制器为主机并且不使能MODF,SPI控制器配置SS为输出,准备SPI传输;
S12、CPU写操作波特率寄存器配置SCLK波特率参数;
S13、CPU写操作控制寄存器配置SPI传输参数;
S14、CPU将待传输的数据写入发送数据缓存器;数据转换模块将发送数据缓存器中的数据读出后进行并串转换后输出至MOSI,同时输入MISO进行串并转换后写入到接收数据缓存器;
S15、持续SPI控制器数据传输;
S16、当发送数据缓存器中还有数据,需继续传输执行步骤S14,并开始下次传输,否则传输结束。
10.根据权利要求9所述的SPI控制器的通信方法,其特征在于,S17、CPU读取接收数据缓存器里面接收到的数据。
CN201210572669.9A 2012-12-25 2012-12-25 Spi控制器及通信方法 Active CN103064805B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210572669.9A CN103064805B (zh) 2012-12-25 2012-12-25 Spi控制器及通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210572669.9A CN103064805B (zh) 2012-12-25 2012-12-25 Spi控制器及通信方法

Publications (2)

Publication Number Publication Date
CN103064805A true CN103064805A (zh) 2013-04-24
CN103064805B CN103064805B (zh) 2015-12-09

Family

ID=48107436

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210572669.9A Active CN103064805B (zh) 2012-12-25 2012-12-25 Spi控制器及通信方法

Country Status (1)

Country Link
CN (1) CN103064805B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150039142A (ko) * 2015-02-16 2015-04-09 주식회사 이노와이어리스 시스템 성능 향상을 위한 제어 로직을 구비한 직렬 주변기기 인터페이스 및 그 구동 방법
CN104978293A (zh) * 2014-04-02 2015-10-14 宏正自动科技股份有限公司 非对称双向传输装置及其切换***
CN105824777A (zh) * 2016-03-18 2016-08-03 烽火通信科技股份有限公司 一种spi总线在ipran设备中的实现方法
CN106407554A (zh) * 2016-09-14 2017-02-15 郑州云海信息技术有限公司 一种同时支持主从机功能的lpc总线仿真验证方法和装置
CN107145465A (zh) * 2016-03-01 2017-09-08 中兴通讯股份有限公司 串行外设接口spi的传输控制方法、装置及***
CN108040214A (zh) * 2017-12-08 2018-05-15 延锋伟世通电子科技(南京)有限公司 一种通过FPD-LinkIII中的SPI通道实现车载娱乐***与仪表双屏互联的架构
CN108628784A (zh) * 2018-04-28 2018-10-09 湖南大学 串行通信器及串行通信***
CN110798269A (zh) * 2019-09-24 2020-02-14 深圳震有科技股份有限公司 基于gpio实现pcm从机功能的方法及***
CN111444123A (zh) * 2020-03-28 2020-07-24 珠海市一微半导体有限公司 基于硬件加速的spi接口的自动读取控制***及方法
CN112052213A (zh) * 2020-10-10 2020-12-08 乐鑫信息科技(上海)股份有限公司 增强型spi控制器以及操作spi控制器的方法
CN113419985A (zh) * 2021-06-15 2021-09-21 珠海市一微半导体有限公司 Spi***自动读取数据的控制方法及spi***
CN113590520A (zh) * 2021-06-15 2021-11-02 珠海一微半导体股份有限公司 Spi***自动写入数据的控制方法及spi***
CN114003544A (zh) * 2021-12-30 2022-02-01 中科声龙科技发展(北京)有限公司 一种控制芯片、工作量证明***和传输方法
CN114036096A (zh) * 2021-11-04 2022-02-11 珠海一微半导体股份有限公司 一种基于总线接口的读控制器
CN114968365A (zh) * 2022-07-27 2022-08-30 广州智慧城市发展研究院 适配器寄存器单元及包含其的主机适配器电路
CN115840728A (zh) * 2023-02-15 2023-03-24 北京象帝先计算技术有限公司 图形处理***、gpu核、传输控制器及主核配置方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1764703A1 (en) * 2005-08-31 2007-03-21 STMicroelectronics Pvl. Ltd. A system for providing access to multiple data buffers of a data retaining and processing device
CN102023956A (zh) * 2009-09-23 2011-04-20 上海摩波彼克半导体有限公司 集成电路芯片中串行外设从器件接口结构及数据读写方法
CN102541780A (zh) * 2011-12-15 2012-07-04 苏州国芯科技有限公司 一种多数据流通道dma***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1764703A1 (en) * 2005-08-31 2007-03-21 STMicroelectronics Pvl. Ltd. A system for providing access to multiple data buffers of a data retaining and processing device
CN102023956A (zh) * 2009-09-23 2011-04-20 上海摩波彼克半导体有限公司 集成电路芯片中串行外设从器件接口结构及数据读写方法
CN102541780A (zh) * 2011-12-15 2012-07-04 苏州国芯科技有限公司 一种多数据流通道dma***

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104978293A (zh) * 2014-04-02 2015-10-14 宏正自动科技股份有限公司 非对称双向传输装置及其切换***
CN104978293B (zh) * 2014-04-02 2018-05-29 宏正自动科技股份有限公司 非对称双向传输装置及其切换***
KR20150039142A (ko) * 2015-02-16 2015-04-09 주식회사 이노와이어리스 시스템 성능 향상을 위한 제어 로직을 구비한 직렬 주변기기 인터페이스 및 그 구동 방법
KR101630599B1 (ko) 2015-02-16 2016-06-16 주식회사 이노와이어리스 시스템 성능 향상을 위한 제어 로직을 구비한 직렬 주변기기 인터페이스 및 그 구동 방법
CN107145465A (zh) * 2016-03-01 2017-09-08 中兴通讯股份有限公司 串行外设接口spi的传输控制方法、装置及***
CN105824777A (zh) * 2016-03-18 2016-08-03 烽火通信科技股份有限公司 一种spi总线在ipran设备中的实现方法
CN105824777B (zh) * 2016-03-18 2019-03-08 烽火通信科技股份有限公司 一种spi总线在ipran设备中的实现方法
CN106407554A (zh) * 2016-09-14 2017-02-15 郑州云海信息技术有限公司 一种同时支持主从机功能的lpc总线仿真验证方法和装置
CN106407554B (zh) * 2016-09-14 2019-09-24 郑州云海信息技术有限公司 一种同时支持主从机功能的lpc总线仿真验证方法和装置
CN108040214A (zh) * 2017-12-08 2018-05-15 延锋伟世通电子科技(南京)有限公司 一种通过FPD-LinkIII中的SPI通道实现车载娱乐***与仪表双屏互联的架构
CN108040214B (zh) * 2017-12-08 2023-09-22 延锋伟世通电子科技(南京)有限公司 一种通过FPD-Link III中的SPI通道实现车载娱乐***与仪表双屏互联的架构
CN108628784A (zh) * 2018-04-28 2018-10-09 湖南大学 串行通信器及串行通信***
CN108628784B (zh) * 2018-04-28 2020-05-19 湖南大学 串行通信器及串行通信***
CN110798269A (zh) * 2019-09-24 2020-02-14 深圳震有科技股份有限公司 基于gpio实现pcm从机功能的方法及***
CN110798269B (zh) * 2019-09-24 2021-12-10 深圳震有科技股份有限公司 基于gpio实现pcm从机功能的方法及***
CN111444123A (zh) * 2020-03-28 2020-07-24 珠海市一微半导体有限公司 基于硬件加速的spi接口的自动读取控制***及方法
CN111444123B (zh) * 2020-03-28 2021-01-15 珠海市一微半导体有限公司 基于硬件加速的spi接口的自动读取控制***及方法
US11734219B2 (en) 2020-03-28 2023-08-22 Amicro Semiconductor Co., Ltd Automatic read control system based on a hardware accelerated SPI and automatic read control method
CN112052213A (zh) * 2020-10-10 2020-12-08 乐鑫信息科技(上海)股份有限公司 增强型spi控制器以及操作spi控制器的方法
WO2022073363A1 (zh) * 2020-10-10 2022-04-14 乐鑫信息科技(上海)股份有限公司 增强型spi控制器以及操作spi控制器的方法
CN112052213B (zh) * 2020-10-10 2022-12-02 乐鑫信息科技(上海)股份有限公司 增强型spi控制器以及操作spi控制器的方法
CN113590520A (zh) * 2021-06-15 2021-11-02 珠海一微半导体股份有限公司 Spi***自动写入数据的控制方法及spi***
CN113419985A (zh) * 2021-06-15 2021-09-21 珠海市一微半导体有限公司 Spi***自动读取数据的控制方法及spi***
CN113590520B (zh) * 2021-06-15 2024-05-03 珠海一微半导体股份有限公司 Spi***自动写入数据的控制方法及spi***
CN114036096A (zh) * 2021-11-04 2022-02-11 珠海一微半导体股份有限公司 一种基于总线接口的读控制器
CN114036096B (zh) * 2021-11-04 2024-05-03 珠海一微半导体股份有限公司 一种基于总线接口的读控制器
CN114003544A (zh) * 2021-12-30 2022-02-01 中科声龙科技发展(北京)有限公司 一种控制芯片、工作量证明***和传输方法
CN114968365A (zh) * 2022-07-27 2022-08-30 广州智慧城市发展研究院 适配器寄存器单元及包含其的主机适配器电路
CN115840728A (zh) * 2023-02-15 2023-03-24 北京象帝先计算技术有限公司 图形处理***、gpu核、传输控制器及主核配置方法

Also Published As

Publication number Publication date
CN103064805B (zh) 2015-12-09

Similar Documents

Publication Publication Date Title
CN103064805B (zh) Spi控制器及通信方法
CN102023956B (zh) 集成电路芯片中串行外设从器件接口结构及数据读写方法
CN102023945B (zh) 基于串行***设备接口总线的设备及其数据传输方法
CN101636721B (zh) 用于处理未知长度传输的dmac
CN109558344B (zh) 一种适用于网络传输的dma传输方法及dma控制器
CN1570907B (zh) 多处理器***
CN102621974B (zh) 基于通信总线的工业自动化实时控制装置及控制方法
CN102841869B (zh) 一种基于fpga的多通道i2c控制器
CN101968779A (zh) 通用串行总线传输转译器及微帧同步方法
CN107255961B (zh) 一种高效数据交互的无线智能示波器
CN102073611B (zh) 一种i2c总线控制***及方法
CN103714026A (zh) 一种支持原址数据交换的存储器访问方法及装置
CN103399830A (zh) 通过PCI Express总线读取计算机物理内存的设备及方法
Somkuarnpanit et al. Fpga-based multi protocol data acquisition system with high speed usb interface
EP2699030A1 (en) Route switching device, network switching system and route switching method
CN105608039A (zh) 一种基于fifo和arinc659总线的双余度计算机周期控制***及方法
CN117278890A (zh) 光模块访问方法、装置、***、电子设备及可读存储介质
CN102708079B (zh) 应用于微控制器的控制数据传输的方法及***
CN103488597A (zh) 一种先进先出缓存器及其读写数据的方法
CN1984148B (zh) 实现高层数据链路控制的装置及方法
CN104836710A (zh) 一种基于分布式***一主多从通信的方法与装置
CN103019972A (zh) 一种利用总线进行通讯的方法和装置
CN101594719B (zh) 脱机控制装置
CN114567445A (zh) 一种验签数据传输方法、装置、设备及介质
CN110659236B (zh) 可自主回复写应答的axi总线传输装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20170912

Address after: 215028, room 20, 523, Northwest District, nano City, 99 Jinji Lake Road, Suzhou Industrial Park, Jiangsu, China

Patentee after: SUZHOU ZHONGKE ADVANCED TECHNOLOGY RESEARCH INSTITUTE Co.,Ltd.

Address before: Room office building No. 1068 Shenzhen Institute of advanced technology A-301 518000 in Guangdong city of Shenzhen province Nanshan District Shenzhen University city academy Avenue

Patentee before: Shenzhen shen-tech advanced Cci Capital Ltd.

Effective date of registration: 20170912

Address after: Room office building No. 1068 Shenzhen Institute of advanced technology A-301 Shenzhen 518000 Shenzhen University Nanshan District city academy Avenue

Patentee after: Shenzhen shen-tech advanced Cci Capital Ltd.

Address before: 1068 No. 518055 Guangdong city in Shenzhen Province, Nanshan District City Xili University School Avenue

Patentee before: SHENZHEN INSTITUTES OF ADVANCED TECHNOLOGY

TR01 Transfer of patent right