FastBond3挑战部分-基于STM32U575CIU6Q最小系统的设计
该项目使用了STM32U575CIU6Q芯片,实现了一个高效、紧凑的最小系统的设计,它的主要功能为:为嵌入式项目开发提供稳定、可靠的硬件平台,用于原型设计的验证。。
标签
嵌入式系统
STM32
最小系统
FastBond第三季
胖头鱼
更新2024-10-31
40

一、创意方案

本方案旨在设计一款基于 STM32U575CIU6Q 微控制器的最小系统,用于评估和开发基于STM32U575CIU6Q的应用程序。该系统包括了微控制器运行所需的所有基本组件,如时钟源、电源管理、复位电路USB和调试接口,同时保持了设计的简洁性和成本效益。将所有的 IO 管脚全部引出,今后可以作为嵌入式项目开发的原型验证开发板。

二、方案器件介绍

主控:STM32U575CIU6Q

STM32U575CIU6Q 是 STMicroelectronics 公司生产的 STM32U5 系列超低功耗微控制器家族中的一员。它基于高性能的 Arm® Cortex®-M33 32 位 RISC 内核,工作频率高达 160 MHz。

主要特性:

  • 超低功耗: 支持 FlexPowerControl 技术,提供多种低功耗模式,包括 LPBAM,使外设即使在 Stop 模式下也能自主运行。
  • 安全特性: 符合 Arm® TBSA 要求,支持安全启动、安全数据存储和安全固件更新。具有 HASH 硬件加速器和真随机数生成器等安全功能。
  • 内存: 包含高达 2 MB 的闪存和 786 KB 的 SRAM,以及外部存储器接口和 Octo-SPI 内存接口。
  • 丰富的外设: 提供 136 个快速 I/O 线路、多种定时器、看门狗定时器、多种通信接口(包括 USB Type-C®、USB OTG、I2C、USART、SPI、CAN、SDMMC)以及图形和音频处理功能。
  • 多种封装: 提供 48 到 169 引脚的多种封装选项。

DC-DC芯片:TLV62568DRL

TLV62568DRL 是一款由德州仪器(TI)生产的同步降压 DC-DC 转换器,专为高效和紧凑型解决方案而设计。它采用 SOT-563-6 封装,尺寸为 1.60mm x 1.60mm,适合空间受限的应用。

主要特性:

  • 高效率: 效率高达 95%,即使在轻载条件下也能保持高效率。
  • 低 RDS(ON): 可在 150mΩ 和 100mΩ 之间切换,降低损耗。
  • 宽输入电压范围: 2.5V 至 5.5V,适应多种电源输入。
  • 可调输出电压: 0.6V 至 VIN,满足不同输出电压需求。
  • 省电模式: 轻载时自动进入省电模式,降低功耗。
  • 100% 占空比: 低压降,适用于低电压输出应用。
  • 低静态电流: 35µA,延长电池寿命。
  • 1.5MHz 开关频率: 降低电磁干扰,提高效率。
  • 电源正常输出指示: TLV62568P 提供电源正常输出指示功能。
  • 保护功能: 过流保护、热关断保护、内部软启动等。

三、原理图及PCB介绍

整体原理图如下,使用 STM32U575CIU6Q 芯片,具有高性能的 Arm® Cortex®-M33 32 位 RISC 内核,工作频率高达 160 MHz。芯片选择的是U5系列带Q型号的,Q型号的芯片内置了开关电源,可以进一步提高效率在最小系统板上集成了最核心的功能,通过 Type-C 端口提供 5 V 给 DC-DC 模块,同时由板上DC-DC芯片得到的3.3V通过管脚输出向芯片供电。将调试接口引出,可以外接SWD调试器,方便后续的调试功能,为原型验证提供更灵活、更具性价比的选择。

USB电路:

Type-C从外部取电,向内部电路提供5V ,为了保护后级电路,所以串联了保险丝在VBUS上。为了保证使用双C口数据线,需要在CC1、CC2下拉电阻。

image.png

DC-DC电源模块:

image.png

核心电路:

核心电路保留了晶体振荡器电路,外部时钟输入16M,为了芯片可以低功耗,再放置一个32.768k的晶体。剩下的所有IO口连接到板子的边缘,作为扩展。

image.png

调试接口:

为了使用DAP-Link进行调试,按照调试器的管脚排布了芯片的调试管脚。接口中包含了供电、串口、SWD接口、复位和SWO功能。

image.png

PCB绘制和3D图:

image.png

image.png

image.png

PCB实物:

IMG_20241027_224114(1).jpg

四、软件代码

对于最小系统是否能正常工作的测试,采取了最简单的点亮呼吸灯测试。

首先是使用配置工具,生成外设初始化代码

af49ba13610622de755214ae49282fc.png

主程序初始化外设,并在while循环中,不断改变占空比实现呼吸灯

TIM_HandleTypeDef htim2;

//定时器外设初始化​

/* TIM2 init function */

void MX_TIM2_Init(void)
{
/* USER CODE BEGIN TIM2_Init 0 */
/* USER CODE END TIM2_Init 0 */
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
/* USER CODE BEGIN TIM2_Init 1 */

/* USER CODE END TIM2_Init 1 */
htim2.Instance = TIM2;
htim2.Init.Prescaler = 0;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 159;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;

if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
{
Error_Handler();
}
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;

if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
{
Error_Handler();
}

if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}

sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 79;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
{
Error_Handler();
}

/* USER CODE BEGIN TIM2_Init 2 */
/* USER CODE END TIM2_Init 2 */
HAL_TIM_MspPostInit(&htim2);
}
int main(void)
{
//主程序初始化外设,并在while循环中,不断改变占空比实现呼吸灯
/* USER CODE BEGIN 1 */
static uint8_t CNT=0,CMP=0,DIR =0;

/* 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_FLASH_Init();
MX_USB_OTG_FS_PCD_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if(DIR==1)
{
CMP++;
if(CMP > 159)
{
DIR = 0;
}
}
else
{
CMP--;
if(CMP < 1)
{
DIR = 1;
}
}
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1,CMP);
HAL_Delay(5);
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}


五、成品功能测试

image.png

烧录代码后,可以看见LED进入呼吸状态,使用示波器测量管脚,也能看到变化的方波

六、总结

在本次实践中,将之前一直想做的最小系统给完成了。在之前的学习中,总会碰上一些需要验证的东西。苦于没有一个扩展IO够多的核心系统。在这次活动中终于将以前的想法转化成现实。这一过程不仅加深了我对STM32U575CIU6Q单片机功能的理解,也培养了我对技术操作的耐心和精细度。期待这项活动能够不断改进,吸引更多技术爱好者加入,共同探索和学习STM32U575CIU6Q的丰富应用。

感谢电子森林,感谢得捷,希望活动越办越好!

附件下载
STM32U5PCB.zip
Code.zip
团队介绍
个人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号