文章目录

  • 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液晶屏相关推荐

  1. ChibiOS系列:五、将STM32 USART与ChibiOS串行驱动程序配合使用

    本文翻译自:http://www.playembedded.org/blog/stm32-usart-chibios-serial/ 将STM32 USART与ChibiOS串行驱动程序配合使用 发表 ...

  2. 串行同步通信“时钟同步”怎么理解?

    问题:在串行同步通信中,发送端需要和接受端进行同步,时钟同步.这个时钟同步是什么概念?书上说是用同步码从发送端发出去,接受端接收同步码就可以同步了.这个同步怎么可能是时钟上的同步呢?比如发送端是0时刻 ...

  3. Arduino UNO通过SPI串行方式驱动LCD12864液晶屏

    LCD12864液晶屏简介 LCD12864带中文字库图形点阵式液晶显示器,可配合各种单片机可完成中文汉字.英文字符和图形显示,可构成全中文人机交互图形界面,模块具有功耗低.显示内容丰富等特点而应用广 ...

  4. DSP SPI串行外设接口

    1.SPI介绍 1.1 SPI简介 SPI的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器 ...

  5. 3.3 SPI串行Flash配置模式

     SPI串行Flash配置模式 1.SPI串行配置介绍 串行Flash的特点是占用管脚比较少,作为系统的数据存贮非常合适,一般都是采用串行外设接口(SPI 总线接口).Flash 存贮器与EEPROM ...

  6. 嵌入式硬件协议: SPI串行外设接口 Serial Peripheral Interface

    简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在ADC.LCD 等设备与M ...

  7. SPI串行外围设备接口

    一.要知道SPI总线是什么,首先要知道具体的通信时序是怎样的? 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口. ...

  8. SPI (串行外围设备接口) 协议简介

    1.SPI协议简介 1.1 SPI协议概括 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.是Motorola首先在其MC68HCXX系列处理 ...

  9. STM32驱动LCD12864(串行模式)

    效果呈现 引脚定义:(VCC接入先询问厂家供电) PIN1--GND PIN2--5V PIN3--不接 PIN4--RS(CS) PIN5--R/W(SID) PIN6--E(SCK) PIN7-- ...

  10. ARDUINO:ESP32 + ILI9431 SPI TFT液晶屏静态展示图片

    折腾了半天,终于搞定ESP32开发板 + ILI9431 SPI TFT小液晶屏静态展示图片. 库:Arduino IDE的库管理中搜索 TFT_eSPI.或者从GITHUB手动下载:https:// ...

最新文章

  1. Microbiome:Kraken2进行16S物种注释又快又准
  2. minist读取一张图片
  3. linux下运行gnuplot,Gnuplot Linux版下载
  4. 移动端 像素渲染流水线与GPU Hack
  5. python函数调用追踪_Python函数调用追踪实现代码
  6. 力扣1037.有效的回旋镖
  7. php title 乱码,PHP发送UTF-8编码中文邮件标题乱码的解决
  8. java设计模式在线视频_Java设计模式之单例模式视频课程
  9. android学习笔记之系统签名
  10. ES6阮一峰读书笔记第三章字符串的拓展
  11. 寨板p45黑苹果10.12.6
  12. 深南电国际油价期权对赌协议详解? 毁约?
  13. C#结合数据库开发通讯录管理系统
  14. 机械:二级注册建造师/二级建造师考试的报考条件、报考时间、考试科目的简介
  15. 你肯定想学习的顶级Python项目(附代码)
  16. BZOJ 小约翰的游戏John 反尼姆博弈
  17. spout 和bolt关系_在Bolt CMS中记录检索和分页
  18. Qt中国象棋之棋子的移动
  19. 数据挖掘笔试面试(5)
  20. Linux运维18:网络和监控

热门文章

  1. python实用例子
  2. 实体消歧、实体统一和指代消歧
  3. 手机人像摄影入门简易四步法
  4. 使用Raspberry Pi搭建迅雷离线下载机
  5. 平凡的生活,不平凡的2020
  6. Linux timeout命令
  7. UVM设置超时退出timeout
  8. SAP abap采购报表开发
  9. spline本地运行的方法
  10. gloox1.0使用Emai格式的账号登录