STM32 CubeMx(七)SPI串行同步通信与外部FLASH(W25Q128)的读写和TFT液晶屏
文章目录
- 0.参考博客和视频
- 1.SPI
- 1.1 SPI简介
- 1.2 SPI优缺点
- 2.FLASH(W25Q128)的读写
- 2.1 W25Q128简介
- 2.2 连接电路图
- 2.3 工程配置
- 2.4 驱动代码
- 3. TFT SPI串口显示显示屏 2.8寸可触摸
- 3.1 实物图和接线
- 3.2 参数特性
- 3.3 配置工程
- 3.4代码编写
- 4. USRT,I2C,SPI简单对比图
0.参考博客和视频
SPI协议详解(图文并茂+超详细)
UART - I2C - SPI - 串行通信协议
SPI通信协议原理
1.SPI
1.1 SPI简介
摘自原子哥STM32F4开发指南-HAL库版本
通常, SPI 通过 4 个引脚与外部器件连接:
● MISO:主输入/从输出数据。此引脚可用于在从模式下发送数据和在主模式下接收数据。
● MOSI:主输出/从输入数据。此引脚可用于在主模式下发送数据和在从模式下接收数据。
● SCK:用于 SPI 主器件的串行时钟输出以及 SPI 从器件的串行时钟输入。
● NSS:从器件选择。这是用于选择从器件的可选引脚。此引脚用作“片选”,可让 SPI
主器件与从器件进行单独通信,从而并避免数据线上的竞争。
1.2 SPI优缺点
SPI通讯的优势:
- 高速数据传输速率。10MBS-20MBS(全双工嘛)
- 简单接收硬件结构——移位寄存器。
- 支持多从机。
- 相比于I2C,功耗更低。
SPI通讯的劣势:
- 需要更多的连接。
- 主机必须控制所有的通信(从机间不可以通信)。
- 孤立的片选线。
- 只有1个主机在SPI总线上。除非你为每一个从机装配片选线。
2.FLASH(W25Q128)的读写
2.1 W25Q128简介
KST-STM32学习之W25Q128 总结很到位!推荐阅读。
1、W25Q128是华邦一款容量为128M-bit(16M-byte) 的串行NOR Flash储存器。华邦W25Q128 (128M-bit),被组织为65536个可编程的页,每页256bytes。擦除方式分为16页一组(即一个扇区4kbytes),128页一组(即8个扇区32kbytes),256页一组(即16个扇区或1个块64kbytes),或整个芯片擦除。该芯片有4096个可擦除扇区,或256个可擦除块。该芯片支持标准 standard spi,Dual/Quad I/O SPI,高支持的时钟频率为133MHz,在Quad-SPI模式下的连续传输速度可达532MBit/s(66MByte/s)。
2.2 连接电路图
2.3 工程配置
1.开启串口
2.开启SPI,注意引脚是否对应与电路图
3.自己开启软件片选信号
根据电路图,我们选择GPIOB_PIN14
2.4 驱动代码
CSDN上有很多,淘宝客服也会给,找一个能用的就行。
W25Qxx驱动代码 提取码:92gt
如果你修改了片选信号,请不要忘记在这里修改GPIO的信息。
#define SPI1_NSS_GPIO_Port GPIOB
#define SPI1_NSS_Pin GPIO_PIN_14#define W25Qx_Enable() HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_RESET)
#define W25Qx_Disable() HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_SET)
mian测试:
开始一个通信,发送器首先拉低CS信号,然后发送时钟信号和数据信号。
uint8_t Data1[4]={0x90,0x00,0x00,0x00};
uint8_t Data2[2]={0x70,0x01};
uint8_t RxData[2]={0x00,0x00};
while(1)
{HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port,SPI1_NSS_Pin,GPIO_PIN_RESET);HAL_SPI_Transmit(&hspi1,Data1,4,100);HAL_SPI_TransmitReceive(&hspi1,Data2,RxData,2,100);HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port,SPI1_NSS_Pin,GPIO_PIN_SET);HAL_Delay(500);
}
测试结果:
运行前
运行后:
Debug下看到RxData为{0xEF,0x17}。即为其ID号,说明SPI读取成功,接下来根据W25Q128手册编写应用程序即可。
3. TFT SPI串口显示显示屏 2.8寸可触摸
3.1 实物图和接线
不触摸的接线方式:
TFT | STM32 |
---|---|
VCC | 5V |
GND | GND |
RESET | LCD_RST |
DC/RS | LCD_RS |
CS | GND |
SDI(MOSI) | SPI1_ MOSI |
SCK | SPI1_ SCK |
LED | 5V/3.3V |
3.2 参数特性
1、产品类型:TFT 2、产品尺寸:2.8寸 3、驱动芯片:ILI9341
4、分辨率: 320*240
5、工作温度:-20°C~60°C
6、VCC电源电压:3.3V~5V
7、接口类型:4线SPI接口
8、触摸类型:可选配电阻触摸
分辨率在驱动函数中是长度和宽度的限制。
3.3 配置工程
1.开启SPI通道
2.开启GPIO
3.4代码编写
1.导入驱动代码 提取码:urbf
2.初始化即可调用
/* USER CODE BEGIN Includes */
#include "Lcd_Driver.h"
#include "GUI.h"
/* USER CODE END Includes *//* USER CODE BEGIN 2 */Lcd_Init();Lcd_Clear(YELLOW);/* USER CODE END 2 */
如果修改引脚,请修改Lcd_Driver.h代码中的宏定义
#define LCD_RS_SET HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET);
#define LCD_RST_SET HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_SET);
4. USRT,I2C,SPI简单对比图
SPI、UART、I2C总线详解
STM32 CubeMx(七)SPI串行同步通信与外部FLASH(W25Q128)的读写和TFT液晶屏相关推荐
- ChibiOS系列:五、将STM32 USART与ChibiOS串行驱动程序配合使用
本文翻译自:http://www.playembedded.org/blog/stm32-usart-chibios-serial/ 将STM32 USART与ChibiOS串行驱动程序配合使用 发表 ...
- 串行同步通信“时钟同步”怎么理解?
问题:在串行同步通信中,发送端需要和接受端进行同步,时钟同步.这个时钟同步是什么概念?书上说是用同步码从发送端发出去,接受端接收同步码就可以同步了.这个同步怎么可能是时钟上的同步呢?比如发送端是0时刻 ...
- Arduino UNO通过SPI串行方式驱动LCD12864液晶屏
LCD12864液晶屏简介 LCD12864带中文字库图形点阵式液晶显示器,可配合各种单片机可完成中文汉字.英文字符和图形显示,可构成全中文人机交互图形界面,模块具有功耗低.显示内容丰富等特点而应用广 ...
- DSP SPI串行外设接口
1.SPI介绍 1.1 SPI简介 SPI的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器 ...
- 3.3 SPI串行Flash配置模式
SPI串行Flash配置模式 1.SPI串行配置介绍 串行Flash的特点是占用管脚比较少,作为系统的数据存贮非常合适,一般都是采用串行外设接口(SPI 总线接口).Flash 存贮器与EEPROM ...
- 嵌入式硬件协议: SPI串行外设接口 Serial Peripheral Interface
简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在ADC.LCD 等设备与M ...
- SPI串行外围设备接口
一.要知道SPI总线是什么,首先要知道具体的通信时序是怎样的? 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口. ...
- SPI (串行外围设备接口) 协议简介
1.SPI协议简介 1.1 SPI协议概括 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.是Motorola首先在其MC68HCXX系列处理 ...
- STM32驱动LCD12864(串行模式)
效果呈现 引脚定义:(VCC接入先询问厂家供电) PIN1--GND PIN2--5V PIN3--不接 PIN4--RS(CS) PIN5--R/W(SID) PIN6--E(SCK) PIN7-- ...
- ARDUINO:ESP32 + ILI9431 SPI TFT液晶屏静态展示图片
折腾了半天,终于搞定ESP32开发板 + ILI9431 SPI TFT小液晶屏静态展示图片. 库:Arduino IDE的库管理中搜索 TFT_eSPI.或者从GITHUB手动下载:https:// ...
最新文章
- Microbiome:Kraken2进行16S物种注释又快又准
- minist读取一张图片
- linux下运行gnuplot,Gnuplot Linux版下载
- 移动端 像素渲染流水线与GPU Hack
- python函数调用追踪_Python函数调用追踪实现代码
- 力扣1037.有效的回旋镖
- php title 乱码,PHP发送UTF-8编码中文邮件标题乱码的解决
- java设计模式在线视频_Java设计模式之单例模式视频课程
- android学习笔记之系统签名
- ES6阮一峰读书笔记第三章字符串的拓展
- 寨板p45黑苹果10.12.6
- 深南电国际油价期权对赌协议详解? 毁约?
- C#结合数据库开发通讯录管理系统
- 机械:二级注册建造师/二级建造师考试的报考条件、报考时间、考试科目的简介
- 你肯定想学习的顶级Python项目(附代码)
- BZOJ 小约翰的游戏John 反尼姆博弈
- spout 和bolt关系_在Bolt CMS中记录检索和分页
- Qt中国象棋之棋子的移动
- 数据挖掘笔试面试(5)
- Linux运维18:网络和监控