目录
Saleae Logic 16 逻辑分析仪的安装并对信号进行测量
1 SPI 协议
1.1 SPI 协议简介
SPI 协议是由摩托罗拉公司提出的通讯协议,即串行外设接口(Serial Peripheral Interface),是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合。
SPI 和 I2C 的通信 2 种总线的异同点可以参看这篇博客:I2C和SPI总线对比。
2.2 SPI 物理层与协议层
SPI 物理层
SPI 通讯使用 3 条总线及片选线,3 条总线分别为 SCK、MOSI、MISO,片选线为 SS。
SPI 协议层
这是一个主机的通讯时序。NSS、SCK、MOSI 信号都由主机控制产生,而 MISO 的信号由从机产生,主机通过该信号线读取从机的数据。MOSI 与 MISO 的信号只在 NSS 为低电平的时候才有效,在 SCK 的每个时钟周期 MOSI 和 MISO 传输一位数据。
2.3 STM32 的 SPI 特性及架构
与 I2C 外设一样,STM32 芯片也集成了专门用于 SPI 协议通讯的外设。
STM32 的 SPI 外设可用作通讯的主机及从机,支持最高的 SCK 时钟频率为 fpclk/2 (STM32F103 型号的芯片默认 fpclk1 为 72MHz,fpclk2 为 36MHz),完全支持 SPI 协议的 4 种模式,数据帧长度可设置为 8 位或 16 位,可设置数据 MSB 先行或 LSB 先行。它还支持双线全双工(前面小节说明的都是这种模式)、双线单向以及单线模式。其中双线单向模式可以同时使用 MOSI 及 MISO 数据线向一个方向传输数据,可以加快一倍的传输速度。而单线模式则可以减少硬件接线,当然这样速率会受到影响。我们只讲解双线全双工模式。
更多的 SPI 协议内容可以查看资料:《零死角玩转STM32—F103指南者.pdf》。
2 OLED 显示实验
2.1 具体要求
显示自己的学号和姓名
显示 AHT20 的温度和湿度
上下或左右的滑动显示长字符,或者一段歌词或诗词(最好使用硬件刷屏模式)
2.2 准备工具
硬件工具:
STM32F103 开发板
AHT20 芯片(温湿度数据采集)
AHT20 芯片的具体信息及参考代码参考官网介绍,链接:
http://www.aosong.com/class-36.html
USB 转 TTL 模块
杜邦线若干
PC 机(Win10)
0.96寸OLED显示屏模块
软件工具:
keil 5 MDK
烧录软件 mcuisp (提取码均为:luha)
2.3 硬件连接及说明
STM32F103 开发板与 OLED 模块连接
其他模块的具体连接参考上篇博客的第 2.4.1 部分:
STM32 基于 I2C 通信协议的温湿度采集并串口显示
使用硬件 SPI 通信
2.4 代码实现
2.4.1 Demo 程序
下载资料包之后打开其中的“0.96inch_SPI_OLED_Module_SSD1306_MSP096X_V1.0\1-Demo\Demo_STM32\0.96inch_OLED_Demo_ST