支持主从模式的spi接口的制作方法

文档序号:8395828阅读:1018来源:国知局
支持主从模式的spi接口的制作方法
【技术领域】
[0001]本发明涉及SPI (Serial Peripheral interface串行外围设备接口)接口领域,特别是涉及一种支持主从模式的SPI接口。
【背景技术】
[0002]SPI总线是Motorola公司推出的一种高速的,全双工,同步的通信总线。由于简单易用的特性,如今越来越多的芯片集成了这种通信协议,广泛的应用于通信电子、计算机技术领域。SPI接口主要应用在外围设置FLASHRAM (闪速存储器)、网络控制器、IXD (液晶屏幕)显示驱动器、A/D转换器和MCU (微控制器)等。
[0003]SPI模块使用4条线:串行时钟线(SCLK)、主设备输入/从设备输出数据线(MIS0)、主设备输出/从设备输入数据线(MOSI)和低电平有效的从设备选择线(NSS)。在主设备输出时钟信号的驱动下,数据按位传输,MISO与MOSI同时传输,为全双工通信。
[0004]SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=O,串行同步时钟的空闲状态为低电平;如果CPOL=I,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=O,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=I,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外接设备时钟相位和极性应该—致。
[0005]目前市场上主流SPI设备,传输速度一般为几Mbps(兆位/秒)。

【发明内容】

[0006]本发明要解决的技术问题是提供一种支持主从模式的SPI接口,能够实现芯片与外部设备间全双工的,同步串行数据传送功能。
[0007]为解决上述技术问题,本发明的支持主从模式的SPI接口,包括:
[0008]—链路层,用于数据输入和输出的传输;
[0009]一控制寄存器,与所述链路层相连接,用于配置收发数据字节数、中断使能、从设备16字节使能、输出全零使能和主模式传输启动;
[0010]一配置寄存器,与所述链路层相连接,用于配置主从模式选择、MSB/LSB (最高有效位/最低有效位)选择、极性、相位和主模式时钟分频;
[0011]一状态寄存器,与所述链路层相连接,用于寄存操作完成标志和中断标志;
[0012]—从模式握手寄存器,其输入端与一串转并接口的输出端相连接,其输出端与一并转串接口的输入端相连接,仅在从模式下可见;同时作为一个字节的数据寄存器,用于寄存发送和接收从模式下,每次收发的首字节;
[0013]一 16字节数据寄存器,其输入端与所述串转并接口的输出端相连接,其输出端与所述并转串接口的输入端相连接,为16个可寻址数据寄存器,发送和接收共用,每次发送数据的同时,接收新的数据;
[0014]所述并转串接口,与所述链路层相连接,用于将并行数据转换为串行数据;
[0015]所述串转并接口用于将串行数据转换为并行数据。
[0016]所述配置寄存器在上电初始化过程中完成配置,在下电前不会二次更改。
[0017]所述从模式握手寄存器用于存放上一笔数据收发完成标志。
[0018]本发明能够实现MCU接口到SPI接口设备的数据,地址和控制信号的转化;实现芯片与外部设备间全双工的,同步串行数据传送功能;能够兼容市场上主流SPI产品,并且,在主从设备都是采用本发明SPI接口设计的前提下,主从对接,能够达到几十Mbps的传输速率。
[0019]本发明支持SPI主从模式,串口时钟频率可调,串口时钟极性和相位可调,串口MSB/LSB 可调。
【附图说明】
[0020]下面结合附图与【具体实施方式】对本发明作进一步详细的说明:
[0021]附图是所述支持主从模式的SPI接口结构框图。
【具体实施方式】
[0022]SPI接口通过4个引脚与外部器件相连:
[0023]MIS0,主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
[0024]M0SI,主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
[0025]SCK,串口时钟,作为主设备的输出,从设备的输入。
[0026]SSn,从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,用来选中从设备。从设备只有在被选中的前提下,才能够接收主设备发送过来的时钟和数据。
[0027]传输格式:
[0028]SPI接口无论主从模式,均支持可配置的时钟极性(CPOL)和相位(CPHA)。CPOL决定端口时钟是正相还是反相;CPHA决定第一个还是第二个时钟沿采数据。主设备和从设备进行通信,时钟极性(CPOL)和相位(CPHA)必须保持一致。
[0029]CPHA=O 传输:
[0030]SCK的第一个边沿用于对MISO和MOSI的数据进行采样。对有些设备而言,当从设备被选中时,第一个数据比特立刻有效。在这种模式下,第一个SCK边沿在SSn变低后半个时钟周期后发出。半个时钟周期后,SCK第二个边沿出现,第二个比特位传输到数据线上。同时第一个SCK周期采样到的比特移位到移位寄存器中。SCK重复8个周期发送一个字节数据。
[0031]CPHA=I 传输:
[0032]有些设备要求第一个SCK边沿传输第一个数据位到数据线上,第二个时钟边沿采样数据。这种模式下,需要在开始传输操作之前设置CPHA为I。
[0033]第一个SCK边沿在SSn为低的半个SCK时钟周期后出现。第一个时钟边沿使从SPI设备传输第一个数据位到数据线上。半个SCK周期之后,第二个SCK边沿出现,此边沿用于主设备和从设备锁存数据。当第三个边沿发生时,上一个收到的数据位移位到SPI移位寄存器(即16字节数据寄存器)。同时,下一位数据被发送到SPI数据线上。
[0034]SPI接口主模式的波特率由所述配置模块(SPICFG)的CLK (时钟)控制分频系数,将CPU时钟分频后产生。SPI接口从模式的波特率由外接的主模式控制,最快可支持两倍系统时钟频率。
[0035]结合附图所不,所述支持主从模式的SPI接口,包括:一链路层,一控制寄存器,一配置寄存器,一状态寄存器,一从模式握手寄存器,一 16字节数据寄存器,一并转串接口,一串转并接口。
[0036]所述链路层,从模式的时钟为SCKs,从模式的片选输入为SSnS ;主模式的时钟为SCKm,主模式的片选输出为SSnm。
[0037]所述控制寄存器(SPICTRL),共8个bit (比特),从高到低依次是:DBC[2:0],IRQEN, BULKOP, SL_DBC_16, TXb, SCGO0
[0038]DBC [3:0], Data数据计数器,用于指示一个SPI接口周期发送接收的数据数量。数值范围O到15。传输的字节数等于所述控制寄存器设置的数值加I。
[0039]IRQEN,SPI中断允许。O:不允许SPI中断;1:允许SPI中断。
[0040]BULKOP, BULK (块操作)模式允许。BULKOP=O,传输结束后 SPI_S 无效;BULK0P=1,SSn将保持直到BULKOP=O操作完成。BULK仅支持主(Master)模式。
[0041]SL_DBC_16,从模式下有效,传输最大字节数为17个,包括16个数据字节和一个握手子节。
[0042]TXb,当SPI接口工作于半双工模式,只接收,将输出数据线置为零。
[0043]SCGO, SPI传输启动。SCG0=0,SPI接口传输未启动;SCGO=I,启动SPI接口传输。SPI接口传输过程中对此位的写入操作无效。所述控制寄存器的其他位在传输中可以被修改。
[0044]所述配置寄存器,共6个bit,从高到低依次是:SLAVE,LSB,CPHA,CPOL,CLKDIV[I:
O] O
[0045]SLAVE,为主从模式选择。SLAVE=O:选择SPI接口主模式;SLAVE=1,选择SPI从模式。
[0046]LSB,为 MSB/LSB 选择。LSB=O, MSB (Most Significant Bit)先发送;LSB=1,LSB(LeastSignificant Bit)先发送。
[0047]CPHA,为时钟相位。
[0048]CP0L,为时钟极性,控制没有数据传输时空闲状态电平。CPOL=O,为空闲时,时钟低电平;CP0L=1,为空闲时,时钟高电平。
[0049]CLKDIV,为SPI接口主模式时钟分频系数。其中,
[0050]OOB 为 CPU 时钟;
[0051 ]OlB为CPU时钟2分频;
[0052]1B为CPU时钟4分
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1