前期准备:
- STM32CubeMX
- STM32C8T6核心板
- IDE Keil(MDK-ARM)
- 杜邦线×7
- 0.96寸OLED屏(7针脚)
SPI背景和接线
1.什么是SPI
SPI英文缩写“Serial Peripheral Interface”,是一种串行外设接口,是一种四线制的同步串行通信接口,用来连接MCU、传感器、存储设备
SPI是全双工且SPI没有定义速度限制,通常能达到甚至超过10 Mbps,这也是为什么SPI被广泛使用的原因
而SPI分为软件SPI和硬件SPI,因为SPI是一种需要时序的工作方式,所以当你细究SPI的原理时,你会发现每根信号线的工作时序有条有理,工作顺序前后清晰,严格按照时序进行工作
- 软件SPI:通过软件编写代码控制管脚按照SPI的原理进行工作,模拟SPI就是软件SPI
- 硬件SPI:有些单片机的管脚复用功能有SPI,即这些单片机内部集成了专门用于SPI工作的芯片,即硬件SPI
2.如何接线
单片机 | OLED屏 |
---|---|
电源地 | GND |
电源3.3V~5V | V |
单片机任意IO | D0 / SCK |
单片机任意IO | D1 / SDA |
单片机任意IO | RST |
单片机任意IO | DC |
电源地 | CS |
STM32CubeMX部分
1.配置时钟
选择STM32F103C8Tx系列芯片,配置时钟的同时会自动配置IO口引脚
将HCLK设置为最大频率72MHz
2.配置IO口
- PB13(OutPut模式)——>SCK
- PB15(OutPut模式)——>SDA
- PB12(OutPut模式)——>RST
- PB14(OutPut模式)——>DC
硬件SPI篇讲过,当只有一个从机的时候,CS脚可以直接接地。将代码中关于CS的函数全部注释即可,所以本次工程没有设CS脚
GPIO——>Maximum output speed(引脚最大输出速率):High
管脚输出速率设置为高,因为与OLED屏的刷新率挂钩
3.工程生成
工程管理依旧是这几个选项,然后GENERATE CODE,STM32CubeMX部分完成
MDK 5 部分
1.移植OLED文件
文末有工程链接
将oled文件放在如图位置
打开MDK 5 ,点击如图
添加oled.c文件
添加oled.h文件路径
2.修改引脚
在oled.h文件修改自定义的引脚
3.修改main函数
- 添加头文件
#include "oled.h"
- OLED初始化
- while(1)函数
编译下载时需要选择相对应的下载器,勾选以下
效果如图