
GD32F407VETE学习拓展板
简介
天空星学习拓展板 1.显示 OLED 2.LCD 3.WIFI ESP01S 4.EEPROM 5.蓝牙 6.蜂鸣器 7.TypeC-ch340n 8.ADC 9.按键
简介:天空星学习拓展板 1.显示 OLED 2.LCD 3.WIFI ESP01S 4.EEPROM 5.蓝牙 6.蜂鸣器 7.TypeC-ch340n 8.ADC 9.按键开源协议
:GPL 3.0
描述
视频链接:
项目简介
本拓展板为基于GD32F407VET6 的学习拓展板,可用于新手入门学习GD32,进而掌握相关外设的使用,为搭建项目构建基础。源码实现板载外设资源的使用方法,通过宏定义控制,开启不同宏定义可查看具体现象。
板载各类丰富资源,有以下:
(1)SPI OLED
(2)2.8寸 LCD
(3)ESP01-S
(4)EEPROM 24C64
(5)蓝牙模块
(6)蜂鸣器
(7)Type-C串口
(8)ADC电位器
(9)按键
项目功能
板载外设模块使用
(1)SPI OLED
软件SPI 基本显示
(2)2.8寸 LCD
软件模拟8080 LCD显示
(3)ESP01-S
AP模式及STA模式
AP模式通过手机连接向单片机发送数据
STA模式通过连接阿里云,由阿里云可下发命令控制LED
(4)EEPROM 24C64
数据读取
(5)蓝牙模块
蓝牙控制LED
(6)蜂鸣器
蜂鸣器鸣叫提示
(7)Type-C串口
使用TypeC数据线可与串口上位机进行数据收发
(8)ADC电位器
通过调节电位器可调整输入电压
(9)按键
用于控制自定义功能
(10)LED指示灯
两路LED指示灯
原理解析(硬件说明)
1.拓展排针
所有引脚通过排针引出,方便拓展
2.SPI OLED
oled接到硬件SPI引脚,方便使用软件/硬件SPI驱动
3.LCD
LCD的CN1接到FMC接口,CN2接到SPI,可通过FMC使用8080或者SPI驱动显示
4.ESP01S
通信连接串口PB10/PB11
5.EEPROM
SCL和SDA上拉VCC,方便使用硬件IIC,配置开漏输出
6.蓝牙模块
蓝牙模块连接到串口
7.BEEP
蜂鸣器通过跳线帽连接到PC8,或者曲线跳线帽连接到其他PIN脚,PC8具备PWM
8.TypeC CH340N
通过CH340N连接TypeC,可直接使用TypeC线连接到电脑,同时选用CH340N对应焊接比较友好
9.电位器
电位器通过跳线帽连接到5V,用于测量电压的输入
10.按键
板载4个按键,由于没有硬件上拉,需要配置上拉输入
11.LED
两路LED指示灯,通过跳线帽连接到固定引脚,也可以杜邦线飞线
软件代码
通过宏定义开启不同实验
#include "board.h"
#include "demo.h"
AP_PARAMETER ap_parameter={0};
uint8_t test_ret = 0;
uint16_t value = 0;
unsigned char dat1 = 0;
unsigned char dat2 = 0;
float valueVet = 0;
char str[40] = {0};
#define WIFI_AP_TEST 0
#define WIFI_STA_TEST 0
#define ADC_TEST 1
#define EEPROM_TEST 0
#define LCD_TEST 1
#define OLED_TEST 0
int main(void)
{
board_init();
bsp_led_init();
bsp_uart_init();
WIFI_ESP01S_Init();
printf("start\r\n");
#if OLED_TEST
OLED_Init(); //初始化OLED
OLED_Clear();
#endif /* OLED_TEST */
#if WIFI_AP_TEST
bsp_gpio_on(WIFI_EN);
bsp_gpio_off(WIFI_RST);
delay_ms(100);
bsp_gpio_on(WIFI_RST);
WIFI_MODE_AP_Init();
#endif /* WIFI_AP_TEST */
#if WIFI_STA_TEST
bsp_gpio_on(WIFI_EN);
bsp_gpio_off(WIFI_RST);
delay_ms(100);
bsp_gpio_on(WIFI_RST);
WIFI_MODE_STA_Aliyun_Init();
#endif /* WIFI_STA_TEST */
#if ADC_TEST
bsp_adc_init();
#endif /* ADC_TEST */
#if EEPROM_TEST
i2c_test();//有问题
#endif /* EEPROM_TEST */
#if LCD_TEST
/* LCD 显示 */
demo_run(); /* 运行示例程序 */
#endif /* LCD_TEST */
while(1)
{
memset(str,0,sizeof(str)); //清0数组,备用
value = Get_ADC_Value(CHANNEL_ADC);
printf("value = %d\r\n", value );
valueVet = (value * 3300 >> 12) * (R2 + R1)/R1/1000.0;
sprintf(str, "%.3fV ", valueVet);
printf("voltage = %f V\r\n", valueVet );
OLED_ShowString(0,0,(uint8_t *)"ABC",8,1);//6*8 “ABC”
OLED_ShowString(0,8,(uint8_t *)"ABC",12,1);//6*12 “ABC”
//OLED_ShowString(0,20,(uint8_t *)str,16,1);//8*16 “ABC”
OLED_ShowString(0,36,(uint8_t *)str,24,1);//12*24 “ABC”
OLED_Refresh();
#if WIFI_AP_TEST
//判断是否有设备连接
Get_Device_connection_status();
//delay_ms(500);
bsp_led_toggle(LED1);
//bsp_gpio_toggle(BEEP);
bsp_led_toggle(LED2);
//如果当前设备连接了服务器(手机APP连接上热点)
if( wifi_link_flag == 2 )
{
if( Get_WIFI_AP_Data(&ap_parameter) == 1 )//如果接收到数据
{
//输出接收的数据
// printf("ID = %d\r\n", ap_parameter.device_id );//设备ID
// printf("data len = %d\r\n", ap_parameter.device_datalen );//发送过来的数据长度
// printf("data = %s\r\n", ap_parameter.device_data );//发送过来的数据
sprintf(str, "%s", ap_parameter.device_data);
OLED_ShowString(0,20,(uint8_t *)str,16,1);//8*16 “ABC”
memset(str,0,sizeof(str)); //清0数组,备用
//delay_ms(500);
}
}
#endif /* WIFI_AP_TEST */
delay_ms(500);
}
}
注意事项
此处可填写在设计制作时需重点关注的点或是易错的地方,示例:
1.彩色丝印看不清,工程中已修正
2.typeC口的四个固定脚建议两边加焊上,笔者的不小心搞掉了,伤到了电路板,通信异常
实物图
1.实物正面
2.实物背面
3.LCD
4.ADC
5.TypeC串口输出
6.阿里云连接
设计图

BOM


评论