xiaoyuzhou1228

加密芯片SPI通讯的调试

0
阅读(386) 评论(22)

SPI是串行外设接口(Serial Peripheral Interface)的缩写。是Motorola公司推出的一种同步串行接口技术,是一种高速的、全双工,同步的通信总线。

SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线:它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。

(1)SDO/MOSI——主设备数据输出,从设备数据输入;

(2)SDI/MISO——主设备数据输入,从设备数据输出;

(3)SCLK——时钟信号,由主设备产生;

(4)CS/SS——从设备使能信号,由主设备控制。

CS作为片选信号不难理解。当总线上挂有多个从设备时,主机通过控制对应从设备的片选信号,即可选中激活该设备,完成与该设备的通讯。一般片选为低电平时,处于选中状态。

需要说明的是,SPI通信有4种不同的模式,不同的从设备可能在出厂时就是配置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式,具体如下:

Mode0:CPOL=0,CPHA=0

Mode1:CPOL=0,CPHA=1

Mode2:CPOL=1,CPHA=0

Mode3:CPOL=1,CPHA=1

时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA是用来配置数据采样是在第几个边沿。

作为特殊应用的加密芯片来说,其SPI通讯大多数采用标准SPI接口协议,但也不乏例外,调试过程中有几点注意:

1、加密芯片作为防盗版功能模块或者是数据加解密模块,大多数需作为SPI从机设备,上位机端作为SPI主机。

2、主机SPI设置成CKPOL=0 ,CKPHA=0。其含义:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。

3、有些加密芯片协议特殊,而且由于SPI没有同步信号功能,所以加密芯片需要借助BUSY引脚来给主机发送通知信号,当BUSY为高电平,允许SPI主设备发送数据,反之允许主机接收数据。

4、BUSY为SPI请求信号。当BUSY拉低时允许SPI主设备读取数据,此时SPI主机端将CS/SS拉低,SPI_CLK产生时钟。 

5、芯片发生故障无法正常运行时可通过复位重置。


  1. 的确是这样的,据我了解他们家的加密芯片的研发费用每年都是投入几百万的,而且有十几年研发芯片的根基,实力还是很雄厚的。

  2. @kessy1   

    求楼楼推荐一款支持spi通讯的加密芯片?我想详细的了解一下

    首推你了解下 LKT系列加密芯片,他们家有自主研发的COS操作系统,安全系数是国密级别的,而且还可以定制加密芯片和加密芯片的通讯方式

  3. 求楼楼推荐一款支持spi通讯的加密芯片?我想详细的了解一下

  4. 确实存在从设备出厂时就是某一种模式并且不能修改的情况,但是主设备通常是可以修改的。也可以让主设备设置成和从设备一致,某些是固定了只支持主模式或从模式,有些是两个都支持,这个没有说非得怎么样,具体看芯片资料

  5. SPI通信有4种不同的模式,不同的从设备可能在出厂时就是配置为某种模式,这是不能改变的,也就是说主设备和从设备在出厂时就已经确定某种模式了吗?根据需要可以定制是吗?

  6. 文中提到的SPI多了个BUSY引脚,具体的还是要看手册的,

  7. 文中说的“作为特殊应用的加密芯片来说,其SPI通讯大多数采用标准SPI接口协议”是指的哪些特殊应用的加密芯片?


  8. 总线上挂载多个IIC器件的话,可以通过器件地址确定与哪个器件通信;SPI的器件通信之前需要确定采用哪种模式来进行通信


  9. 又一次领教了楼主的渊博学识,点个大大的赞!

  10. @pennysam   
    @pennysam   
    @Jinghua   

    1、看了之前的几个文章,spi、uart、iic 哪种接口速度最快?

    2、接口与加密没有关系吧?如果工控设备,选用哪种最合适?

    3、SPI的几个接口基本明白,SPI_CLK产生时钟,这个时钟意味着或者影响着什么呢?

    4、芯片发生故障无法正常运行时可通过复位重置,复位是什么操作?对SPI哪个引脚操作?

    5、当总线上挂有多个从设备时,不同的从设备可能在出厂时就是配置为某种模式,这是不能改变的,如果多个从设备模式不同,是不是主设备就无法协调了呢?

    6、CKPOL=0,CKPHA=0,如果为1,意味着什么?高电平转换+第2个数据沿吗?


    SPI 是同步串行同行,同步即为通信时从机使用主机提供的时钟。通信速率也将有时钟频率决定;CKPOL意为时钟极性,取值为0时意为时钟空闲为低电平;同理,取1时空闲低电平。CKPHA为时钟相位,取0时在sck第一个跳变沿采样;同理,为2时则在第二个跳变沿采样。两两组合可知SPI总共可配置成4种模式


    接口和加密没关系吗?哪个加密芯片没通讯接口啊。工控设备选用什么芯片,也是要看它有什么接口。


  11. @pennysam   
    @Jinghua   

    1、看了之前的几个文章,spi、uart、iic 哪种接口速度最快?

    2、接口与加密没有关系吧?如果工控设备,选用哪种最合适?

    3、SPI的几个接口基本明白,SPI_CLK产生时钟,这个时钟意味着或者影响着什么呢?

    4、芯片发生故障无法正常运行时可通过复位重置,复位是什么操作?对SPI哪个引脚操作?

    5、当总线上挂有多个从设备时,不同的从设备可能在出厂时就是配置为某种模式,这是不能改变的,如果多个从设备模式不同,是不是主设备就无法协调了呢?

    6、CKPOL=0,CKPHA=0,如果为1,意味着什么?高电平转换+第2个数据沿吗?


    SPI 是同步串行同行,同步即为通信时从机使用主机提供的时钟。通信速率也将有时钟频率决定;CKPOL意为时钟极性,取值为0时意为时钟空闲为低电平;同理,取1时空闲低电平。CKPHA为时钟相位,取0时在sck第一个跳变沿采样;同理,为2时则在第二个跳变沿采样。两两组合可知SPI总共可配置成4种模式


  12.  楼主都分享这文章了,毋庸置疑市面上肯定是有这种SPI通讯接口的加密芯片了,你可以看看lkt他家有没有,看他家广告打得,感觉产品很多是的


  13. 文中提到的加密芯片,有这种接口的加密芯片吗?

  14. 芯片的复位引脚,一般是器件独立于通信接口的引脚,文中讨论的复位操作也并非是对SPI引脚的操作。一般来说,复位的引脚和时序由器件的厂商规定,请参考相关产品手册。


  15. 如果有操作流程图和时序图就好了,看文字真的很累啊。