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

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

Watrt7年前 (2017-12-16)Cortex-M316540
摘要:本章介绍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系列教程1:GPIO

STM32CubeMX系列教程1:GPIO

打开STM32CubeMX新建工程,选择STMF746IGT6芯片。选择外部高速晶振(HSE).根据Open746I-C开发板原理图(原理图可在微雪电子网站上下载),选择按键和LED引脚PA0,PG2,PG3,PD4,PD5,PD11为按键输入管脚,选择GPIO_INPUT模式。PB6,PB7,PH4,PI8为LED输出控制管脚,选择GPIO_OUTPUT模式。点击Clock Configuration配置系统时钟为216M最高速度。点击Configuration->GPIO配置管脚。五向...

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

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

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

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根...

发表评论

访客

看不清,换一张

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