CN104714908B - 支持主从模式的spi接口 - Google Patents
支持主从模式的spi接口 Download PDFInfo
- Publication number
- CN104714908B CN104714908B CN201310684633.4A CN201310684633A CN104714908B CN 104714908 B CN104714908 B CN 104714908B CN 201310684633 A CN201310684633 A CN 201310684633A CN 104714908 B CN104714908 B CN 104714908B
- Authority
- CN
- China
- Prior art keywords
- data
- spi
- register
- spi interface
- slave
- 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.)
- Active
Links
Abstract
本发明公开了一种支持主从模式的SPI接口,包括:一控制寄存器,用于配置收发数据字节数、中断使能、从设备16字节使能、输出全零使能和主模式传输启动;一配置寄存器,用于配置主从模式选择、MSB/LSB选择、极性、相位和主模式时钟分频;一状态寄存器,用于寄存操作完成标志和中断标志;一从模式握手寄存器,仅在从模式下可见;同时作为一个字节的数据寄存器,用于寄存发送和接收从模式下,每次收发的首字节;一16字节数据寄存器,为16个可寻址数据寄存器,发送和接收共用,每次发送数据的同时,接收新的数据。本发明能够实现芯片与外部设备间全双工的,同步串行数据传送功能。
Description
技术领域
本发明涉及SPI(Serial Peripheral interface串行外围设备接口)接口领域,特别是涉及一种支持主从模式的SPI接口。
背景技术
SPI总线是Motorola公司推出的一种高速的,全双工,同步的通信总线。由于简单易用的特性,如今越来越多的芯片集成了这种通信协议,广泛的应用于通信电子、计算机技术领域。SPI接口主要应用在外围设置FLASHRAM(闪速存储器)、网络控制器、LCD(液晶屏幕)显示驱动器、A/D转换器和MCU(微控制器)等。
SPI模块使用4条线:串行时钟线(SCLK)、主设备输入/从设备输出数据线(MISO)、主设备输出/从设备输入数据线(MOSI)和低电平有效的从设备选择线(NSS)。在主设备输出时钟信号的驱动下,数据按位传输,MISO与MOSI同时传输,为全双工通信。
SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外接设备时钟相位和极性应该一致。
目前市场上主流SPI设备,传输速度一般为几Mbps(兆位/秒)。
发明内容
本发明要解决的技术问题是提供一种支持主从模式的SPI接口,能够实现芯片与外部设备间全双工的,同步串行数据传送功能。
为解决上述技术问题,本发明的支持主从模式的SPI接口,包括:
一链路层,用于数据输入和输出的传输;
一控制寄存器,与所述链路层相连接,用于配置收发数据字节数、中断使能、从设备16字节使能、输出全零使能和主模式传输启动;
一配置寄存器,与所述链路层相连接,用于配置主从模式选择、MSB/LSB(最高有效位/最低有效位)选择、极性、相位和主模式时钟分频;
一状态寄存器,与所述链路层相连接,用于寄存操作完成标志和中断标志;
一从模式握手寄存器,其输入端与一串转并接口的输出端相连接,其输出端与一并转串接口的输入端相连接,仅在从模式下可见;同时作为一个字节的数据寄存器,用于寄存发送和接收从模式下,每次收发的首字节;
一16字节数据寄存器,其输入端与所述串转并接口的输出端相连接,其输出端与所述并转串接口的输入端相连接,为16个可寻址数据寄存器,发送和接收共用,每次发送数据的同时,接收新的数据;
所述并转串接口,与所述链路层相连接,用于将并行数据转换为串行数据;
所述串转并接口用于将串行数据转换为并行数据。
所述配置寄存器在上电初始化过程中完成配置,在下电前不会二次更改。
所述从模式握手寄存器用于存放上一笔数据收发完成标志。
本发明能够实现MCU接口到SPI接口设备的数据,地址和控制信号的转化;实现芯片与外部设备间全双工的,同步串行数据传送功能;能够兼容市场上主流SPI产品,并且,在主从设备都是采用本发明SPI接口设计的前提下,主从对接,能够达到几十Mbps的传输速率。
本发明支持SPI主从模式,串口时钟频率可调,串口时钟极性和相位可调,串口MSB/LSB可调。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
附图1是所述支持主从模式的SPI接口结构框图。
具体实施方式
SPI接口通过4个引脚与外部器件相连:
MISO,主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
MOSI,主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
SCK,串口时钟,作为主设备的输出,从设备的输入。
SSn,从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,用来选中从设备。从设备只有在被选中的前提下,才能够接收主设备发送过来的时钟和数据。
传输格式:
SPI接口无论主从模式,均支持可配置的时钟极性(CPOL)和相位(CPHA)。CPOL决定端口时钟是正相还是反相;CPHA决定第一个还是第二个时钟沿采数据。主设备和从设备进行通信,时钟极性(CPOL)和相位(CPHA)必须保持一致。
CPHA=0传输:
SCK的第一个边沿用于对MISO和MOSI的数据进行采样。对有些设备而言,当从设备被选中时,第一个数据比特立刻有效。在这种模式下,第一个SCK边沿在SSn变低后半个时钟周期后发出。半个时钟周期后,SCK第二个边沿出现,第二个比特位传输到数据线上。同时第一个SCK周期采样到的比特移位到移位寄存器中。SCK重复8个周期发送一个字节数据。
CPHA=1传输:
有些设备要求第一个SCK边沿传输第一个数据位到数据线上,第二个时钟边沿采样数据。这种模式下,需要在开始传输操作之前设置CPHA为1。
第一个SCK边沿在SSn为低的半个SCK时钟周期后出现。第一个时钟边沿使从SPI设备传输第一个数据位到数据线上。半个SCK周期之后,第二个SCK边沿出现,此边沿用于主设备和从设备锁存数据。当第三个边沿发生时,上一个收到的数据位移位到SPI移位寄存器(即16字节数据寄存器)。同时,下一位数据被发送到SPI数据线上。
SPI接口主模式的波特率由所述配置模块(SPICFG)的CLK(时钟)控制分频系数,将CPU时钟分频后产生。SPI接口从模式的波特率由外接的主模式控制,最快可支持两倍系统时钟频率。
结合附图1所示,所述支持主从模式的SPI接口,包括:一链路层,一控制寄存器,一配置寄存器,一状态寄存器,一从模式握手寄存器,一16字节数据寄存器,一并转串接口,一串转并接口。
所述链路层,从模式的时钟为SCKs,从模式的片选输入为SSnS;主模式的时钟为SCKm,主模式的片选输出为SSnm。
所述控制寄存器(SPICTRL),共8个bit(比特),从高到低依次是:DBC[2:0],IRQEN,BULKOP,SL_DBC_16,TXb,SCGO。
DBC[2:0],Data数据计数器,用于指示一个SPI接口周期发送接收的数据数量。数值范围0到15。传输的字节数等于所述控制寄存器设置的数值加1。
IRQEN,SPI中断允许。0:不允许SPI中断;1:允许SPI中断。
BULKOP,BULK(块操作)模式允许。BULKOP=0,传输结束后SPI_S无效;BULKOP=1,SSn将保持直到BULKOP=0操作完成。BULK仅支持主(Master)模式。
SL_DBC_16,从模式下有效,传输最大字节数为17个,包括16个数据字节和一个握手字节。
TXb,当SPI接口工作于半双工模式,只接收,将输出数据线置为零。
SCGO,SPI传输启动。SCGO=0,SPI接口传输未启动;SCGO=1,启动SPI接口传输。SPI接口传输过程中对此位的写入操作无效。所述控制寄存器的其他位在传输中可以被修改。
所述配置寄存器,共6个bit,从高到低依次是:SLAVE,LSB,CPHA,CPOL,CLKDIV[1:0]。
SLAVE,为主从模式选择。SLAVE=0:选择SPI接口主模式;SLAVE=1,选择SPI从模式。
LSB,为MSB/LSB选择。LSB=0,MSB(Most Significant Bit)先发送;LSB=1,LSB(Least Significant Bit)先发送。
CPHA,为时钟相位。
CPOL,为时钟极性,控制没有数据传输时空闲状态电平。CPOL=0,为空闲时,时钟低电平;CPOL=1,为空闲时,时钟高电平。
CLKDIV,为SPI接口主模式时钟分频系数。其中,
00B为CPU时钟;
01B为CPU时钟2分频;
10B为CPU时钟4分频;
11B为CPU时钟8分频。
所述状态寄存器,共2个bit,从高到低依次是:SPI_INT,SCIP。
SPI_INT,为SPI接口中断请求标志。SPI_INT=0,为无SPI接口中断请求;SPI_INT=1,为SPI接口中断请求发生。该位由硬件置位,软件清0。
SCIP,为SPI接口传输状态位。SCIP=0,为SPI接口不在传输中;SCIP=1,为SPI接口传输中。当软件设置所述控制寄存器的SCGO位为1时,硬件自动设置SCIP为1,直到传输完成。硬件自动对SCIP进行置位和清零操作,软件通过读取SCIP获得SPI接口传输状态,以确定是否可以安全的读取数据,进行下一个命令操作。仅当此位为0时,软件才可以操作下一个SPI接口指令。
所述从模式握手寄存器,共8个bit,为SPISLBUFF[7:0]。
SPISLBUFF[7:0],为SPI从握手数据/缓冲;用于SPI接口从模式轮询状态数据或SPI接口从模式传输缓冲。SPI从模式传输时,SPISLBUFF[7:0]作为第一个数据传输,所述16字节数据寄存器中数据寄存器SPIDATA0中寄存的数据作为第二个数据传输。
16字节数据寄存器,SPIDATA0~15,每个寄存器8个bit。
SPIDATA0~15是16个可寻址数据寄存器,是SPI接口最重要的组成部分,发送和接收共用。它是串行移位结构,发送时,数据寄存器0,数据寄存器1,数据寄存器2…数据寄存器15的内容依次串行发出。同时,接收到的数据依次刷新数据寄存器0即SPIDATA0,数据寄存器1即SPIDATA1,数据寄存器2即SPIDATA2…数据寄存器15即SPIDATA15的内容。
图1中,“MOSIm/MISOs”,表示所述并转串接口,作为SPI主模式使用时,为主模式输出,从模式输入;作为SPI从模式使用时,为主模式输入,从模式输出。
“MISOm/MOSIs”,表示所述串转并接口,作为SPI主模式使用时,为主模式输入,从模式输出;作为SPI从模式使用时,为主模式输出,从模式输入。
以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (11)
1.一种支持主从模式的SPI接口,其特征在于,包括:
一链路层,用于数据输入和输出的传输;
一控制寄存器,与所述链路层相连接,用于配置收发数据字节数、中断使能、从设备16字节使能、输出全零使能和主模式传输启动;
一配置寄存器,与所述链路层相连接,用于配置主从模式选择、最高有效位MSB选择、最低有效位LSB选择、极性、相位和主模式时钟分频;
一状态寄存器,与所述链路层相连接,用于寄存操作完成标志和中断标志;
一从模式握手寄存器,其输入端与一串转并接口的输出端相连接,其输出端与一并转串接口的输入端相连接,仅在从模式下可见;同时作为一个字节的数据寄存器,用于寄存发送和接收从模式下,每次收发的首字节;
一16字节数据寄存器,其输入端与所述串转并接口的输出端相连接,其输出端与所述并转串接口的输入端相连接,为16个可寻址数据寄存器,发送和接收共用,每次发送数据的同时,接收新的数据;
所述并转串接口,与所述链路层相连接,用于将并行数据转换为串行数据;
所述串转并接口用于将串行数据转换为并行数据。
2.如权利要求1所述的SPI接口,其特征在于:所述配置寄存器在上电初始化过程中完成配置,在下电前不会二次更改。
3.如权利要求1所述的SPI接口,其特征在于:所述从模式握手寄存器用于存放上一笔数据收发完成标志。
4.如权利要求1所述的SPI接口,其特征在于:所述控制寄存器,共8个bit,从高到低依次是:DBC[2:0],IRQEN,BULKOP,SL_DBC_16,TXb,SCGO;其中,
DBC[2:0],为Data数据计数器,用于指示一个SPI接口周期发送接收的数据数量;数值范围为0到15;传输的字节数等于所述控制寄存器设置的数值加1;
IRQEN,为SPI中断允许;IRQEN=0,为不允许SPI中断;IRQEN=1,为允许SPI中断;
BULKOP,为块操作BULK模式允许;BULKOP=0,为传输结束后SPI_S无效;BULKOP=1,为从设备选择SSn将保持,直到BULKOP=0操作完成;块操作BULK仅支持主模式;
SL_DBC_16,为从模式下有效,传输最大字节数为17个,包括16个数据字节和一个握手字节;
TXb,当SPI接口工作于半双工模式,只接收,将输出数据线置为零;
SCGO,为SPI接口传输启动;SCGO=0,为SPI接口传输未启动;SCGO=1,为启动SPI接口传输;SPI接口传输过程中对此位的写入操作无效;所述控制寄存器的其他位在传输中可以被修改。
5.如权利要求1所述的SPI接口,其特征在于:所述配置寄存器,共6个bit,从高到低依次是:SLAVE,LSB,CPHA,CPOL,CLKDIV[1:0];其中,
SLAVE,为主从模式选择;SLAVE=0,为选择SPI接口主模式;SLAVE=1,为选择SPI从模式;
LSB,为最高有效位MSB/最低有效位LSB选择;LSB=0,MSB先发送;LSB=1,LSB先发送;
CPHA,为时钟相位;
CPOL,为时钟极性,控制没有数据传输时空闲状态电平;CPOL=0,为空闲时时钟低电平;CPOL=1,为空闲时时钟高电平;
CLKDIV,为SPI接口主模式时钟分频系数;其中,
00B为CPU时钟;
01B为CPU时钟2分频;
10B为CPU时钟4分频;
11B为CPU时钟8分频。
6.如权利要求1所述的SPI接口,其特征在于:所述状态寄存器,共2个bit,从高到低依次是:SPI_INT,SCIP;
SPI_INT,为SPI接口中断请求标志;SPI_INT=0,为无SPI接口中断请求;SPI_INT=1,为SPI接口中断请求发生;该位由硬件置位,软件清0;
SCIP,为SPI接口传输状态位;SCIP=0,为SPI接口不在传输中;SCIP=1,为SPI接口传输中。
7.如权利要求6所述的SPI接口,其特征在于:当软件设置所述控制寄存器的SCGO位为1时,硬件自动设置SCIP为1,直到传输完成;硬件自动对SCIP进行置位和清零操作,软件通过读取SCIP获得SPI接口传输状态,以确定是否能安全的读取数据,进行下一个命令操作;仅当此位为0时,软件才操作下一个SPI接口指令。
8.如权利要求1所述的SPI接口,其特征在于:所述从模式握手寄存器,共8个bit,表示为SPISLBUFF[7:0];SPISLBUFF[7:0]为SPI从握手数据或缓冲;用于SPI接口从模式轮询状态数据或SPI接口从模式传输缓冲;SPI从模式传输时,SPISLBUFF[7:0]作为第一个数据传输,所述16字节数据寄存器中数据寄存器SPIDATA0中寄存的数据作为第二个数据传输。
9.如权利要求1所述的SPI接口,其特征在于:所述16字节数据寄存器表示为,SPIDATA0~15,每个寄存器8个bit;SPIDATA0~15是16个可寻址数据寄存器,为串行移位结构,发送时,数据寄存器0,数据寄存器1,数据寄存器2…数据寄存器15的内容依次串行发出;同时,接收到的数据依次刷新数据寄存器0即SPIDATA0,数据寄存器1即SPIDATA1,数据寄存器2即SPIDATA2…数据寄存器15即SPIDATA15的内容。
10.如权利要求1所述的SPI接口,其特征在于:所述并转串接口,作为SPI主模式使用时,为主模式输出,从模式输入;作为SPI从模式使用时,为主模式输入,从模式输出。
11.如权利要求1所述的SPI接口,其特征在于:所述串转并接口,作为SPI主模式使用时,为主模式输入,从模式输出;作为SPI从模式使用时,为主模式输出,从模式输入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310684633.4A CN104714908B (zh) | 2013-12-13 | 2013-12-13 | 支持主从模式的spi接口 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310684633.4A CN104714908B (zh) | 2013-12-13 | 2013-12-13 | 支持主从模式的spi接口 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104714908A CN104714908A (zh) | 2015-06-17 |
CN104714908B true CN104714908B (zh) | 2017-12-19 |
Family
ID=53414258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310684633.4A Active CN104714908B (zh) | 2013-12-13 | 2013-12-13 | 支持主从模式的spi接口 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104714908B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068963A (zh) * | 2015-07-24 | 2015-11-18 | 北京兆易创新科技股份有限公司 | 串行收发控制电路及方法 |
CN106712807A (zh) * | 2017-01-22 | 2017-05-24 | 安徽大恒能源科技有限公司 | 一种用于电池板监控系统的16种频率数据传输方法 |
TW201915818A (zh) * | 2017-10-05 | 2019-04-16 | 香港商印芯科技股份有限公司 | 光學識別模組 |
TWI687815B (zh) * | 2018-12-10 | 2020-03-11 | 大陸商北京集創北方科技股份有限公司 | 資料發送方法、具有序列周邊介面之從屬裝置及資訊處理裝置 |
CN111966623A (zh) * | 2020-07-14 | 2020-11-20 | 西安爱生无人机技术有限公司 | Mcu与多个fpga使用spi进行实时全双工可靠通信的方法 |
CN111857594A (zh) * | 2020-07-22 | 2020-10-30 | 苏州元璟半导体技术有限公司 | 一种基于软件服务的外部存储器接口及其使用方法 |
CN112565036B (zh) * | 2020-11-24 | 2022-08-30 | 炬芯科技股份有限公司 | 数据传输方法、装置、存储介质及通信系统 |
CN112559426A (zh) * | 2020-12-15 | 2021-03-26 | 广州智慧城市发展研究院 | 数据传输方法、接口电路以及装置 |
CN112765079A (zh) * | 2021-01-20 | 2021-05-07 | 四川长虹电器股份有限公司 | 一种适应多种不同设备的spi总线控制方法 |
CN115168282B (zh) * | 2022-09-08 | 2022-12-02 | 江西萤火虫微电子科技有限公司 | 总线协议上配置数据处理方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1588337A (zh) * | 2004-09-15 | 2005-03-02 | 北京中星微电子有限公司 | 串行通信总线外部设备接口 |
CN1851682A (zh) * | 2006-03-28 | 2006-10-25 | 华为技术有限公司 | 一种串行外设接口的实现方法 |
CN102231143A (zh) * | 2011-07-04 | 2011-11-02 | 浙江大学 | 一种安全可复用spi外围接口电路 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7631232B2 (en) * | 2007-09-28 | 2009-12-08 | Inventec Corporation | Parallel burning system and method |
-
2013
- 2013-12-13 CN CN201310684633.4A patent/CN104714908B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1588337A (zh) * | 2004-09-15 | 2005-03-02 | 北京中星微电子有限公司 | 串行通信总线外部设备接口 |
CN1851682A (zh) * | 2006-03-28 | 2006-10-25 | 华为技术有限公司 | 一种串行外设接口的实现方法 |
CN102231143A (zh) * | 2011-07-04 | 2011-11-02 | 浙江大学 | 一种安全可复用spi外围接口电路 |
Non-Patent Citations (2)
Title |
---|
一种实用的多通道SPI接口设计;陈耿;《舰船电子工程》;20130420;全文 * |
基于MCUIP核的SPI接口ASIC设计及实现;苏伟禄等;《中国集成电路》;20111005;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104714908A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104714908B (zh) | 支持主从模式的spi接口 | |
CN202870808U (zh) | 一种spi串口模块的fpga实现装置 | |
CN102023956B (zh) | 集成电路芯片中串行外设从器件接口结构及数据读写方法 | |
CN104794088B (zh) | 一种多接口总线转换扩展芯片设计 | |
CN101087235A (zh) | 一种基于fpga的多功能通信接口转换设备和方法 | |
CN104424154B (zh) | 通用串行外围接口 | |
CN104142900A (zh) | 一种通信接口转换装置 | |
CN102243619A (zh) | 一种基于fpga实现多路i2c总线端口扩展的方法 | |
CN104156333A (zh) | 一种基于fpga的uart多接口扩展系统和方法 | |
WO2017011621A1 (en) | Spi interface with less-than-8-bit bytes and variable packet size | |
CN106933772A (zh) | 基于uart ip核的sci通讯方法 | |
CN102523310A (zh) | 多功能hart通信接口 | |
CN106789496A (zh) | 一种用于运载火箭的光纤惯组1553b通讯接口电路 | |
CN107643993A (zh) | 总线转换接口、总线转换接口的工作方法和通信设备 | |
CN106066838A (zh) | 基于fpga多路uart的扩展模件及扩展方法 | |
CN201336032Y (zh) | 一种软件模拟串行数据传输装置 | |
CN205103813U (zh) | 一种基于PCI接口的SpaceWire总线节点通讯模块 | |
CN206757602U (zh) | 一种基于SoC支持多个SPI接口标准组的装置 | |
CN103067240A (zh) | 四路串行总线与四路can总线转换电路 | |
CN105718410B (zh) | 一种基于fpga的lpc与spi及i2c转换适配器及其实现方法 | |
CN102123068A (zh) | 一种交调仪多总线通信系统 | |
CN202406141U (zh) | 一种防火墙 | |
CN208128284U (zh) | 一种基于s698pm的以太网转多路同步串口接口通讯设备 | |
CN205091734U (zh) | 一种基于CPCI接口的SpaceWire总线节点通讯模块 | |
CN105306421A (zh) | 一种基于pci-e接口的信号处理方法及信号处理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |