可以做视频推广的网站有哪些内容,网站在线留言怎么做,福州市住房和城乡建设局官网,泰安网站建设优化案例报告一、SPI总线简介
1.1 SPI总线 串口外设接口#xff08;Serial Peripheral Interface#xff0c;SPI#xff09;总线是一种同步串行外设接口#xff0c;允许MCU与各种外围设备进行全双工、同步串行通信
SPI总线有四根通信线#xff1a;
①SCK#xff08;Serial ClockSerial Peripheral InterfaceSPI总线是一种同步串行外设接口允许MCU与各种外围设备进行全双工、同步串行通信
SPI总线有四根通信线
①SCKSerial Clock串行时钟作为主设备的输出、从设备的输入
②MOSIMaster Output Slave Input主设备发送数据从模式接收数据
③MISOMaster Input Slave Output主设备接收数据从模式发送数据
④SSSlave Select片选引脚低电平有效选择从机让主设备可以单独地与特定从设备通信避免数据线上地冲突 SPI总线采用主从模式Master - Slave架构支持总线挂载多设备一主多从被广泛应用于MCU和外设模块如E2PROM、ADC、显示驱动器等 在大容量和互联型产品上SPI可以配置为支持SPI协议或者支持I²S音频协议
1.2 SPI硬件电路
所有SPI设备的SCK、MOSI、MISO分别连在一起
主机另外引出多条SS控制线分别接到各从机的SS引脚
输出引脚配置为推挽输出输入引脚配置为浮空或上拉输入 为了避免一个主机输入其他从机均为推挽输出导致的总线冲突SPI规定当从机SS引脚为高电平时其输出引脚必须切换为高阻态 1.3 SPI通信原理 SPI为环形总线结构。通信总是由主机发起在同步SCK驱动下主机移位寄存器的最高位数据通过MOSI移位到从机移位寄存器的最低位而从机移位寄存器的最高位数据通过MISO移位到主机移位寄存器的最低位。循环上述过程8次则通信一个字节数据 1.4 SPI通信时序
1.4.1 起始与终止 1.4.2 交换模式
根据CPOLClock Polarity时钟极性和CPHAClock Phase时钟相位两位组合共有四种组合模式
1模式0常用
CPOL 0空闲时SCK为低电平
CPHA 0第一个边沿上升沿移入采样数据第二个边沿下降沿移出数据 对于传输的首个数据的最高位在SS的下降沿就将其移出之后在SCL的上升沿移入采样 2模式1
CPOL 0空闲时SCK为低电平
CPHA 1上升沿移出数据下降沿移入采样数据 3模式2
CPOL 1空闲时SCK为高电平
CPHA 0第一个边沿上升沿移入采样数据第二个边沿下降沿移出数据 对于传输的首个数据的最高位在SS的下降沿就将其移出之后在SCL的上升沿移入采样 4模式3
CPOL 1空闲时SCK为高电平
CPHA 1上升沿移出数据下降沿移入采样数据 1.5 SPI数据格式
SPI指令码芯片厂商规定寄存器地址数据
1发送指令
向SS指定的设备发送指令0x06 2指定地址写
向SS指定的设备发送写指令0x02 随后在指定地址Address[23:0]下写入指定数据Data 3指定地址读
向SS指定的设备发送读指令0x03随后在指定地址Address[23:0]下读取从机数据Data 二、W25Q64存储器芯片
2.1 W2Q564简介 时钟频率160MHzDual SPI双重SPI等效的时钟频率该存储器的芯片将SPI进行了改进MOSI和MISO可以同时发送或者同时接收数据传输速率相当于普通SPI通信模式的2倍 320MHzQuad SPI四重SPI等效的时钟频率MOSI、MISO、WP写保护、HOLD四个引脚同时收发数据数据传输速率相当于普通SPI通信模式的4倍
2.2 硬件电路 2.3 W2Q564结构框图 存储空间的划分先划分为若干的块Block其中每一块再划分为若干的扇区Sector对于一个扇区内部还可以分成很多页Page W2Q564一共有8MByte的存储空间00 0000H ~ 7F FFFFH其中每块定义占用内存64KB可分为128块每扇区定义占用内存4KB可分为16个扇区每页定义占用内存256B可分为16页
块Block0~12764KB地址变化规律 xx 0000H ~ xx FFFFHxx最高两位表示位于某一块变化范围00~7F
扇区Sector0~154KB地址变化规律xx k000H ~ xx kFFFHk第四位表示位于某一扇区变化范围0~F
页Page0~16256B地址变化规律xx xj00H ~ xx xjFFHk第三位表示位于某一页变化范围0~F 2.4 状态寄存器 写使能WEL 1表示可以进行写操作
写失能WEL 0
1上电后芯片默认写失能
1执行以下指令写失能、页编程、扇区擦除
在任何写操作前都需要来一遍写使能
一个写使能只能保证后续的一条指令可以执行
2.5 指令集 三、SPI外设
STM32内部集成了硬件SPI收发电路可以由硬件自动执行时钟生成、数据收发等功能减轻CPU的负担
18位或16位传输帧格式选择
2可编程的时钟极性、时钟相位和数据传输顺序高位先行 or 低位先行
3时钟频率 fPCLK / (2, 4, 8, 16, 32, 64, 128, 256)
4支持全双工同步、或者半双工/单工同步通信
5支持多主机模式
6支持DMA功能的1字节发送和接收缓冲器产生发送和接收请求
7支持可靠通信的硬件CRC
8兼容I²S协议仅在大容量和互联型产品
STM32F103C8T6 硬件SPI资源SPI1、SPI2 SPI主模式 数据发送当写入数据至发送缓冲器时发送开始。在发送第一个数据位时数据字被并行地传入移位寄存器而后串行的移出到MOSI引脚上MSB高位在先还是LSB低位在先取决于SPI_CR1中LSBFIRST位的设置。当时据从发送缓冲器传输到移位寄存器时TXE置1如果设置了SPI_CR1中的TXEIE将产生中断 数据接收当数据传输完成时传送移位寄存器中的数据到接收缓冲器并且RXNE被置1。如果设置了SPI_CR1中的RXNEIE将产生中断。当读SPI_DR时将返回接收缓冲器中的数据同时RXNE被置0
主模式全双工连续传输
在模式3下TXE为1时数据写入发送缓冲器此时发送缓冲器的数据并行传送到移位寄存器
TXE为0数据开始传输并将下一位数据写入发送缓冲器等待第一个数据发送完成
当第一个数据发送完成交换的数据被接收放到了接收缓冲器中并将RXNE置1。
当第二个数据发送完成交换的数据被接收放到了接收缓冲器中并将RXNE置1。 简易流程
1等待TXE为1写入数据之后TXE为0
2数据移入移位寄存器TXE为1下一个数据移入发送缓冲器等待此时TXE为1
3第一个数据发送完成后交换的数据从移位寄存器并行传送到接收缓冲器将RXNE置1
4与此同时第二个数据迅速转移到移位寄存器此时TXE为1
5接着将下一位数据写入发送缓冲器中此时TXE为1 主模式全双工非连续传输
1等待TXE为1写入发送数据
2等待RXNE为1接收数据 连续传输优点传输效率高性能强大
缺点软件设计复杂
非连续传输优点软件设计简单易于理解
缺点传输效率相对较低在字节与字节之间会出现间隙且随着时钟频率的增快而变长
四、SPI相关库函数 1初始化SPI_Init() 2传送数据SPI_SendData () 3接收数据SPI_ReceiveData() 五、SPI外设基本配置
1开启SPI、GPIO的时钟
2配置GPIO的模式
3配置SPI外设完成初始化 SPI_InitTypeDef SPI_InitStruct;SPI_InitStruct.SPI_BaudRatePrescaler SPI_BaudRatePrescaler_32; //波特率分频系数SPI_InitStruct.SPI_CPHA SPI_CPHA_1Edge; //时钟相位SPI_InitStruct.SPI_CPOL SPI_CPOL_High; //时钟极性SPI_InitStruct.SPI_CRCPolynomial 7; //CRC未用赋一个默认值SPI_InitStruct.SPI_DataSize SPI_DataSize_8b; //数据帧大小8位SPI_InitStruct.SPI_Direction SPI_Direction_2Lines_FullDuplex; //双线双向全双工SPI_InitStruct.SPI_FirstBit SPI_FirstBit_MSB; //高位先行SPI_InitStruct.SPI_Mode SPI_Mode_Master; //主机SPI_InitStruct.SPI_NSS SPI_NSS_Soft;SPI_Init(SPI1,SPI_InitStruct);
4使能SPI外设