# 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 电路图 ![电路原理图](./img/H750VBT6原理图.png) ### 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 开发板照片 - **正面照片**: ![正面照片](./img/3D正面.jpg) - **反面照片**: ![反面照片](./img/3D反面图.png) ### 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 数据保持
- **原理图**: ![W25Q64连接原理图](./img/W25Q64原理图.png) #### 3.5.2 SPI显示屏 (ILI9341) - **连接配置示例**:
STM32引脚 ILI9341引脚 描述
PE12 SCK SPI时钟线
PE13 SDO SPI输出
PE14 SDA SPI输入
PE11 CS 片选
PE15 DC 数据/命令选择
PB10 RESET 复位
PD15 LED 屏幕背光控制
- **原理图**: ![ILI9341连接原理图](./img/ILI9341和FT6336U的接口原理图.png) #### 3.5.3 IIC触摸屏 (FT6336U) - **连接配置示例**:
STM32引脚 FT6336U引脚 描述
PB8 TP_SCL I2C时钟线
PB9 TP_SDA I2C数据线
PB14 TP_INT 中断信号
PB5 TP_RST 复位
- **原理图**: ![ILI9341连接原理图](./img/ILI9341和FT6336U的接口原理图.png) #### 3.5.4 摄像头 (OV2640) - **连接配置示例**:
STM32引脚 OV2640引脚 描述
PB8 SCL 摄像头时钟线
PB9 SDA 摄像头数据线
注意: 太多的引脚,不详细列举。请确保OV2640接口与开发板的连接正确。
- **原理图**: ![OV2640连接原理图](./img/OV2640接口原理图.png) #### 3.5.5 USART1接口 - **连接配置示例**:
STM32引脚 TTL设备引脚 描述
PB14 TX 数据发送
PB15 RX 数据接收
- **原理图**: ![USART1连接原理图](./img/USART1接口.png) #### 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**: 数据线,支持双向数据传输。 - **原理图**: ![TF卡接口连接原理图](./img/SD卡接口原理图.png) ### 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) ### 联系方式 暂时没有联系方式,请您随时联系我们。