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

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

watrt6年前 (2017-12-16)Cortex-M312100
摘要:本章介绍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系列教程8:数模转换(DAC)

STM32CubeMX系列教程8:数模转换(DAC)

1.DAC单次转换       本章程序在串口printf工程的基础上修改,复制串口printf的工程,修改文件夹名。击STM32F746I.ioc打开STM32cubeMX的工程文件重新配置。PA5管脚配置为DAC输出通道2。 DAC配置为默认配置不需修改。生成报告以及代码,编译程序。在adc.c文件中可以看到ADC初始化函数。在stm32f7xx_hal_dac.h头文件中可以看到DAC的操作函数。/** @addtogroup ...

STM32CubeMX系列教程24:STemWim移植

STM32CubeMX系列教程24:STemWim移植

摘要:本章教程带领大家移植StmemWin 5.22到STM32的LDTC接口控制的RGB接口屏幕。(注:本章只针对STM32芯片F7,F4系列带LDTC接口控制的RGB屏幕,对F1系列通过FMC控制的带控制器的屏幕不适用)一、STemWin 简介        emWin是segger公司出一种高效的而图形用户界面,是我们能够摆脱处理器和显示控制器而更专注于GUI的设计。uCGUI是segger公司授权Micrum公司推出的,uCOS操作系统也是这个公司...

STM32CubeMX系列教程25:USB Device

STM32CubeMX系列教程25:USB Device

本章不打算详细讲解USB的协议,本章只是介绍如何通过STM32CubeMX软件生成应用程序。在看本教程之前建议先看ST官方关于USB的培训视频,示例http://www.stmcu.com.cn/videos.html一、USB简介      stm32F746系列芯片有USB_OTG_FS和USB_OTG_HS两种接口,FS为全速,速度12M Bit/s,HS为高速,最高速度为480M Bit/s,此时需要外接USB HS PHY,例如USB3300。H...

发表评论

访客

看不清,换一张

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