SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。正是由于有了通信方式,我们才能够通过芯片控制各种各样的外围器件,实现很多“不可思议”的现代科技。这里将以SPI为题,从编程角度来介绍SPI总线。下面就随网络通信小编一起来了解一下相关内容吧。
1、SPI协议简介
图 1 SPI接口
SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola首先在其 MC68HCXX 系列处理器上定义的。SPI是一种高速的,全双工,同步的通信总线,由于其简单易用的特性,现在很多的nor flash和nandflash芯片集成了这种通信协议,也就是我们说的SPI flash。
2、应用及现状
图 2 SPI应用
SPI flash 芯片应用十分广泛,在很多电子产品上面或多或少都有它的踪影,如手机、数码、液晶显示器、机顶盒、电脑主板等。最近,有消息透露,苹果新手机iPhone 8将导入采用编码型快闪存储(NOR Flash),让已经处于缺货状态的NOR芯片更为恼火,另外据存储业者透露,今年NOR芯片供给缺口将可能扩大至20%。
3、解剖SPI总线
SPI 接口一般使用 4 条线通信,MISO 主设备数据输入,从设备数据输出。MOSI 主设备数据输出,从设备数据输入。SCLK 时钟信号,由主设备产生。CS 从设备片选信号,由主设备控制。
图 3 SPI总线
SPI接口在Master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(MSB)。在SCK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。
图 4 使能信号和时钟信号
4、解剖SPI flash
搞懂了SPI协议之后,下面就让小编来带你轻松操作SPI flash芯片。对flash芯片的操作,一般包括对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都大同小异,操作命令基本是没什么变化的,当我们拿到一款芯片,要特别注意芯片的容量,操作分区,下面以旺宏的芯片为例为大家讲解。
其实,无论是对芯片的擦除,编程还是读取操作,我们大致可以按照以下的套路来:写命令---写地址---写(读)数据。正如以下的时序图一样清晰明了,我们先把片选信号拉低,再发个0x02页编程命令,再发个地址,就可以轻松写数据了。
一文读懂SPI串行外设接口
依样画葫芦,擦除操作也是一样,甚至更简单,但是我们要注意循环判断状态寄存器的WIP位直至为0为擦除完成,具体循环时间视芯片而定。
一文读懂SPI串行外设接口
另外,我们要特别注意SPI flash的 OTP区,即(ONE TIME PROGRAMMABLE),也就是说这个区域只能编程一次,编程之后不能再修改及擦除,因此我们操作的时候要特别注意。对OTP区域的读写之前,我们首先要发送进入OTP区域的命令,其他的操作和以上普通flash区域的操作是一样的。
掌握以上方法,我们就可以轻松操作SPI flash芯片了,当然,对时序这种底层的操作,还需要不断学习和积累。
以上是关于网络通信中-一文读懂SPI串行外设接口的相关介绍,如果想要了解更多相关信息,请多多关注eeworld,eeworld电子工程将给大家提供更全、更详细、更新的资讯信息。
关键字:SPI 串行外设接口
引用地址:
一文读懂SPI串行外设接口
推荐阅读最新更新时间:2024-05-07 17:22
STM32 SPI笔记(基于寄存器)
1.说在前面:最近尝试操作VS1053音频模块 使用的数据传输方法使用SPI协议,打算学一下SPI的配置方式 2.SPI 2-1:SPI(Secial Periperal interface),作为四线的通信接口,有着MISO MOSI SCLK和CS MISO:主进从出 MOSI:主出从进 SCLK: 时间信号 CS:片选信号 2-2:CPHA和CPOL CPHA为时钟相位,可以配置为1/0,控制数据的采样方式,设置为0的时候,控制在时钟周期的第一个跳变沿进行数据采集,设置为1的时候在第二个跳变沿进行采集 CPOL为时钟极性,可以配置为1/0,控制空闲状态的时钟极性,设置为0的时候空闲状态为低
[单片机]
基于MSP430的SPI驱动编写之用MSP430驱动AFE4400
平常工作中,如果使用MSP430作为主控芯片,经常会遇到需要编写SPI 或 I2C 驱动,来读取和控制外设(比如LCD屏幕,一些传感器)的情况。为了减少重复性工作,本文以具体实例来总结SPI驱动编写的详细步骤(用MSP430FR6989来驱动集成模拟前端AFE4400): 单片机SPI引脚设置 SPI读写时序设置 寄存器写入 写在最后 单片机SPI引脚设置 一般SPI有3线和4线之分,区别在于是否带片选端——STE引脚,4个引脚功能说明: UCxS0MI:主模式数据输入,从模式下数据输出; UCxSIMO:主模式数据输出,从模式下数据输入; UCxCLK:USCI SPI的时钟; UCx
[单片机]
STM32-(17):SPI与数码管,
数码管 数码管是一种应用很普遍的显示器件,从单片机、ARM到许多微型机控制系统及数字化仪器仪表中都用到数码管作为显示输出。 数码管的主要部分是七段发光_极管;数码管分为共阴极和共阳极两种;为了保护各段 LED ,需外加限流电阻。有的产品还附带有一个小数点,故有人叫其为八段式发光二极管。 由7个发光段的不同组合,从而实现十六进制数的显示。线面分别是共阴极和共阳极0-9的编码表。 数码管的连接方式 **段选端:**可以控制数码管显示内容; **位选端:**用于控制整个数码管是否工作:共阴极数码管,位选端要接地;共阳极数码管,位选端要接高电平 595芯片 串行转并行的芯片 引脚图 真值表 595工作
[单片机]
SPI实验W25Qxx讲解
W25Q64 是华邦公司推出的大容量SPI FLASH 产品,W25Q64 的容量为 64Mb,W25Q128的容量为128Mb。 W25Q64 的擦写周期多达 10W 次,具有 20 年的数据保存期限,支持电压为 2.7~3.6V。 一。 程序配置过程 二。 硬件连接 三。SPI底层函数讲解 首先是初始化函数 //以下是SPI模块的初始化代码,配置成主机模式,访问SD Card/W25Q64/NRF24L01 //SPI口初始化 //这里针是对SPI2的初始化 //MISO根据手册要设置成上拉输入或浮空输入,根据经验设置成推挽复用也可以,所以这里全部设置成推挽复用功能。 void SPI2_Init(void) { G
[单片机]
MCS-51系列单片机模拟SPI总线的方法
1 引言 SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。由于SPI系统总线一共只需3~4位数据线和控制即可实现与具有
[单片机]
STM32F103C8T6 SPI主从通讯问题及待解决方案
1.我是用两块STM32F103C8T6进行SPI通讯,一块做主机,一块作为从机; 主机部分代码: void SPI2_Config(void)//SPI2的传输配置 { SPI_InitTypeDef SPI_InitStructure; SPI_Cmd(SPI2, DISABLE); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; S
[单片机]
STM32之SPI与QSPI学习笔记
QSPI接口简介 QSPI是Queued SPI的简写,是Motorola公司推出的SPI接口的扩展,比SPI应用更加广泛。 在SPI协议的基础上,Motorola公司对其功能进行了增强,增加了队列传输机制,推出了队列串行外围接口协议(即QSPI协议)。 QSPI是一种专用的通信接口,连接单、双或四(条数据线)SPI FLASH存储器。
[单片机]
13.STC15W408AS单片机SPI
STC15系列单片机还提供另一种高速串行通信接口 —— SPI接口。SPI是一种全双工、高速、同步的通信总线,有两种操作模式:主模式和从模式。在主模式中支持高达3 Mbps的速率(工作频率为12MHz时,如果CPU主频采用20MHz到36MHz,则可更高,从模式时速度无法太快,SYSclk/4以内较好),还具有传输完成标志和写冲突标志保护。 一、 与SPI功能模块相关的特殊功能寄存器 1.1 SPI控制寄存器SPCTL SPCTL : SPI控制寄存器 SSIG:SS引脚忽略控制位。 SSIG=1,MSTR(位4)确定器件为主机还是从机 SSIG=0,SS脚用于确定器件为主机还是从机.SS脚可作为I/O口使
[单片机]