当前位置:首页 > 技术 > Cortex-M3 > 正文内容

STM32CubeMX系列教程10:串行外设接口SPI

watrt3年前 (2017-12-16)Cortex-M3330
摘要:本章介绍SPI总线。以及介绍W25Qxx芯片。

1.SPI简介

SPI(Serial Peripheral Interface),串行外围设备接口,一种高速的,全双工,同步的通信总线。芯片的管脚上只占用四根线。
MISO: 主器件数据输出,从器件数据输入。
MOSI:主器件数据输入,从器件数据输出。
SCK: 时钟信号,由主设备控制发出。
NSS(CS): 从设备选择信号,由主设备控制。当NSS为低电平则选中从器件。



        如下为主器件与多个从器件通信,其中SCK,MOSI,MISO是接在一起的,NSS分别接到不同的IO管脚控制。主器件要和从器件通信就先拉低对应从器件的NSS管脚使能。默认状态IO1,IO2,IO3全为高电平,当主器件和从器件1通信时,拉低IO1管脚使能从器件1。而从器件2,3不使能,不作响应。



2.SPI时序图
        每次开始传输时,主器件先拉低从器件的片选信号线NSS,选中要传输的从器件。SCK时钟线发送一个时钟周期就传输一位数据。MOSI为主出从入,数据由主器件控制发送,从器件接收。MISO的数据由从器件控制发送,主器件接收。所以SPI传输一个字节就相当于主器件和从器件交换一个字节。
SPI只有主模式和从模式之分,没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。



根据时钟极性(CPOL)及相位(CPHA)不同,SPI有四种工作模式。
时钟极性(CPOL)定义了时钟空闲状态电平:
    CPOL=0为时钟空闲时为低电平
    CPOL=1为时钟空闲时为高电平
时钟相位(CPHA)定义数据的采集时间。
    CPHA=0:在时钟的第一个跳变沿(上升沿或下降沿)进行数据采样。
    CPHA=1:在时钟的第二个跳变沿(上升沿或下降沿)进行数据采样。



3、W25Q128FV
    W25Q128V芯片是串行闪存,可以通过标准/两线/四线SPI控制,这里只介绍通过标准SPI控制。

        W25Q128fv管脚如上,作为标准SPI控制时,DO管脚为MISO,D1管脚为MOSI,/CS为片选NSS,CLK为时钟信号线。/WP为写保护管脚,/HOLD or /RESET为保持或复位引脚(通过寄存器配置)。

        W25Q128FV为串行Nor FLASH,,掉电后数据不丢失。大小为128M-bit,分为256个块(Block),而每个块位64K,每个块的又分为16个扇区(Sector),每个扇区的大小为4K。FLASH写数据前必须擦除存储器,而擦除是以扇区或块作为操作单位的。
W25Q128FV通过命令操作,这里简单介绍几条用到的命令,详情可以参考数据手册
1.读制造商/设备ID(90)
       该指令通常在调试程序的时候用到,判断SPI通信是否正常。该指令通过主器件拉低/CS片选使能器件开始传输,首先通过DI线传输“90H”指令,接着传输000000H的24位地址(A23-A0),之后从器件会通过DO线返回制造商ID(EFH)和设备ID(17H)。
(注:SPI为数据交换通信,主器件在发送“90H”指令时也会接收到一个字节FFH,但此数据为无效数据)



 2.读数据(03H)
        读数据指令可从存储器依次一个或多个数据字节,该指令通过主器件拉低/CS电平使能设备开始传输,然后传输“03H”指令,接着通过DI管脚传输24位地址,从器件接到地址后,寻址存储器中的数据通过DO引脚输出。每传输一个字节地址自动递增,所以只要时钟继续传输,可以不断读取存储器中的数据。



3.页编程(02H)
        页编程指令可以在已擦除的存储单元中写入256个字节。该指令先拉低/CS引脚电平,接着传输“02H”指令和24位地址。后面接着传输至少一个数据字节,最多256字节。



4.扇区擦除(20H)
        扇区擦除指令,数据写入前必须擦除对应的存储单元,该指令先拉低/CS引脚电平,接着传输“20H”指令和要擦除扇区的地址。



另外还有其他一下操作命令
5.使能重启(66H),使能重启设备(99H)。



6.写使能命令(06H)



7.读状态寄存器1(05H),状态寄存器2(35H),状态寄存器3(15H)



分享给朋友:

相关文章

STM32CubeMX系列教程12:控制器局域网络(CAN)

STM32CubeMX系列教程12:控制器局域网络(CAN)

一.CAN简介        CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,是国际上应用最广泛的现场总线之一。        CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,信号是以两线之间的“差分”电压形式出现,总线电平分为显性电平和隐性电平。   ...

STM32CubeMX系列教程4:PWM

STM32CubeMX系列教程4:PWM

1.PWM简介       脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调试。是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信到功率控制与变换的许多领域中。例如上图中,图b)是微处理输出的数字信号,实际上他接到电机等功率设备上时,效果相当于图a)。这就是PWM调制。例如输出占空比为50%,频率为10Hz的脉冲,高电平为3.3V.则其输出的模拟效果相...

STM32CubeMX系列教程5:串行通信(USART)

STM32CubeMX系列教程5:串行通信(USART)

本章以串口为例讲解,HAL 库轮询,中断,DMA 三种编程模型。1.前情回顾       在串行通信中,一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束。在进行传输之前,双方一定要使用同一个波特率设置。波特率就是每秒钟传输的数据位数。       常用的两种基本串行通信方式包括同步通信和异步通信。我们通常使用的是异步通信.异步通信规定传输的数据格式由起始位(...

STM32CubeMX系列教程19:Quad-SPI

STM32CubeMX系列教程19:Quad-SPI

一.Quad-SPI简介        在第十章和第十一章中,我们介绍了标准的SPI总线,SPI由四根线控制,NSS为片选,SCK为时钟信号线。MISO,MOSI为数据线,一根作为输入,一根作为输出。        Quad-SPI,即四线SPI,由此可知其数据线比标准的SPI接口要多,最多支持四条数据线同时传输。连接单、双或四(条数据线) SPI Flash 存储介质。Quad-SPI总共有6根...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。