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、芯片发生故障无法正常运行时可通过复位重置。

加密芯片SPI通讯的调试相关推荐

  1. STM32F103C8T6驱动6线OLED(SPI通讯)

    传送门:Arduino使用u8g2库函数驱动4线/6线OLED屏幕(I2C/SPI通讯)附带库函数详解 [点击进入] 一.0.96寸SSD1306原理图(默认为SPI) 二.OLED硬件介绍及控制方式 ...

  2. STM32Cube学习笔记-SPI通讯

    引言  使用STM32Cube开发东西最怕的就是写的代码太多,为什么呢?因为不会写,我深有体会.SPI通讯是一种常用的常用的通讯方式,同步.串行.同步代表着实时性好,串行代表着接线少,很多的设备愿意采 ...

  3. 华邦存储器W25Q80, W25Q16, W25Q32系列的spi通讯

    华邦存储器W25Q80, W25Q16, W25Q32系列与stm32f1系列单片机的spi通讯 2020.4.9 spi通讯在配置好之后一定要开启spi使能,和串口的配置是一样的 2020.4.13 ...

  4. 详细介绍GPIO、I2C、SPI通讯原理以及物理层原理

    目录 一. GPIO 1. 什么是GPIO? 2. GPIO组成原理 3. GPIO工作原理 二. I2C 1. 什么是I2C? 2. I2C组成原理 3. I2C的特性 4. I2C的通讯模式 5. ...

  5. SPI通讯协议详解 基于STM32

    SPI 协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在 ADC.L ...

  6. 基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 IC-MU磁绝对值编码器的SPI通讯和码盘数据处理 前言 一.硬件连接 二.STM32 cubmx配置模式 三.软件代码及思路 1.寄 ...

  7. Arduino使用u8g2库函数驱动4线/6线OLED屏幕(I2C/SPI通讯)附带库函数详解

    话不多说,直接入正题: 常见的OLED通常有两种样式,如下图所示,分别是4线和6线控制 本人几乎浏览了网上所有关于控制OLED模块的教程,并都经过了项目实测:大力推荐u8g2这个库函数来控制,文章末尾 ...

  8. WK2204 - spi转uart调试记录

    WK2204 - spi转uart调试记录 硬件 芯片简介 电路设计 驱动 添加设备树 添加驱动 调试 查看启动加载 检查串口通信 数据乱码或丢失 RS485只能收不能发 系统中断响应异常 思考 硬件 ...

  9. 57步进电机驱动板,可以通过编码器调速,支持SPI通讯屏显示,485通讯

    57步进电机驱动板,可以通过编码器调速,支持SPI通讯屏显示,485通讯. 板子上面有电位器可电流设定或者485改电流设定. 最大电流支持4.5A,如果需要更大电流需要改元器件参数. 有启停和方向按键 ...

最新文章

  1. 两个什么漏洞,可让十亿安卓手机被获取Root权限?
  2. java 数组怎么求和_java数组排序,并将数组内的数据求和
  3. java中的值传递和引用传递问题
  4. EcmaScript对象克隆之谜
  5. 作者:洪文兴(1980-),男,厦门大学自动化系副教授,厦门信息产业与信息化研究院执行院长。...
  6. 怎么确定迭代器后面还有至少两个值_学会迭代和迭代器,让你的程序更省内存...
  7. vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb
  8. 如何使用QGIS下载在线地图
  9. AcWing 851. spfa求最短路(解决负边权最短路)
  10. SQL注入之注入检测总结
  11. 服务器的使用:Linux一键搭建KMS激活服务器
  12. redis数据类型之HashSet
  13. PAT|1147 Heaps(最大堆、最小堆、二叉树的遍历)
  14. USB 3.0 高清音视频采集芯片——MS2130
  15. 项目文档模板_用于启动项目文档的模板
  16. BZOJ5442 [Ceoi2018]Global warming
  17. ios云信不能全屏_ios集成网易云信IM功能遇到的坑
  18. linux ptp时钟同步
  19. android跳转qq群代码,Android app 跳 QQ 群界面
  20. 百度大脑3月新品推荐:EasyDL视频目标追踪全新发布

热门文章

  1. Google+ 为什么会死?
  2. 谁说程序员的老婆和代码不可兼得?!
  3. Hacker News 7 月编程语言招聘趋势榜:Python 稳居第一,Go 成功击败 Java
  4. Facebook的秘密服务器,竟藏着互联网的军事根源?
  5. 华米OV坐不住了!九大手机厂商围剿微信小程序
  6. 北漂的程序员们,这寒冬你是否“有枝可依”?
  7. mysql配置环境变量,进阶加薪全靠它!
  8. 已收藏!java自学网址
  9. 903计算机技术综合基础,北大903计算机技术综合基础考研真题、资料、参考书
  10. el-jy-ii计算机组成原理实验报告,EL-JY-II型计算机组成原理实验系统