stm32-SPI通讯原理详解

那么今天再说说SPI吧,通过前面的IIC其实我们知道,通讯协议,其实就是通过时序来传输数据,通过自定义不同的函数来实现数据的传输(具体就是按照时序,来读写寄存器的标志位,来完成数据传输的具体操作),所以可以通过再定义不同的函数来读写相应存储传输数据的存储空间,以完成对数据的处理,那我们前面提到的IIC主要应用到的地方就是读写EEPROM,那今天说的SPI,就以读写FLASH来讲讲它的通讯原理。

其实我们知道它与IIC不同的是,它是由4条线路控制的

片选

选择设备是根据片选线拉低电平来得到选中的,这就表示通讯开始了,通讯结束就拉高电平即可;其实很前面就说过它的通讯原理。

时钟

那再说说它的时钟线,时钟的极性和相位可以决定四种通讯方式,配置的时候,就要看你的从设备是使用那种方式,来进行配置的,还有就是不同的SPI所在的总线不一样,不同的频率也不一样,但分频系数都一样,使用的时候具体查资料配置。

数据线

还有即使两条数据线,以数据的传输方向来区分,类似与串口的那两条数据信号线路。

数据控制

与IIC不同的是,这里引入了缓冲区,也就是在数据寄存器和移位寄存器之间加入了缓冲区,为什么要加入缓冲区?应该是SPI的传输速率较快,引入缓冲区来提高数据传输效率。

控制逻辑

还是之前的那句话,通过读取状态寄存器相应位,来获取工作状态;当然还可以控制寄存器来配置工作模式,SPI信号中断,DMA请求。

主模式收发流程

  1. 控制片选线,产生开始信号
  2. 将要发送的数据写入数据寄存器,改数据会被发往缓冲区
  3. 按照时钟,MOSI会把数据一位一位发送出去(通过移位寄存器),MISO反之
  4. 发送完一帧数据,SR的TXE置1表示发送缓冲区已空;接收完一帧数据,RXNE置1表示接受缓冲区非空。
  5. 当TXE为1,若还要继续发送数据,就向数据寄存器写数据;当RXNE为1,读取数据寄存器以获取接受缓存区里的数据

如若使能了TXE或RXNE中断,他们置1时会产生SPI中断信号,当然只会进入同一个中断服务函数,再里面检查相应位可以判断是那个事件触发的中断,以分别进行处理;也可以用DMA的方式来读取数据寄存器里的数据。

FLASH

其实操作FLASH和EEPROM差不多,只不过他们的页大小不同,而且FLASH只能写入页或块,擦除的最小单位是扇区,而EEPROM可以擦写字节;FLASH写的时候要先擦除原来的内容;FLASH自身定义了一些操作,通过发送指令来完成一些特殊操作(命令定义为一个字节的数据来发送给flash)。SPI-FLASH是NORFLASH,它具有统一编址,所以可以按地址读写。注意存储代码的是在芯片内部的FLASH,与这里说的不是一个概念。

原文地址:https://www.cnblogs.com/lzd626/p/9490583.html

时间: 2024-08-07 07:11:27

stm32-SPI通讯原理详解的相关文章

kickstart安装系统原理详解

前言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装. 常规的办法有什么? 光盘安装系统===>一个服务器DVD内置光驱百千块,百台服务器都配光驱就浪费了,因为一台服务器也就开始装系统能用的上,以后用的机会屈指可数.用USB外置光驱,插来插去也醉了. U盘安装系统===>还是同样的问题,要一台一台服务器插U盘. 网络安装系统(ftp,http,nfs) ===>这个方法不错,只要服务器能联网就可以装系统了

SPI总线协议及SPI时序图详解

SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议.SPI是一个环形总线结构,由ss(cs).sck.sdi.sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换. 上升沿发送.下降沿接收.高位先发送.上升沿到来

SSL/TLS 原理详解

本文大部分整理自网络,相关文章请见文后参考. SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰.正文开始. 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: tls-ssl-_tcp-ip_protocol.png SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(En

KVC/KVO原理详解及编程指南(转载)

KVC/KVO原理详解及编程指南 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/9674431 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢! 前言: 1.本文基本不讲KVC/KVO的用法,只结合网上的资料说说对这种技术的理解. 2.由于KVO内容较少,而且是以KVC为基础实现的,本文将着重介绍KVC部分. 一.简介 KVC/KVO是观察者模式的一种实现

SSL/TLS原理详解与WCF中的WS-Security

SSL/TLS作为一种互联网安全加密技术 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取.当前版本为3.0.它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输.SSL协议位于TCP/IP协议与各种应

LVS原理详解(3种工作模式及8种调度算法)

2017年1月12日, 星期四 LVS原理详解(3种工作模式及8种调度算法) LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) 作者:woshiliwentong  发布日期:2014-01-06 09:31:20 一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集

图像处理中的数学原理详解17——卷积定理及其证明

欢迎关注我的博客专栏"图像处理中的数学原理详解" 全文目录请见 图像处理中的数学原理详解(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 图像处理中的数学原理详解(已发布的部分链接整理) http://blog.csdn.net/baimafujinji/article/details/48751037 1.4.5   卷积定理及其证明 卷积定理是傅立叶变换满足的一个重要性质.卷积定理指出,函数卷积的傅立叶变

Java虚拟机工作原理详解

原文地址:http://blog.csdn.net/bingduanlbd/article/details/8363734 一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘当中.然后你在命令行中输入 [java] view plaincopy javac YourClassName.java 此时,你的java代码就被编译成字节码(.class).如果你是在Eclipse IDE或者其他开发工具中,你保存代码

Storm概念、原理详解及其应用(一)BaseStorm

本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出.写这篇文章,是想把一些官文和资料中基础.重点拿出来,能总结出便于大家理解的话语.与大多数"wordcount"代码不同的是,并不会有如何运行第一storm代码等内容,只有在运行完代码后,发现需要明白:"知其然,并知其所以然". Storm是什么?为什么要用Storm?为什么不用Spark? 第一个问题,以下概念足以解释: Storm是基于数据流的实时处理系统,提供了大吞吐量的实