CN115563049A - Spi发送模式赋值结构的实现方法 - Google Patents
Spi发送模式赋值结构的实现方法 Download PDFInfo
- Publication number
- CN115563049A CN115563049A CN202211283823.0A CN202211283823A CN115563049A CN 115563049 A CN115563049 A CN 115563049A CN 202211283823 A CN202211283823 A CN 202211283823A CN 115563049 A CN115563049 A CN 115563049A
- Authority
- CN
- China
- Prior art keywords
- data
- spi
- clock
- sck
- shift register
- 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/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明涉及SPI发送模式赋值结构的实现方法。SPI控制器在特定的时钟极性和相位下,主从设备在时钟不连续时待发送数据的加载。SPI控制器的串行时钟SCK支持四种时序,本发明针对其中的两种时序情况:时钟空闲时低电平且上升沿采样和时钟空闲时高电平且下降沿采样。在这两种时序下,当发送端首次发送数据以及时钟不连续时发送数据等两种情况,在检测到总线写控制信号有效且SPI不忙的时候,通过该结构异步加载待发送数据到发送缓冲器中,从而实现数据的持续发送。本发明设计的SPI发送端的赋值结构,支持目前所有的主流SPI传输协议,设计简单,同时满足SPI的连续和不连续的数据发送。
Description
技术领域
本发明属于集成电路设计技术领域,具体地说是一种SPI发送模式赋值结构的实现方法。
背景技术
串行外设接口SPI,由摩托罗拉公司于1979年开发,是一种常用的短程同步串行通讯方式。SPI接口支持半双工和全双工两种工作方式,具有高速传输的优点,传输速度高达几十兆赫兹,通常用于单片机系统与E2PROM、ADC等外设的高速连接。
现有的数据发送方式,在串行时钟SCK不连续时,由于无法快速预加载待发送数据会导致数据传输速率降低。
发明内容
本发明在串行外设接口SPI的通信中,针对时钟空闲为高电平时下降沿采样数据,上升沿发送数据,以及时钟空闲为低电平时上升沿采样数据,下降沿发送数据这两种时序,在发送首个数据或时钟不连续的情况下,提出了异步加载待发送数据的一种方法,即一种SPI发送模式赋值结构的实现方法。
SPI的串行时钟SCK由时钟极性CPOL和时钟相位CPHA共同控制,有四种可能的时序关系。CPOL置“1”表示空闲状态SCK为高电平,置“0”表示空闲状态SCK为低电平。CPHA置“1”表示SCK的第二个沿采样数据并锁存,CPHA置“0”表示SCK的第一个沿采样数据并锁存。当第一个沿采样并锁存数据时,在时钟不连续的情况下或者发送首个数据时,需要通过异步置位方式将发送缓冲器中的数据提前加载到移位寄存器中,从而实现数据的连续发送。
本发明采用如下技术方案:SPI发送模式的赋值结构,采用寄存器,用于根据异步置位信号实现数据的加载与发送,其中:
复位Rstn,用于清零移位寄存器,低电平有效;
发送缓冲器SPI_DR,用于寄存下一个待发送数据;
移位寄存器Shift_Reg,用于在SCK的输出沿控制下,移位输出待发送的数据;
其他控制逻辑OtherControlLogic,用于逻辑控制,包含CRC、DMA和数据位宽的控制逻辑。
所述移位寄存器Shift_Reg为移位寄存器Shift_Reg_MTx或者移位寄存器Shift_Reg_STx;
所述移位寄存器Shift_Reg_MTx,用于主设备在SCK的输出沿控制下,移位输出待发送的数据;
所述移位寄存器Shift_Reg_STx,用于从设备在SCK的输出沿控制下,移位输出待发送的数据;
所述其他控制逻辑OtherControlLogic包括:
DFF数据位宽,用于8或16位数据选择;
LSBFIRST帧格式选择,用于控制数据先发送MSB或LSB;
TXE发送缓冲器空标志,用于数据以及CRC的加载控制;
CRCNEXT_DMA,DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制;
CRCNEXT,非DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制。
所述异步置位信号包括:
时钟信号的相位和极性MO,用于时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
时钟信号的相位和极性M3,用于时钟空闲为高电平时下降沿采样数据,上升沿发送数据;
cnt_sck_neg_s,用于从设备SCK下降沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
cnt_sck_psg_s,用于从设备SCK上升沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
SPI总线写信号SPI_DR_Wr;
SPI忙信号BSY,高电平表示数据传输中;
MSTR,高电平时为主设备,反之为从设备,用于设备主从的选择。
SPI发送模式赋值结构的实现方法,用于主设备,包括以下步骤:
主设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
在发送第一个数据或时钟不连续的情况下,当检测到总线写信号有效且SPI不忙时,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_MTx,之后在SCK的控制下移位输出。
SPI发送模式赋值结构的实现方法,用于从设备,包括以下步骤:
从设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
在发送第一个数据或时钟不连续的时候,当检测到总线写信号有效且从设备SCK上升沿计数器cnt_sck_psg_s和SCK下降沿计数器cnt_sck_neg_s数值均为0的情况下,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_STx,之后在SCK的控制下移位输出。
本发明具有以下有益效果及优点:
1.对于SPI发送设备,由于是采用异步置位,在发送第一个数据或者时钟不连续的情况下,可以提前将发送缓冲器中的待发送数据加载到移位寄存器,并在随后的SCK发送沿(上升沿采样时下降沿发送数据,下降沿采样时上升沿发送数据)将数据移位发送出去。
2.本发明设计的SPI发送端的赋值结构,支持目前所有的主流SPI传输协议,设计简单,同时满足SPI的连续和不连续的数据发送。
附图说明
图1本发明的主设备发送数据MO和M3模式时的逻辑示意图;
图2为从设备发送数据MO和M3模式时的逻辑示意图。
具体实施方式
以下依据附图对此发明进行具体阐释。
本发明涉及SPI控制器在特定的时钟极性和相位下,主从设备在时钟不连续时待发送数据的加载。SPI控制器的串行时钟SCK支持四种时序,本发明针对其中的两种时序情况:时钟空闲时低电平且上升沿采样和时钟空闲时高电平且下降沿采样。在这两种时序下,当发送端首次发送数据以及时钟不连续时发送数据等两种情况,在检测到总线写控制信号有效且SPI不忙的时候,通过该结构异步加载待发送数据到发送缓冲器中,从而实现数据的持续发送。
本发明的SPI发送模式的赋值结构,为异步置位结构,包括:
复位Rstn,低电平有效,用于清零移位寄存器。
发送缓冲器SPI_DR,用于寄存下一个待发送数据;
移位寄存器Shift_Reg_MTx,用于主设备在SCK的输出沿控制下,移位输出待发送的数据;
移位寄存器Shift_Reg_STx,用于从设备在SCK的输出沿控制下,移位输出待发送的数据;
MSTR主或从控制;
时钟信号的相位和极性MO,时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
时钟信号的相位和极性M3,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;
cnt_sck_neg_s,从设备SCK下降沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
cnt_sck_psg_s,从设备SCK上升沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
SPI总线写信号SPI_DR_Wr;
SPI忙信号BSY,高电平表示数据传输中;
其他控制逻辑OtherControlLogic,包含数据位宽DFF,用于8或16位数据选择;LSBFIRST帧格式选择,用于控制数据先发送MSB或LSB;TXE发送缓冲器空标志,用于数据以及CRC的加载控制;CRCNEXT_DMA,DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制;CRCNEXT,非DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制。
本发明的实现步骤如下:
主设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;在发送第一个数据或时钟不连续的时候,由于没有对应的数据发送沿,本设计采用了图1和图2所示的数据加载方式,当检测到总线写信号有效且SPI不忙时,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_MTx,之后在SCK的控制下移位输出。
从设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;在发送第一个数据或时钟不连续的时候,由于没有对应的数据发送沿,本设计采用了图1和图2所示的数据加载方式,当检测到总线写信号有效且从设备SCK上升沿计数器cnt_sck_psg_s和SCK下降沿计数器cnt_sck_neg_s数值均为0的情况下,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_STx,之后在SCK的控制下移位输出。
本发明的主或从设备数据发送端的异步置位待发送数据的设计思想如图1和图2所示的主从设备数据发送端异步置位结构图,SPI工作在第一个时钟沿采样数据的两种工作模式时(即CPOL=1或CPOL=0,CHPA=0):
在发送首个数据或串行时钟SCK不连续的时候,SPI设备在串行时钟SCK的采样沿到来之前,提前通过异步置位的方式将发送缓冲器中的待发送数据加载到移位寄存器中,主设备一侧判断条件为MSTR&&(M0||M3)&&SPI_DR_Wr&&!BSY:既主设备,MO(或M3)模式下,SPI不忙的时候(第一个数据写入时或SCK时钟不连续)将发送缓冲器中的待发送数据加载到移位寄存器中,从而发出第一位数据(MSB或LSB),在随后的下降沿(或上升沿)移位输出剩余的7或15位数数据(一般SPI的数据格式为8位或16位);从设备一侧判断条件为!MSTR&&SPI_DR_Wr(M0||M3)&&(cnt_sck_neg_s==5'd0)&&(cnt_sck_psg_s==5'd0):既从设备,MO(或M3)模式下,SPI不忙的时候(第一个数据写入时或SCK时钟不连续,既SCK的上升沿计数器和下降沿计数器数值同时为0时)将发送缓冲器中的待发送数据加载到移位寄存器中,从而发出第一位数据(MSB或LSB),在随后的下降沿(或上升沿)移位输出剩余的7或15位数数据。如果使用CRC,当CRCNEXT_DMA或CRCNEXT高电平有效时,当最后一个数据传输完成后,传输CRC数据。
Claims (6)
1.SPI发送模式的赋值结构,其特征在于,采用寄存器,用于根据异步置位信号实现数据的加载与发送,其中:
复位Rstn,用于清零移位寄存器,低电平有效;
发送缓冲器SPI_DR,用于寄存下一个待发送数据;
移位寄存器Shift_Reg,用于在SCK的输出沿控制下,移位输出待发送的数据;
其他控制逻辑OtherControlLogic,用于逻辑控制,包含CRC、DMA和数据位宽的控制逻辑。
2.根据权利要求1所述的SPI发送模式的赋值结构,其特征在于,所述移位寄存器Shift_Reg为移位寄存器Shift_Reg_MTx或者移位寄存器Shift_Reg_STx;
所述移位寄存器Shift_Reg_MTx,用于主设备在SCK的输出沿控制下,移位输出待发送的数据;
所述移位寄存器Shift_Reg_STx,用于从设备在SCK的输出沿控制下,移位输出待发送的数据。
3.根据权利要求1所述的SPI发送模式的赋值结构,其特征在于,所述其他控制逻辑OtherControlLogic包括:
DFF数据位宽,用于8或16位数据选择;
LSBFIRST帧格式选择,用于控制数据先发送MSB或LSB;
TXE发送缓冲器空标志,用于数据以及CRC的加载控制;
CRCNEXT_DMA,DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制;
CRCNEXT,非DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制。
4.根据权利要求1所述的SPI发送模式的赋值结构,其特征在于,所述异步置位信号包括:
时钟信号的相位和极性MO,用于时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
时钟信号的相位和极性M3,用于时钟空闲为高电平时下降沿采样数据,上升沿发送数据;
cnt_sck_neg_s,用于从设备SCK下降沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
cnt_sck_psg_s,用于从设备SCK上升沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
SPI总线写信号SPI_DR_Wr;
SPI忙信号BSY,高电平表示数据传输中;
MSTR,高电平时为主设备,反之为从设备,用于设备主从的选择。
5.SPI发送模式赋值结构的实现方法,其特征在于,用于主设备,包括以下步骤:
主设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
在发送第一个数据或时钟不连续的情况下,当检测到总线写信号有效且SPI不忙时,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_MTx,之后在SCK的控制下移位输出。
6.SPI发送模式赋值结构的实现方法,其特征在于,用于从设备,包括以下步骤:
从设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
在发送第一个数据或时钟不连续的时候,当检测到总线写信号有效且从设备SCK上升沿计数器cnt_sck_psg_s和SCK下降沿计数器cnt_sck_neg_s数值均为0的情况下,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_STx,之后在SCK的控制下移位输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211283823.0A CN115563049A (zh) | 2022-10-20 | 2022-10-20 | Spi发送模式赋值结构的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211283823.0A CN115563049A (zh) | 2022-10-20 | 2022-10-20 | Spi发送模式赋值结构的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115563049A true CN115563049A (zh) | 2023-01-03 |
Family
ID=84767391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211283823.0A Pending CN115563049A (zh) | 2022-10-20 | 2022-10-20 | Spi发送模式赋值结构的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115563049A (zh) |
-
2022
- 2022-10-20 CN CN202211283823.0A patent/CN115563049A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10198382B2 (en) | 12C bus controller slave address register and command FIFO buffer | |
US6925512B2 (en) | Communication between two embedded processors | |
EP2097828B1 (en) | Dmac to handle transfers of unknown lengths | |
JP3636157B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
US20040073697A1 (en) | Data transfer control device, electronic equipment, and data transfer control method | |
CN102023956A (zh) | 集成电路芯片中串行外设从器件接口结构及数据读写方法 | |
CN102841869B (zh) | 一种基于fpga的多通道i2c控制器 | |
EP3323051B1 (en) | Spi interface with less-than-8-bit bytes and variable packet size | |
US7337382B2 (en) | Data transfer control device, electronic instrument, and data transfer control method | |
US11630796B2 (en) | Serial peripheral interface (SPI) automatic register address incrementation across data frames | |
CN110188059A (zh) | 数据有效位统一配置的流控式fifo缓存结构及方法 | |
US7469304B2 (en) | Data transfer control device, electronic equipment, and method for a data transfer through a bus, the data transfer control device including a register and a packet buffer that are commonly used during a host operation and a peripheral operation | |
CN112328523A (zh) | 传输双倍速率信号的方法、装置及系统 | |
CN115563049A (zh) | Spi发送模式赋值结构的实现方法 | |
CN116192624A (zh) | 通信接口的配置方法和通信接口 | |
CN111026691A (zh) | 基于apb总线的owi通讯设备 | |
CN110659236B (zh) | 可自主回复写应答的axi总线传输装置 | |
CN112835834B (zh) | 数据传输系统 | |
US5701546A (en) | Parallel interface circuit having a n-byte buffer and tansmitting the n byte data on a byte-by-byte basis in response to interrupt request signal | |
Warrier et al. | FPGA implementation of SPI To I2C bridge | |
CN110389919B (zh) | 基于risc-v处理器的异步收发传输器外设及系统 | |
CN112667533B (zh) | 包括子系统接口的半导体设备及其通信方法 | |
CN116149453A (zh) | 控制器、电子设备和数据传输系统 | |
KR960007836B1 (ko) | 트랜스퓨터 링크용 링크 어댑터 제어장치 | |
CN115729863A (zh) | 数据传输方法、装置、电子设备及介质 |
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 |