发明内容
为了克服SPI协议数据传输安全性方面的不足,并提高SPI接口电路的可复用性,本发明提供了一种安全可复用SPI***接口电路,能够大大提高数据传输的安全性,并提高了接口电路的可复用性,降低了成本。
本发明解决其技术问题所采用的技术方案为:
一种安全可复用SPI***接口电路,包括以下常规***接口电路模块:数据缓冲器,用于缓冲接收数据Rx_FIFO和发送数据Tx_FIFO;中断及DMA控制模块,用于支持两种不同的数据处理方式:中断方式和DMA方式;寄存器控制模块,用于配置寄存器和各模块间的时序控制;APB Slave 接口模块,用来基于APB总线跟CPU交互,实现接口电路寄存器的配置和工作状态的读取;时钟分频模块,用于生成2-256任意分频时钟给外部器件,实现波特率的灵活配置。
所使用的数据缓冲器由二块8深度、8宽度的FIFO组成,其中一块用于缓存接收数据Rx_FIFO,另外一块用于缓存发送数据Tx_FIFO。写操作是CPU配置写入Tx_FIFO或接口电路发出DMA请求有DMA从片内存储器搬运数据到Tx_FIFO,读操作是CPU读取Rx_FIFO或者接口电路发出DMA请求有DMA从Rx_FIFO搬运数据到片内存储器并发中断给CPU。
所使用的APB Slave 接口模块,支持32位的数据单元。
所述一种安全可复用SPI***接口电路还包括命令解析模块和安全传输模块:命令解析模块,用于接口电路工作模式为从模式时,解析主机发送来的命令。安全传输模块,包括发送电路和接收电路两部分,用于将传输数据进行串/并,并/串转换,利用CRC算法和ARQ技术保证传输数据的安全性。
所述命令解析模块在接口电路工作模式为从模式时,命令解析模块可以解析主机发送来的命令,这些操作主要包括,清除接收FIFO或者发送FIFO中的数据,选择DMA来作为数据交互的对象等,可以大大节省和CPU交互所需要的带宽。
作为一种优选方案:安全传输模块采用的CRC算法为CRC-CCITT码,其计算公式为:G(x)=x16+x12+x5+1,其中x为8位数据单元。循环冗余校验码码是一种效率极高的检错、纠错码,在数据通信领域中广泛使用. 考虑到SPI总线的特点, 采用了生成多项式为G(x)=x16+x12+x5+1的CRC-CCITT码, 它可以检验出所有的单位错和双位错、奇数位错、长度≦16位的突发错、99.997%的17位突发错和99.998%的18位或18位以上的错误, CRC-CCITT码失效的概率是 2-16=1.528x10-5。
进一步,安全传输模块采用的ARQ技术是ARQ技术中的停等式(stop-wait)ARQ, 如果发现传输错误,则进行安全处理,重新输入、 输出数据。停等式ARQ,发送方每发送一帧数据之后就必须停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一数据帧。该方法优点所需要的缓冲存储空间最小。
再进一步,安全传输模块包括发送电路和接收电路两部分,发送电路包括:并/串转换电路,CRC编码器;接收电路包括:串/并转换电路,CRC校验器,CRC编码器。
所述一种安全可复用SPI***接口电路支持主模式和从模式两种工作模式;可以通过外部引脚ms_mode来进行SPI 两种工作模式的切换,实现了端口和硬件资源的复用,节省了成本,增强了该接口电路的兼容性。ms_mode=0,工作模式为主模式,可以与外部从机进行通信。ms_mode=1,工作模式为从模式,可以与外部主机进行通信。
本发明的技术思路为:此SPI接口电路有常规***接口电路模块、命令解析模块和安全传输模块组成。其中常规***接口电路模块包括:数据缓冲器、中断及DMA控制模块、寄存器控制模块、APB Slave 接口模块、时钟分频模块。
该电路支持主模式和从模式两种工作模式;可以通过外部引脚ms_mode来进行SPI 两种工作模式的切换,实现了端口和硬件资源的复用,节省了成本,增强了该接口电路的兼容性。
本发明的有益效果:1、支持主从工作模式的切换,设置通信速率并能适用于不同传输模式的SPI***接口电路。2、增加了安全传输模块,利用CRC算法和ARQ技术保证传输数据的安全性。3、从模式下,命令解析模块可以解析主机发送来的命令,可以大大节省和CPU交互所需要的带宽。
附图说明
图1是本发明的安全可复用SPI***接口电路结构框图;
图2 (a)是CPHA=0时SPI接口传输时序图;
图2 (b) 是CPHA=1时SPI接口传输时序图;
图3是本发明的安全传输模块发送电路框图;
图4是本发明的安全传输模块接收电路框图;
图5是本发明的安全传输模块所用的CRC编码器原理图;
图6是本发明的安全传输模块所用的CRC校验器原理图;
图7是本发明的安全传输模块所用串/并电路的原理图;
图8是本发明的安全传输模块所用并/串电路的原理图;
图9是本发明的命令解析模块的工作流程图;
图10(a)是本发明的APB Slave接口框图;
图10(b)是本发明的APB Slave接口模块的写时序图;
图10(c)是本发明的APB Slave接口模块的读时序图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图10,一种安全可复用SPI***接口电路,包括以下常规***接口电路模块:数据缓冲器,用于缓冲接收数据Rx_FIFO和发送数据Tx_FIFO;中断及DMA控制模块,用于通知CPU或者DMA发送或接收数据;寄存器控制模块,用于配置寄存器和各模块间的时序控制; APB Slave 接口模块,用来基于APB总线跟CPU交互,实现接口电路寄存器的配置和接口电路工作状态的读取;时钟分频模块,用于生成2-256任意分频时钟给外部器件,实现波特率的灵活配置。安全传输模块, 包括发送电路和接收电路两部分,利用CRC算法和ARQ技术保证传输数据的安全性。命令解析模块,用于接口电路工作模式为从模式时,解析主机发送来的命令,这些操作主要包括,清除接收FIFO或者发送FIFO中的数据,选择DMA来作为数据交互的对象等,可以大大节省和CPU交互所需要的带宽。
所述安全可复用SPI***接口电路支持主模式和从模式两种工作模式;可以通过外部引脚ms_mode来进行SPI 两种工作模式的切换,实现了端口和硬件资源的复用,节省了成本,增强了该接口电路的兼容性。ms_mode=0,工作模式为主模式,可以与外部从机进行通信。ms_mode=1,工作模式为从模式,可以与外部主机进行通信。
本发明的安全可复用SPI电路是基于APB总线的设备,用来与片外设备进行串行通信,其结构框图如图1所示,其中ms_mode用来进行SPI工作模式进行切换的引脚,实现端口和硬件资源的复用,节省了成本。(1)ms_mode=0,工作模式为主模式,可以与外部从机进行通信。此时所使用到的引脚说明如下:m_ssn是给外部从器件的片选信号(低电平有效),m_sclk是给外部从器件的时钟,m_mosi是主机输出从机输入数据线,m_miso是主机输入从机输出数据线。(2)ms_mode=1,工作模式为从模式,可以与外部主机进行通信。此时所使用到的引脚说明如下:s_ssn是给外部主器件给出的片选信号(低电平有效),s_sclk是外部主器件给出的时钟,s_mosi是主机输出从机输入数据线,s_miso是主机输入从机输出数据线。
所述一种安全可复用SPI***接口电路为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设时钟相位和极性应该一致。CPOL和CPHA的不同设置指定了不同的SPI模式,时钟极性对传输格式没有影响。改变时钟极性只是改变了时钟信号是在上升沿还是下降沿作用,然而时钟相位的设置则决定了两种完全不同的传输时序。如下表所示:
SPI Mode
|
CPOL
|
CPHA
|
Shift SCK edge
|
Capture SCK edge
|
0 |
0 |
0 |
Falling |
Rising |
1 |
0 |
1 |
Rising |
Falling |
2 |
1 |
0 |
Rising |
Falling |
3 |
1 |
1 |
Falling |
Rising |
A)CPHA=0 and CPOL=0(Mode 0)and CPHA=0 and CPOL=1(Mode 1)
CPHA=0时的时序如图2(a)所示。图中分别给出了CPOL=0和CPOL=1时的时序波形。
B)CPHA=1 and CPOL=0(Mode 2)and CPHA=1and CPOL=1(Mode 3)
当CPHA=1时SPI的传输时序如图2(b)所示,分别给出了CPOL=0和CPOL=1时的时序波形。
以下结合图1的结构框图详细说明主要部件的功能及结构。
时钟分频模块:可以产生2-256任意分频的时钟给片外器件,实现波特率的灵活配置,时钟分频模块的偶分频通过上升沿触发的加法计数器实现,奇分频通过下降沿触发的加法计数器产生信号经过或门实现。
寄存器控制模块:用于配置寄存器和各模块间的时序控制。
中断及DMA控制模块:中断及DMA控制模块支持两种不同的数据处理模式:中断方式和DMA方式。中断方式通过向处理器发起中断请求,从而决定下一步动作;DMA方式由DMA模块控制数据在内存和接口电路间的交换,而不需要处理器核的参与,有效提高了总线利用率。
数据缓冲器:数据缓冲器有二块8深度、8宽度的FIFO组成,其中一块用于缓存接收数据Rx_FIFO,另外一块用于缓存发送数据Tx_FIFO。写操作是CPU配置写入Tx_FIFO或接口电路发出DMA请求有DMA从片内存储器搬运数据到Tx_FIFO,读操作是CPU读取Rx_FIFO或者接口电路发出DMA请求有DMA从Rx_FIFO搬运数据到片内存储器并发中断给CPU。
安全传输模块:本发明的安全传输模块包括发送电路和接收电路两部分。
安全传输模块发送电路框图如图3所示,发送电路包括:8位并/串转换电路,CRC编码器;具体的工作流程为:CPU配置写入Tx_FIFO或接口电路发出DMA请求有DMA从片内存储器搬运数据到Tx_FIFO,Tx_FIFO中的数据经过安全传输模块的发送电路后进行传输,在发送电路中,首先将Tx_FIFO的8位数据进行并/串转换电路转换为串行数据,然后经过CRC编码器进行编码后进行发送。
安全传输模块接收电路框图如图4所示,接收电路包括:串/并转换电路,CRC校验器,CRC编码器;具体的工作流程为:外部串行数据的数据帧包括8位传输数据和16位CRC码,前8位传输数据送入CRC校验器进行编码,同时进行串并转换后送入CRC校验器进行缓存,后16位CRC码经过串/并转换电路转换为并行数据后送入CRC校验器缓存,然后在CRC校验器中校验,如果校验正确,将数据送入Rx_FIFO,如果校验错误,返回CRC校验状态码,在停等式ARQ机制下重新输出。
安全传输模块所用的CRC编码器的原理图如图5所示,由3个异或门和15个D触发器构成。
安全传输模块的CRC校验器的原理图如图6所示。CRC校验器是为了数据传输的正确与否,实现CRC码的校验功能,其包括两个模块,即CRC校验码计算模块和CRC码比较模块。CRC计算模块同CRC编码器一致,不再赘述。这里主要介绍一下CRC比较模块。当接收方接收到数据帧的CRC字节时,将其写入比较器,一个16bit的寄存器,同时将CRC编码器中的计算结果输入CRC比较器,将两个数据进行异或运算,检验该数据包是否传送出错。其工作过程为:将接收到的数据存人接收缓存器,同时也送到CRC编码器中进行计算,当一个数据包接收完毕后,CRC编码器将生成的CRC校验码送入比较器中,同时,接收缓存器也将收到的CRC码送入比较器中,然后将两个值进行比较。如果内容相同,说明信息传送正确,清零出错标志位,将数据送入Rx_FIFO,如果校验错误,置位出错标志位,返回CRC校验状态码,在停等式ARQ机制下重新输出。
安全传输模块所用串/并电路的原理图如图7所示,采用移位寄存器实现。串行数据在时钟SCLK的同步下,逐位移入串行连接的D触发器中锁存,然后,这些数据在时钟PCLK的同步下被输入到并行连接的输出锁存器中,完成串行数据到并行数据的转换。
安全传输模块所用并/串转换电路的原理图如图7所示,有8个首尾相连的D触发器实现。并行数据在锁存脉冲En的作用下,并行写入8个D触发器,然后这8个D触发器首尾相连构成一个移位链,在移位时钟SClk的作用下,完成并行数据到串行数据的转换。
命令解析模块:本发明的命令解析模块的工作流程图如图9所示,其工作流程如图所示,命令解析模块可以解析主机发送来的命令,这些操作主要包括,清除接收FIFO或者发送FIFO中的数据,选择MCU或者DMA来作为数据交互的对象等,可以大大节省和CPU交互所需要的带宽。该命令解析模块可以通过CPU配置来屏蔽和开启,增强了硬件的兼容性。
APB Slave 接口模块:用来基于APB总线跟CPU交互,实现接口电路寄存器的配置和接口电路工作状态的读取。APB主要用于低带宽的周边外设之间的连接,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单。本发明的APB Slave接口模块框图如图10(a)所示,包括四个控制信号:PSEL,PADDR,PWRITE,PENABLE,另外还有时钟信号PCLK,复位信号PRESETn,读数据信号PRDATA和写数据信号PWDATA。本发明的APB Slave接口的写时序如图10(b)所示,写传输的第一个时钟周期为SETUP周期,第二个周期为ENABLE周期。在写传输的SETUP周期地址、写数据、写信号和选择信号在时钟上升沿之后的全部改变。在写传输的ENABLE周期,使能信号PENABLE信号生效,地址、数据和控制信号全都在整个ENABLE周期保持有效,传输在这个周期结束时完成。本发明的APB slave接口的写时序如图10(c)所示,地址、写、选择和选通信号都和写传输一样。在读传输的情况下,从机必须在ENABLE周期提供数据,数据在ENABLE周期末尾的时钟上升沿被采样。
综上所述,本发明的安全可复用SPI接口电路有三方面的优点.第一方面,支持主从工作模式的切换,设置通信速率并能适用于不同传输模式的SPI***接口电路,并提高了接口电路的可复用性,降低了成本。第二方面,增加了安全传输模块,利用CRC算法和ARQ技术,能够大大提高数据传输的安全性。第三方面,从模式下,命令解析模块可以解析主机发送来的命令,可以大大节省和CPU交互所需要的带宽。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明做出的任何修改和改变,都落入本发明的保护范围。