# stm32h750vbt6
**Repository Path**: wbh2024/stm32h750vbt6
## Basic Information
- **Project Name**: stm32h750vbt6
- **Description**: 基于反客的H750VBT6设计,适配个人使用,非商用,侵删!
- **Primary Language**: C
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-09-15
- **Last Updated**: 2024-11-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: stm32
## README
# STM32H750VBT6 开发板使用手册
## 目录
1. [介绍](#介绍)
2. [开发板规格](#开发板规格)
3. [硬件设计](#硬件设计)
- 3.1 [电路图](#电路图)
- 3.2 [元件列表](#元件列表)
- 3.3 [外设接口说明](#外设接口说明)
- 3.4 [开发板照片](#开发板照片)
- 3.5 [接口连接配置](#接口连接配置)
- 3.5.1 [QSPI Flash (W25Q64)](#QSPI-Flash-W25Q64)
- 3.5.2 [SPI显示屏 (ILI9341)](#SPI显示屏-ILI9341)
- 3.5.3 [IIC触摸屏 (FT6336U)](#IIC触摸屏-FT6336U)
- 3.5.4 [摄像头 (OV2640)](#摄像头-OV2640)
- 3.5.5 [USART1接口](#USART1接口)
- 3.5.6 [TF卡接口](#TF卡接口)
- 3.6 [IO口说明](#IO口说明)
- 3.7 [PCB信息](#PCB信息)
- 3.8 [处理器信息](#处理器信息)
4. [环境搭建](#环境搭建)
- 4.1 [开发工具](#开发工具)
- 4.2 [软件安装](#软件安装)
5. [基本使用](#基本使用)
- 5.1 [电源连接](#电源连接)
- 5.2 [程序下载](#程序下载)
- 5.3 [调试功能](#调试功能)
6. [示例工程](#示例工程)
- 6.1 [LED 控制示例](#LED-控制示例)
- 6.2 [SPI屏幕使用示例](#SPI屏幕使用示例)
- 6.3 [触摸屏使用示例](#触摸屏使用示例)
- 6.4 [摄像头使用示例](#摄像头使用示例)
- 6.5 [USART1通讯示例](#USART1通讯示例)
- 6.6 [TF卡接口示例](#TF卡接口示例)
- 6.7 [示例程序位置说明](#示例程序位置说明)
7. [常见问题](#常见问题)
8. [附录](#附录)
- 8.1 [硬件设计开源链接](#硬件设计开源链接)
## 介绍
STM32H750VBT6开发板是基于STM32H750VBT6微控制器设计,支持多种外设,适用于嵌入式系统开发。该开发板具备丰富的接口,能够进行各种应用开发。
## 开发板规格
- **微控制器**: STM32H750VBT6
- **主频**: 最高480MHz
- **存储器**:
- **闪存**: 128KB
- **RAM**: 总计1MB
- 192KB TCM RAM(包括64KB ITCM和128KB DTCM)
- 864KB 用户SRAM
- 4KB SRAM在备份域中
- **外设**:
- QSPI Flash: W25Q64
- SPI显示屏: ILI9341
- IIC触摸屏: FT6336U
- 摄像头接口: OV2640
- UART接口: USART1
- TF卡接口
- **按键**:
- RESET按键: 用于复位
- BOOT按键: 用于USB下载
- **LED**:
- 用户LED: 一个用户可控LED
- **供电**: 5V供电,通过AMS1117转为3.3V
- **接口支持**: USB下载、SW调试接口
## 硬件设计
### 3.1 电路图

### 3.2 元件列表
元件名称 |
型号 |
数量 |
微控制器 |
STM32H750VBT6 |
1 |
QSPI Flash |
W25Q64 |
1 |
SPI屏幕 |
ILI9341 |
1 |
触摸屏 |
FT6336U |
1 |
摄像头 |
OV2640 |
1 |
USART接口 |
USART1 |
1 |
TF卡接口 |
TF Card Slot |
1 |
稳压电源 |
AMS1117-3.3 |
1 |
LED |
用户LED |
1 |
按键 |
按钮开关 |
2 |
### 3.3 外设接口说明
- **QSPI (W25Q64)**: 用于高速度的外部存储器连接。程序将在QSPI Flash上运行。
- **SPI (ILI9341)**: 用于连接SPI显示屏,实现图形界面显示。
- **IIC (FT6336U)**: 用于触摸屏接口,实现触摸输入功能。
- **OV2640接口**: 支持摄像头模块,用于图像采集。
- **USART1**: 用于与TTL设备进行人机交互,支持串口通信。
- **TF卡接口**: 用于插入和访问TF卡,实现数据存储功能。
- **RESET按键**: 用于复位微控制器。
- **BOOT按键**: 在进行USB下载时使用,确保微控制器进入编程模式。
- **用户LED**: 用于指示开发板的工作状态,用户可控。
### 3.4 开发板照片
- **正面照片**:

- **反面照片**:

### 3.5 接口连接配置
#### 3.5.1 QSPI Flash (W25Q64)
- **连接配置示例**:
STM32引脚 |
W25Q64引脚 |
描述 |
PB6 |
CS |
SPI片选线 |
PB2 |
SCLK |
SPI时钟线 |
PD11 |
DI |
SPI主机输出,从机输入 |
PD12 |
DO |
SPI主机输入,从机输出 |
PE2 |
WP |
写保护 |
PD13 |
HOLD |
数据保持 |
- **原理图**:

#### 3.5.2 SPI显示屏 (ILI9341)
- **连接配置示例**:
STM32引脚 |
ILI9341引脚 |
描述 |
PE12 |
SCK |
SPI时钟线 |
PE13 |
SDO |
SPI输出 |
PE14 |
SDA |
SPI输入 |
PE11 |
CS |
片选 |
PE15 |
DC |
数据/命令选择 |
PB10 |
RESET |
复位 |
PD15 |
LED |
屏幕背光控制 |
- **原理图**:

#### 3.5.3 IIC触摸屏 (FT6336U)
- **连接配置示例**:
STM32引脚 |
FT6336U引脚 |
描述 |
PB8 |
TP_SCL |
I2C时钟线 |
PB9 |
TP_SDA |
I2C数据线 |
PB14 |
TP_INT |
中断信号 |
PB5 |
TP_RST |
复位 |
- **原理图**:

#### 3.5.4 摄像头 (OV2640)
- **连接配置示例**:
STM32引脚 |
OV2640引脚 |
描述 |
PB8 |
SCL |
摄像头时钟线 |
PB9 |
SDA |
摄像头数据线 |
注意: 太多的引脚,不详细列举。请确保OV2640接口与开发板的连接正确。
- **原理图**:

#### 3.5.5 USART1接口
- **连接配置示例**:
STM32引脚 |
TTL设备引脚 |
描述 |
PB14 |
TX |
数据发送 |
PB15 |
RX |
数据接收 |
- **原理图**:

#### 3.5.6 TF卡接口
- **连接配置示例**:
STM32引脚 |
TF卡引脚 |
描述 |
PC12 |
SCK |
时钟信号 (CLK),控制器或SD卡在每个时钟周期传输数据。 |
PC8 |
DAT0 |
数据线0,数据可以双向传输。 |
PC9 |
DAT1 |
数据线1,数据可以双向传输。 |
PC10 |
DAT2 |
数据线2,数据可以双向传输。 |
PC11 |
DAT3 |
数据线3,数据可以双向传输。 |
PD2 |
CMD |
命令和响应复用引脚 (CMD),用于传输命令和响应。 |
- **功能描述**:
- **CLK**: 时钟信号,提供数据传输的时钟信号,速度可在0~25MHz之间变化。
- **CMD**: 控制器发送给SD卡的命令,响应由SD卡返回。
- **DAT0~3**: 数据线,支持双向数据传输。
- **原理图**:

### 3.6 IO口说明
- **IO口数量**: 11个
- 11个可编程IO口
- PB0
- PB1
- PC4
- PC5
- PA7
- PA15
- PD0
- PD1
- PD4
- PD5
- PD6
### 3.7 PCB信息
- **工程标题**: Co-反客H750VBT6
- **板子标题**: 主控
- **PCB标题**: PCB1
- **时间**: 2024-09-14 13:04:25
- **板子尺寸**: 69.5mm x 51.294mm
- **层数**: 总计 22,铜箔层 2
- **器件数量**: 32
- **封装数量**: 24
- **元件总计**: 67
- **顶层**: 66
- **底层**: 1
- **焊盘总计**: 313
- **表贴焊盘**: 277
- **金属化孔**: 36
- **网络总计**: 101
- **未布线网络**: 0
- **过孔总计**: 362
- **通孔**: 362
- **导线长度**: 2942.502mm
### 3.8 处理器信息
- **处理器**: ARM Cortex-M7 核心,具有双精度浮点单元(FPU)。
- **频率**: 高达 480 MHz。
- **性能**: 1027 DMIPS(Dhrystone 2.1),2.14 DMIPS/MHz。
- **缓存**: 16KB 数据缓存和 16KB 指令缓存。
- **RAM**: 总计1MB
- 192KB TCM RAM(包括64KB ITCM用于时间关键型例程和128KB DTCM)
- 864KB 用户SRAM
- 4KB SRAM在备份域中
## 环境搭建
### 4.1 开发工具
- **IDE**: RT-Thread Studio和Keil MDK均可。
- **编译器**: GCC
### 4.2 软件安装
1. 下载RT-Thread Studio安装包。
2. 运行安装程序并按照提示完成安装。
3. 安装STM32 USB驱动程序以确保设备识别。
## 基本使用
### 5.1 电源连接
- 通过USB连接计算机供电。
- 或者通过外部电源适配器连接开发板,使用AMS1117将5V转为3.3V供电。
### 5.2 程序下载
1. 打开RT-Thread Studio。
2. 创建新工程并选择STM32H750VBT6。
3. 编写或导入程序代码。
4. 连接开发板至计算机,确保驱动已安装。
5. 点击“Run”按钮,下载程序至开发板。
### 5.3 调试功能
- **设置断点**: 在代码行号上点击右键选择“Toggle Breakpoint”。
- **启动调试**: 点击“Debug”按钮,程序将在断点处暂停,进行调试。
## 示例工程
### 6.1 LED 控制示例
- **功能**: 控制用户LED闪烁。
- **示例程序位置**: [examples/LED_blink.c](./examples/02-LED_control/)
#### 6.1.1 创建工程
使用CubeMX创建STM32H750VBT6的工程。
**选择PE3端口为输出模式,选择USART1端口为异步窗口模式,波特率选择115200。然后勾选ADC3的Temerature Sensor Channel。
然后RANK目录下的Sampling Time设置成810.5.**
#### 6.1.2 编写程序
这是芯片内部温度检测的程序
[芯片内部温度](./examples/02-LED_control/MCU_Temp/)
代码展示:
* mcu_temper.c
```c
/*
* mcu_temper.c
*
* Created on: Jun 4, 2024
* Author: wangb
*/
#include "mcu_temper.h"
#include "stm32h7xx_hal.h"
// 定义常量
#define TEMPSENSOR_TYP_AVGSLOPE 2000.0 // 典型斜率(单位:uV/摄氏度)
#define TS_CAL1_VOLTAGE 620 // TS_CAL1电压(单位:mV)
#define TS_CAL1_TEMP 30 // 校准1温度(单位:摄氏度)
#define VREFANALOG_VOLTAGE 3300.0 // 模拟参考电压(单位:mV)
/*
* @名字:float Read_Internal_Temperature(void)
* @日期:2024-06-03
* @功能:获取MCU内部温度,并且打印出来
* @参数:None
* @返回值:None
*/
float Read_Internal_Temperature(void)
{
uint32_t raw_adc_value;
float temperature;
// 启动ADC并等待转换完成
if (HAL_ADC_Start(&hadc3) != HAL_OK)
{
printf("ADC 启动失败\r\n");
return -1; // 返回一个错误值
}
if (HAL_ADC_PollForConversion(&hadc3, HAL_MAX_DELAY) != HAL_OK)
{
printf("ADC 转换失败\r\n");
return -1; // 返回一个错误值
}
raw_adc_value = HAL_ADC_GetValue(&hadc3);
HAL_ADC_Stop(&hadc3);
// 使用宏计算温度
temperature = __HAL_ADC_CALC_TEMPERATURE_TYP_PARAMS(
TEMPSENSOR_TYP_AVGSLOPE, // Avg_Slope单位为uV/摄氏度
TS_CAL1_VOLTAGE, // TS_CAL1电压(单位:mV)
TS_CAL1_TEMP, // 校准1温度(单位:摄氏度)
VREFANALOG_VOLTAGE, // 模拟参考电压(单位:mV)
raw_adc_value, // 温度传感器的ADC转换数据(单位:数字值)
ADC_RESOLUTION_16B // ADC分辨率(假设为16位)
);
return temperature;
}
```
* mcu_temper.h
```c
/*/*
* mcu_temper.h
*
* Created on: Jun 4, 2024
* Author: wangb
*/
#ifndef MCU_TEMP_MCU_TEMPER_H_
#define MCU_TEMP_MCU_TEMPER_H_
#include "main.h"
#include "adc.h"
extern ADC_HandleTypeDef hadc3;
float Read_Internal_Temperature(void);
#endif /* MCU_TEMP_MCU_TEMPER_H_ */
```
* 在main.c中编写程序:
先包含如下头文件
```c
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include
#include // 添加这一行以引用 strlen 函数
#include "mcu_temper.h" //芯片内部温度
/* USER CODE END Includes */
```
* 定义一个全局变量和数组存放温度数据
```c
/* USER CODE BEGIN PV */
float mcu_tem = 0;
char Display[10];
/* USER CODE END PV */
```
* 读取温度并且打印出来,并且LED闪烁
```c
int main(void)
{
/* USER CODE BEGIN 1 */
SCB_EnableICache(); // ʹĜICache
SCB_EnableDCache(); // ʹĜDCache
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC3_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
mcu_tem = Read_Internal_Temperature();
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
HAL_Delay(60);
sprintf(Display, "MCU:%.3f\n", mcu_tem);
HAL_UART_Transmit(&huart1, (uint8_t*)Display, strlen(Display), 10);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
```
#### 6.1.3 编译下载
编译下载程序至开发板。
#### 6.1.4 运行效果
LED快速闪烁,串口打印内部温度数据。**此时芯片温度发热,是正常的,可以在CubeMX配置时降低芯片的主频**
### 6.2 SPI屏幕使用示例
- **功能**: 在ILI9341屏幕上显示信息。
- **示例程序位置**: [ILI9341的例程](./examples/03-LCD_ILI9341/ILI9341/)
**目前只有清屏和像素点显示功能,后续将增加更多功能**
### 6.3 触摸屏使用示例
- **功能**: 读取FT6336U的触摸输入。
- **示例程序位置**: `examples/touch_screen.c`
### 6.4 摄像头使用示例
- **功能**: 实现OV2640摄像头接口。
- **示例程序位置**: `examples/camera_capture.c`
### 6.5 USART1通讯示例
- **功能**: 实现与TTL设备的人机交互。
- **示例程序位置**: `examples/USART1_communication.c`
### 6.6 TF卡接口示例
- **功能**: 实现对TF卡的读写操作。
- **示例程序位置**: `examples/TF_card_example.c`
### 6.7 示例程序位置说明
所有示例程序可在`examples`文件夹中找到,您可以根据需求修改或扩展示例代码。
## 常见问题
(此部分留空,您可以在后续开发中添加常见问题及解决方案。)
## 附录
### 8.1 硬件设计开源链接
- **链接**: [请在此添加您的开源链接](#)
### 参考资料
- [STM32H750VBT6 数据手册](https://www.st.com)
- [W25Q64 数据手册](https://www.winbond.com)
- [ILI9341 数据手册](https://www.illuminating.com)
- [FT6336U 数据手册](https://www.focaltech-systems.com)
- [OV2640 数据手册](https://www.ovis.com)
### 联系方式
暂时没有联系方式,请您随时联系我们。