FastBond3挑战部分-基于STM32G030设计开发板完成点灯
该项目使用了STM32G030F6P6,实现了自制开发板的设计,它的主要功能为:学习使用的开发板,实现点亮一个led的功能。
标签
开发板
PYL4869
更新2024-08-30
44

一、前言

在FastBond3基础部分的文档中,完成了方案框图的绘制,这次挑战部分将会完成整个PCB的绘制以及实现点亮一个led的功能。

项目和创意方向介绍:本项目旨在开发一款基于STM32G030的自制开发板,预留多个IO口,以便为后续的开发和学习提供良好的基础平台。同时将在此板上实现点亮一个LED灯的功能,以探索物联网方向的创意应用。

二、原理图及PCB介绍

image.png

image.png

供电部分使用Typec接口5V供电,通过AMS1117降压到3.3V给STM32F103CBT6和STM32G030F6P6供电。

AMS1117:

AMS1117是一款输出电流为1A的三端输出低压差线性稳压器,有1.2V、1.8V、2.5V、3.3V、5.0V及输出电压可调等多种版本,其在1A的电压降仅为1.2V。以其优异的性能和极致的经济性能,适用于各种电器产品。

●有固定输出电压1.2V、1.8V、2.5V、3.3V、5.0V及可调输出电压版本

●固定输出电压1.2V电压精度为2%

●固定输出电压1.8V、2.5V、3.3V、5.0V及可调输出电压精度为1.5%

●温度范围:-40℃~ + 125℃

image.png

AMS1117的应用电路IN和OUT端都需要接1个100nF的滤高频,和一个220uF的贴片型铝电解电容滤低频。

STM32G030F6P6

STM32G030F6P6主流超值系列Arm Cortex-M0+ MCU,工作频率高达64 MHz。它们提供高水平的集成,适用于消费,工业和家电领域的广泛应用,并为物联网(IoT)解决方案做好准备。包括一个内存保护单元(MPU)、高速嵌入式存储器(高达64 kb的Flash程序存储器和8 kb的SRAM)、DMA和广泛的系统功能、增强的I/ o和外设。器件提供标准通信接口(2个i2c, 2个spi / 1个I2S和2个usart), 1个12位ADC (2.5 MSps),最多19个通道,1个低功耗RTC, 1个高级控制PWM定时器,4个通用16位定时器,2个看门狗定时器和1个SysTick定时器。设备工作环境温度为-40 ~ 85℃。它们可以在2.0 V到3.6 V的电源电压下工作。优化的动态消耗与一套全面的节能模式相结合,允许设计低功耗应用。VBAT直接电池输入允许保持RTC和备用寄存器供电。

特性

  • 核心:Arm 32 位 Cortex-M0+ CPU,频率高达 64 MHz®®
  • -40°C至85°C工作温度
  • 记忆
    • 高达 64 KB 的闪存,带保护功能
    • 8 KB SRAM,带硬件奇偶校验
  • CRC计算单元
  • 复位和电源管理
    • 电压范围:2.0 V 至 3.6 V
    • 上电/断电复位 (POR/PDR)
    • 低功耗模式:睡眠、停止、待机
  • 时钟管理
    • 4 至 48 MHz 晶体振荡器
    • 带校准功能的 32 kHz 晶体振荡器
    • 内部 16 MHz RC,带 PLL 选项
    • 内部 32 kHz RC 振荡器 (±5 %)
  • 多达 44 个快速 I/O
    • 所有映射均可在外部中断向量上
    • 多个 5 V 耐压 I/O
  • 具有灵活映射功能的 5 通道 DMA 控制器
  • 12 位、0.4 μs ADC(多达 16 个外部通道)
    • 高达 16 位,具有硬件过采样功能
    • 转换范围:0 至 3.6V
  • 8 个定时器:16 位用于高级电机控制、4 个 16 位通用定时器、2 个看门狗、SysTick 定时器
  • 日历 RTC,带闹钟和定期从停止/待机唤醒
  • 通信接口
    • 两个i2c总线接口支持Fast-mode Plus (1mbit /s)与额外的电流吸收,一个支持SMBus/PMBus和从停止模式唤醒
    • 两个USART,带主/从同步SPI;一个支持ISO7816接口、LIN、IrDA 功能、自动波特率检测和唤醒功能
    • 2个spi (32mbit /s), 4 ~ 16位可编程位帧,1个多路复用I2S接口
  • 开发支持:串行线调试(SWD)
  • 所有封装均ECOPACK2兼容

image.png

image.png

STM32G030F6P6的外围电路很简单,仅添加了两个去耦电容和一个控制使用的LED。

image.png

在这里将DAPlink部分与STM32G030F6P6部分分隔开,通过跳线帽连接。

image.png

在设计时还使用了指定厂家Rohm Semiconductor制造的100欧的贴片电阻,功率为0.063W,容差 ±1%。

三、成品功能测试

image.png

pcb打板后焊接的照片,在这里遇到了一个问题,就是两端的排针相距的有一点远,使用跳线帽无法将DAPlink与STM32G030F6P6进行连接,所以现在只能使用杜邦线将两端连接,影响了整体的美观。

image.png

image.png

关键代码及说明:

uint8_t Rx_dat = 0;
uint8_t Tx_str1[] = "hello world!\r\n";
uint8_t Tx_str2[] = "LED1 Open!\r\n";
uint8_t Tx_str3[] = "LED1 Closed!\r\n";
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1)
{
if(Rx_dat == 0xa1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str2),10000);
HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
}
else if(Rx_dat == 0xa2)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);
HAL_UART_Transmit(&huart1,Tx_str3,sizeof(Tx_str3),10000);
HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
}
}
}
/* USER CODE END 0 */

/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */

/* 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_USART1_UART_Init();
/* USER CODE BEGIN 2 */
// HAL_Delay(1000);
HAL_UART_Transmit(&huart1,Tx_str1,sizeof(Tx_str1),10000); //向上位机发送“hello world!”
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);
HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
// HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_8);
// HAL_UART_Transmit(&huart1,Tx_str1,sizeof(Tx_str1),10000);
HAL_Delay(1000);

}
/* USER CODE END 3 */
}

程序中首先初始化GPIO、UART两种功能。其中UART用于测试DAPlink的功能,GPIO用于点亮LED灯,在串口中断中对上位机发送的数据进行处理,一上电STM32G030F6P6向上位机发送"hello world!,LED是熄灭的状态,当接收到A1时,LED亮并且向上位机发送"LED1 Open!",当接收到A2时,LED熄灭并且向上位机发送"LED1 Closed!"。以上就是主要程序的说明,实现的一个简单的点亮LED的功能。

四、活动总结

通过本项目的设计与实现,在项目中,我学会了设计一个简单的单片机外围电路,预留出IO口,为后续的开发和学习提供一个良好的基础平台,并且实现了点亮一个led灯的功能,检验了整个系统的可靠性,这不仅增强了我的硬件设计能力,还提升了解决问题的能力和在设计过程中考虑系统完整性的能力。未来,我将继续深入学习和探索,感谢此次活动能够让我自制一个STM32开发板。

物料清单
KiCad文件
使用说明
全屏
附件下载
STM32G0.rar
Kicad工程
222.rar
测试代码工程
团队介绍
个人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号