CN116126771A - 一种两线spi的通信系统及方法 - Google Patents
一种两线spi的通信系统及方法 Download PDFInfo
- Publication number
- CN116126771A CN116126771A CN202310000677.4A CN202310000677A CN116126771A CN 116126771 A CN116126771 A CN 116126771A CN 202310000677 A CN202310000677 A CN 202310000677A CN 116126771 A CN116126771 A CN 116126771A
- Authority
- CN
- China
- Prior art keywords
- signal
- spi
- data
- slave device
- master device
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4286—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Abstract
本发明属于数字通信技术领域,公开了一种两线SPI通信系统及方法,包括主设备和从设备,所述主设备和从设备都包括CPU、总线、SPI模块和GPIO模块,在SPI的使用场景下,所述CPU用于SPI寄存器的配置,所述SPI模块用于将发送的数据转换成SPI的协议并通过GPIO模块发出,所述主设备和从设备的SPI通信线由SCK时钟信号线和DATA数据信号线组成,所述SCK时钟信号线用于将主设备产生的时钟同步给从设备;所述DATA数据信号线用于主设备到从设备和从设备到主设备的双向传输。本发明节约了IO资源,握手通信既确定了传输方向也保证了数据传输的有效性。
Description
技术领域
本发明属于数字通信技术领域,尤其涉及一种两线SPI的通信系统及方法。
背景技术
SPI(Serial Peripheral Interface)串行外设接口是由摩托罗拉提出的一种高速全双工通信总线。SPI协议规定了数据通信用到的四根信号线:①SCK时钟信号线②MOSI主设备发送数据从设备接受数据信号线③MISO从设备发送数据主设备接受数据信号线④CS片选信号线。
根据传输方式的不同,SPI可配置为全双工模式,半双工模式,只接收模式,只发送模式。
根据CPOL配置的不同可以选择SPI 空闲状态下SCK信号的极性(处于高电平或者低电平);根据CPHA配置的不同可以选择SPI数据采样的时钟沿(位于第一个时钟沿或者第二个时钟沿)。以全双工模式且CPOL=0、SPHA=0为例,主设备的MISO连接从设备的MOSI,主设备的MOSI连接从设备的MISO,SPI空闲状态下SCK处于低电平,主设备和从设备都在SCK的上升沿采样数据,在SCK的下降沿输出数据。
标准的SPI协议总共需要4个IO来实现数据的通信。在部分应用场景和封装的限制下,需要尽可能的减少IO的数量。IO数量的减少有利于减小芯片的面积,从而降低成本。
公开号为CN112559424A的专利申请提出了一种减少SPI IO数量的方法。该方案将SPI的MISO和MOSI经过时分复用合并为SDA用于数据的双向传输。传输方式为在SCK的边沿同时完成MASTER的数据输出以及SLAVE的数据输入,或者SLAVE的数据输出以及MASTER的数据输入。这种方式虽然实现了数据线上的双向传输,但是在同一个时钟沿完成数据的发送和采样很难实现。在SLAVE输出时,MASTER生成的SCK需要先传输到SLAVE端用于产生数据,数据再回传到MASTER端进行采样。这一条路径根据工艺的不同可能会有40ns左右的延迟,为保证数据能被正确采样,MASTER用于采样数据的寄存器的CK端需要插入大量的buffer。这种实现方式不仅加大了时序约束的难度,同时大量的buffer也增大了芯片的面积。
发明内容
本发明目的在于提供一种两线SPI的通信系统及方法,以解决上述的技术问题。
为解决上述技术问题,本发明的一种两线SPI的通信系统及方法的具体技术方案如下:
一种两线SPI通信系统,包括主设备和从设备,所述主设备和从设备都包括CPU、总线、SPI模块和GPIO模块,在SPI的使用场景下,所述CPU用于SPI寄存器的配置,所述SPI模块用于将发送的数据转换成SPI的协议并通过GPIO模块发出,所述主设备和从设备的SPI通信线由SCK时钟信号线和DATA数据信号线组成,所述SCK时钟信号线用于将主设备产生的时钟同步给从设备;所述DATA数据信号线用于主设备到从设备和从设备到主设备的双向传输。
进一步的,所述主设备和从设备通过握手信号进行通信,所述握手信号包括主设备发送的请求信号、主设备发送的读写控制信号以及从设备发送的回应信号。
进一步的,主设备和从设备握手期间的SCK信号根据CPOL的配置处于高电平或低电平状态。
进一步的,所述握手信号由SPI内部的spi clk驱动产生,所述spi clk为SPI内部的时钟,来自于系统总线的时钟,所述主设备和从设备的spi clk同频但不同步,两线SPI的握手信号电平宽度至少为三个spi clk时钟周期,所述握手信号电平宽度通过软件配置。
本发明还公开了一种两线SPI通信系统的通信方法,包括如下步骤:
步骤1:主设备使能后先后发出高电平信号和低电平信号,紧接着发出读写控制信号,高电平代表主设备向从设备传输,低电平表示从设备向主设备传输,主设备发完读写控制信号后不再驱动DATA线,等待从设备回应请求;
步骤2:从设备在使能后始终采样DATA线上的变化,在采样到高低电平的跳变后再采样读写控制信号,从设备根据目前的状态选择是否接受主设备的请求,当从设备可以接受主设备的请求时从设备驱动DATA线先后发送高电平信号和低电平信号;当从设备无法接受主设备的请求时,从设备驱动DATA线先后发送低电平信号和高电平信号;
步骤3:主设备根据采样到的回应信号判断是否可以开始数据传输,若从设备可以接受,SCK时钟信号线和DATA数据信号线上随即开始数据传输;若从设备无法接受,主设备产生错误中断信号,等待CPU来处理。
进一步地,所述GPIO的行为为一个三态门,GPIO上使用到的信号包括输出使能信号oe、数据输出信号data out和数据输入信号data in,输出使能信号oe为高电平有效,在从设备使能后从设备内部输出使能信号oe拉低,数据输出信号data out上持续监测DATA线上的信号,等待主设备发送握手信号和读写控制信号;主设备使能后将输出使能信号oe拉高,开始发送握手信号和读写控制信号,主设备发送完成后随即将输出使能信号oe拉低,接收从设备的回应信号;从设备在识别了握手信号和读写控制信号后将输出使能信号oe拉高,发送回应信号。
进一步地,两线SPI的使用方式与标准SPI一致,在两线SPI配置完成并使能之后,软件只需查询发送FIFO非空状态位和接收FIFO非满状态位,并持续向数据寄存器中写入数据即可。
进一步地,所述主设备和从设备通过握手信号进行通信,主设备在使能后驱动DATA线对从设备发起请求,请求信号由一个高电平和一个低电平构成,发送完请求信号后主设备随即发送读写控制信号,所述握手信号电平宽度为n个spi clk时钟周期,n≥3,则采样信号的时间点为第n-1个spi clk的上升沿,对于DATA线上的握手信号,从设备每次都在第二个时钟沿采样DATA线上的数据,从设备在采样到主设备的请求信号后随即发送回应信号,主设备在采样从设备发送的回应信号时,同样也在第二个时钟沿采样。
进一步地,两线SPI在每次传输启动前先由主设备发出请求信号和读写控制信号,在从设备正确响应后,主设备或从设备即利用SCK和DATA线传输数据。
本发明的一种两线SPI的通信系统及方法具有以下优点:
1.对比原有的SPI标准协议,两线SPI的方式只用了两个IO就可以实现双向传输的功能,节约了IO资源。
2.握手通信既确定了传输方向也保证了数据传输的有效性。
3.全双工模式下,MISO路径为限制SPI频率的关键路径,两线SPI有效的规避了该问题。
附图说明
图1为本发明的主从设备模块结构示意图;
图2为本发明的SPI主设备和从设备连接示意图;
图3为本发明的两线SPI软件配置的流程图;
图4为本发明的两线SPI握手示意图;
图5为本发明的两线SPI数据传输图。
具体实施方式
为了更好地了解本发明的目的、结构及功能,下面结合附图,对本发明一种两线SPI的通信系统及方法做进一步详细的描述。
本发明提供了一种两线SPI通信系统及方法以此来减少SPI所需要的IO。两线SPI所用到的信号线为:①SCK时钟信号线②DATA数据信号线。SCK为数据传输用到的时钟信号,由SPI 主设备产生;DATA为数据线,支持主设备到从设备和从设备到主设备的双向传输。
为确定SPI主从设备的传输方向并确保主从设备都已处于可以传输的状态,本发明引入了主从设备握手的机制。握手的过程位于每次数据传输之前。握手信号包括主设备发送的请求信号、主设备发送的读写控制信号以及从设备发送的回应信号。主设备和从设备握手期间的SCK信号根据CPOL的配置处于高电平或低电平状态。
握手信号由SPI内部的spi clk驱动产生,spi clk为SPI内部的时钟,一般来自于系统总线的时钟。由于SPI主从设备分别属于不同的系统,主设备和从设备的spi clk同频但不同步。为保证主从设备能够正确采样到对方的握手信号,本发明规定两线SPI握手信号电平宽度至少为三个spi clk时钟周期。握手信号电平宽度可通过软件配置。
具体的握手方式如下:
主设备使能后先后发出高电平信号和低电平信号,紧接着发出读写控制信号,高电平代表主设备向从设备传输,低电平表示从设备向主设备传输。主设备发完读写控制信号后不再驱动DATA线,等待从设备回应请求。
从设备在使能后始终采样DATA线上的变化,在采样到高低电平的跳变后再采样读写控制信号,从设备可根据目前的状态选择是否接受主设备的请求。当从设备可以接受主设备的请求时从设备驱动DATA线先后发送高电平信号和低电平信号。当从设备无法接受主设备的请求时,从设备驱动DATA线先后发送低电平信号和高电平信号。
主设备根据采样到的回应信号判断是否可以开始数据传输,若从设备可以接受,SCK时钟信号线和DATA数据信号线上随即开始数据传输。若从设备无法接受,主设备可以产生错误中断信号,等待CPU来处理。
图1是SPI所在主从设备系统的框架图,包括CPU,总线,SPI模块,GPIO模块以及系统上其他的外设。在SPI的使用场景下,CPU主要用于SPI寄存器的配置,SPI模块用于将发送的数据转换成SPI的协议并通过GPIO模块发出。
如图2所示,GPIO模块的行为可以抽象化为一个三态门。GPIO模块上使用到的信号为输出使能信号oe(高电平有效),数据输出信号data out和数据输入信号data in。根据图3所示的两线SPI配置流程,在从设备使能后从设备内部输出使能信号oe拉低,数据输出信号data out上持续监测DATA线上的信号,等待主设备发送握手信号和读写控制信号。主设备使能后将输出使能信号oe拉高,开始发送握手信号和读写控制信号。主设备发送完成后随即将输出使能信号oe拉低,接收从设备的回应信号;从设备在识别了握手信号和读写控制信号后将oe信号拉高,发送回应信号。
图3是SPI软件配置流程图。两线SPI的使用方式与标准SPI一致,在两线SPI配置完成并使能之后,软件只需查询发送FIFO非空状态位和接收FIFO非满状态位,并持续向数据寄存器中写入数据即可。相比于标准SPI,两线SPI可能出现握手失败的情况,握手失败的原因如下:①主设备请求向从设备接收数据,从设备的发送FIFO为空,无法发送数据,从设备发送握手失败信号。②主设备发送数据,请求从设备接收,从设备接收FIFO为满,无法接收数据,从设备发送握手失败信号。
图4是SPI成功握手的示例。假设时钟相位(CPHA)为0,IDLE状态和握手期间SCK一直保持为低电平。图中展示的是握手信号电平宽度为3个spi clk时钟周期的握手过程。主设备在使能后驱动DATA线对从设备发起请求,请求信号由一个高电平和一个低电平构成;发送完请求信号后主设备随即发送读写控制信号。为保证从设备不会因为亚稳态的原因采样到错误的请求信号和读写控制信号,本发明规定若握手信号电平宽度为n个spi clk时钟周期,n≥3,则采样信号的时间点为第n-1个spi clk的上升沿。以握手信号为三个spi clk时钟周期长度为例,对于DATA线上的握手信号,从设备每次都在第二个时钟沿采样DATA线上的数据(图4中第2,5,8个虚线处)。从设备在采样到主设备的请求信号后随即发送回应信号。主设备在采样从设备发送的回应信号时,同样也在第二个时钟沿采样。
图5是两线SPI完成握手并传输数据的过程。两线SPI在每次传输启动前都需要先由主设备发出请求信号和读写控制信号,在从设备正确响应后,主设备或从设备即可利用SCK和DATA线传输数据。
可以理解,本发明是通过一些实施例进行描述的,本领域技术人员知悉的,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等效替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明所保护的范围内。
Claims (9)
1.一种两线SPI通信系统,包括主设备和从设备,所述主设备和从设备都包括CPU、总线、SPI模块和GPIO模块,在SPI的使用场景下,所述CPU用于SPI寄存器的配置,所述SPI模块用于将发送的数据转换成SPI的协议并通过GPIO模块发出,其特征在于,所述主设备和从设备的SPI通信线由SCK时钟信号线和DATA数据信号线组成,所述SCK时钟信号线用于将主设备产生的时钟同步给从设备;所述DATA数据信号线用于主设备到从设备和从设备到主设备的双向传输。
2.根据权利要求1所述的两线SPI通信系统,其特征在于,所述主设备和从设备通过握手信号进行通信,所述握手信号包括主设备发送的请求信号、主设备发送的读写控制信号以及从设备发送的回应信号。
3.根据权利要求2所述的两线SPI通信系统,其特征在于,主设备和从设备握手期间的SCK信号根据CPOL的配置处于高电平或低电平状态。
4.根据权利要求2所述的两线SPI通信系统,其特征在于,所述握手信号由SPI内部的spi clk驱动产生,所述spi clk为SPI内部的时钟,来自于系统总线的时钟,所述主设备和从设备的spi clk同频但不同步,两线SPI的握手信号电平宽度至少为三个spi clk时钟周期,所述握手信号电平宽度通过软件配置。
5.一种如权利要求1-4任一项所述的两线SPI通信系统的通信方法,其特征在于,包括如下步骤:
步骤1:主设备使能后先后发出高电平信号和低电平信号,紧接着发出读写控制信号,高电平代表主设备向从设备传输,低电平表示从设备向主设备传输,主设备发完读写控制信号后不再驱动DATA线,等待从设备回应请求;
步骤2:从设备在使能后始终采样DATA线上的变化,在采样到高低电平的跳变后再采样读写控制信号,从设备根据目前的状态选择是否接受主设备的请求,当从设备可以接受主设备的请求时从设备驱动DATA线先后发送高电平信号和低电平信号;当从设备无法接受主设备的请求时,从设备驱动DATA线先后发送低电平信号和高电平信号;
步骤3:主设备根据采样到的回应信号判断是否可以开始数据传输,若从设备可以接受,SCK时钟信号线和DATA数据信号线上随即开始数据传输;若从设备无法接受,主设备产生错误中断信号,等待CPU来处理。
6.根据权利要求5所述的通信方法,其特征在于,所述GPIO的行为为一个三态门,GPIO上使用到的信号包括输出使能信号oe、数据输出信号data out和数据输入信号data in,输出使能信号oe为高电平有效,在从设备使能后从设备内部输出使能信号oe拉低,数据输出信号data out上持续监测DATA线上的信号,等待主设备发送握手信号和读写控制信号;主设备使能后将输出使能信号oe拉高,开始发送握手信号和读写控制信号,主设备发送完成后随即将输出使能信号oe拉低,接收从设备的回应信号;从设备在识别了握手信号和读写控制信号后将输出使能信号oe拉高,发送回应信号。
7.根据权利要求5所述的通信方法,其特征在于,两线SPI的使用方式与标准SPI一致,在两线SPI配置完成并使能之后,软件只需查询发送FIFO非空状态位和接收FIFO非满状态位,并持续向数据寄存器中写入数据即可。
8.根据权利要求5所述的通信方法,其特征在于,所述主设备和从设备通过握手信号进行通信,主设备在使能后驱动DATA线对从设备发起请求,请求信号由一个高电平和一个低电平构成,发送完请求信号后主设备随即发送读写控制信号,所述握手信号电平宽度为n个spi clk时钟周期,n≥3,则采样信号的时间点为第n-1个spi clk的上升沿,对于DATA线上的握手信号,从设备每次都在第二个时钟沿采样DATA线上的数据,从设备在采样到主设备的请求信号后随即发送回应信号,主设备在采样从设备发送的回应信号时,同样也在第二个时钟沿采样。
9.根据权利要求5所述的通信方法,其特征在于,两线SPI在每次传输启动前先由主设备发出请求信号和读写控制信号,在从设备正确响应后,主设备或从设备即利用SCK和DATA线传输数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310000677.4A CN116126771A (zh) | 2023-01-03 | 2023-01-03 | 一种两线spi的通信系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310000677.4A CN116126771A (zh) | 2023-01-03 | 2023-01-03 | 一种两线spi的通信系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116126771A true CN116126771A (zh) | 2023-05-16 |
Family
ID=86311181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310000677.4A Pending CN116126771A (zh) | 2023-01-03 | 2023-01-03 | 一种两线spi的通信系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116126771A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251403A (zh) * | 2023-11-08 | 2023-12-19 | 北京紫光芯能科技有限公司 | 一种spi协议主从设备的通讯模式配置方法及装置 |
-
2023
- 2023-01-03 CN CN202310000677.4A patent/CN116126771A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251403A (zh) * | 2023-11-08 | 2023-12-19 | 北京紫光芯能科技有限公司 | 一种spi协议主从设备的通讯模式配置方法及装置 |
CN117251403B (zh) * | 2023-11-08 | 2024-05-14 | 北京紫光芯能科技有限公司 | 一种spi协议主从设备的通讯模式配置方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7328399B2 (en) | Synchronous serial data communication bus | |
US4807109A (en) | High speed synchronous/asynchronous local bus and data transfer method | |
KR101812835B1 (ko) | 직렬 인터페이스 | |
EP2867780B1 (en) | Device disconnect detection | |
CN102023956B (zh) | 集成电路芯片中串行外设从器件接口结构及数据读写方法 | |
US20140006654A1 (en) | Device connect detection | |
CN102819512A (zh) | 一种基于spi的全双工通信装置及其方法 | |
JPH02227765A (ja) | デジタル・コンピユータのデータ転送装置 | |
JPH0646041A (ja) | 同期直列インターフェイスの再同期化方法及び回路 | |
CN108255776B (zh) | 一种兼容apb总线的i3c主设备、主从系统及通信方法 | |
JPS62155651A (ja) | 同期ハンドシエイク発生のための方法及び装置 | |
US11567893B2 (en) | Method and a mirrored serial interface (MSI) for transferring data | |
CN100592730C (zh) | 适用于高性能无线局域网的混合式数据传输装置和方法 | |
CN110851388A (zh) | 针对risc-v处理器的调试系统及调试信号传输方法 | |
CN107861893A (zh) | I3c验证从设备、主从设备的通信验证系统及方法 | |
JP3592547B2 (ja) | 情報処理装置および信号転送方法 | |
CN116126771A (zh) | 一种两线spi的通信系统及方法 | |
US6463494B1 (en) | Method and system for implementing control signals on a low pin count bus | |
CN102929830A (zh) | 一种软件模拟快速通信协议 | |
US6584536B1 (en) | Bus transaction accelerator for multi-clock systems | |
WO2024108795A1 (zh) | 功耗控制装置、方法及高速互连接口 | |
US20050169304A1 (en) | Information processing unit | |
CN115563049A (zh) | Spi发送模式赋值结构的实现方法 | |
KR101276837B1 (ko) | 서로 다른 동작 주파수로 동작하는 프로세서 시스템 간의 통신을 지원하기 위한 장치 | |
Warrier et al. | FPGA implementation of SPI To I2C bridge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |