兆易创新 GD32 Arm® MCU 快速入门指南

demi的头像
demi 发布于:周五, 03/26/2021 - 10:34 ,关键词:

兆易创新是一家总部位于北京的业界领先的半导体公司。公司从Nor Flash产品起步,并于2013年开始推出32位微控制器GD32系列MCU,提供了基于Arm Cortex-M架构的众多产品系列,截止当前,GD32 MCU提供了360多个Arm Cortex -M MCU产品型号,使其成为中国最大的32位通用MCU供应商。

近日,兆易创新 GD32E50x系列通用MCU荣获“年度最佳MCU”大奖。

兆易创新GD32 MCU围绕Arm Cortex-M3,Arm Cortex-M4 ,Arm Cortex-M23和Arm Cortex-M33内核构建了满足多种应用需求的产品线,Arm Cortex-M产品系列如下图1所示。

图1. GD32 Arm® Cortex®-M 32-bit MCU系列

开发板简介

GD32微控制器家族包括带有大闪存的型号,但出于设备评估目的,我们重点关注芯片外设。基于Arm Cortex-M23的微控制器GD32E230,GD32E231和GD32E232在性能和成本之间取得了很好的平衡。 入门级系列GD32E230提供高达72MHz的时钟速率。

GD32 MCU提供了广泛的开发工具[2]。单击“GD32开发板”链接可以查看全部的全功能开发板。单击“ GD32 MCU入门套件”链接,即可查看全部入门级学习套件。

开发板通过mini-USB接口供电,而GD-Link USB接口则用于调试器使用,在某些情况下,它也可以用于供电。关于编程和调试设备,GD32开发板支持多种调试下载工具,可以使用GD-Link,Segger J-Link或任何其他Arm调试下载工具。

使用该开发板进行开发之前,首先要通过USB连接线将开发板与电脑连接。LED流水灯例程已经预先烧录到开发板,开发板上电后,用户可以看到LED灯闪烁。

图 2. GD32E230C-EVAL

作者在本文的其余部分中使用了GD32E230C-EVAL板(参见图2),此板基于GD32E230系列MCU设计。开发板相关资料可以在www.GD32MCU.com上找到,该网站提供中文版和国际版两种版本,可通过网站上方导航栏进行切换。

安装 IDE

第一步,转到URL https://www2.keil.com/mdk5/editions/lite,然后单击“下载和安装”按钮。KEIL网站将您带到另一个窗口,然后您可以单击“下载MDK-Core”选项,注册后您可以下载(大约850 MB)MDK529.EXE文件。下载后,您可以像安装其他Windows程序一样进行安装(参见图3)。

下一步是安装设备包,可以在www.GD32MCU.com上的“资料下载—应用软件”目录下找到GD32E23x_DFP.1.0.0.pack下载并安装。

图 3. Keil安装

下一步是下载GD32E23x设备的固件库和对应的例程。可以在“资料下载”页面上的“开发板材料”目录中下载“ GD32E23x Demo Suites ”文件。该文件包括示例项目和其固件库。将该文件解压出来,然后将它放在之前在MDK安装中创建的文件“ Keil_v5_for_gigadevice”中。

在以下路径下 “ GD32E23x_Demo_Suites_ V1.0.1GD32E230C_EVAL_Demo_SuitesProjects” 可以找到开发板的示例例程。 任意打开其中一个项目,其文件夹结构如下图4所示。

图 4. GD32开发板例程文件夹结构。

我们打开位于“Application”文件夹中的main.c文件,进行编译,编译完成后会看到如下成功信息“. output GD32E230C_EVAL.axf” - 0 Error (s), 0 Warning (s).”

运行程序

使用USB mini连接线将开发板连接至PC 。如果Windows没有显示驱动程序安装提示,可以在KEIL环境中单击“Options for Target”设置窗口,然后选择“Debug”选项卡。使用的是GD-Link调试器,请在“Use”选项下选择CMSIS-DAP。如果使用的是Segger J-Link调试工具,在“Use”选项下应选择“ J-Link / J-TRACE Cortex”。选择成功后,在“ SWDIO”选项下,设备应显示为已选中状态,如下图5所示。

图5. 在Keil之内设置GD32目标设备

确认后移至“Utilities”选项卡,取消选中“Use Debug Driver”复选框,然后单击“Settings”,选择与板载MCU芯片上的flash匹配的flash类型,然后单击“Add”和“OK” 如下图6所示。

图6. Flash设置

设置完成后就可以将程序下载到开发板上了,下载程序将覆盖预编程的flash区域并停止LED闪烁。

代码详解

GD32 MCU通常使用CMSIS进行编程,首先在main.c文件中查看本机API。打开main.c文件并找到以下代码:

int main(void)

{

systick_config();

.

.

.

}

GD32 MCU与其他厂商的微控制器类似,时钟树的配置必须在代码中完成。如下所示:

void systick_config(void)

{

/* setup systick timer for 1000Hz interrupts */

if (SysTick_Config(SystemCoreClock / 1000U)){

/* capture error */

while (1){

}

}

/* configure the systick handler priority */

NVIC_SetPriority(SysTick_IRQn, 0x00U);

}

可以通过GPIO API配置LED。使用之前,GPIO外设模块必须开启时钟:

/* enable the LED1 GPIO clock */

rcu_periph_clock_enable(RCU_GPIOA);

/* configure LED1 GPIO port */

gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_ PUPD_NONE, GPIO_PIN_8);

gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8);

/* reset LED1 GPIO pin */

gpio_bit_reset(GPIOA,GPIO_PIN_8);

第一步是设置通信方向,然后使用GPIO_OSPEED_50MHZ参数配置GPIO输出信号压摆率,然后继续将GPIO分配给用于配置驱动器硬件的LED引脚。

然后看一下模数转换器项目。展开Order Peripherals,然后双击gd32e23x_adc.c文件。我们可以使用adc_enable(void)启用ADC硬件,它将直接写入某些寄存器,这些寄存器在头文件中分配物理地址:

void adc_enable(void)

{

if(RESET == (ADC_CTL1 & ADC_CTL1_ADCON)){

ADC_CTL1 |= (uint32_t)ADC_CTL1_ADCON;

}

}

该函数不会返回任何数据结构。这种方式在void adc_ disable(void)中也同样存在,该方法不需要任何参数,而是直接写入寄存器:

void adc_disable(void)

{

ADC_CTL1 &= ~((uint32_t)ADC_CTL1_ADCON);

}

然后转向I2C外设,打开文件gd32e23x_i2c.c,也可以在“ GD32E23x_Peripherals”文件夹中找到该文件。在这里,可以确认上述观点。GD32 MCU不使用GD32 API中的结构体来描述外围设备。例如,当需要将I2C寄存器取消初始化或重置为其默认值时,可以在调用时传递目标通道的数字ID:

void i2c_deinit(uint32_t i2c_periph)

{

switch(i2c_periph){

case I2C0:

/* reset I2C0 */

rcu_periph_reset_enable(RCU_I2C0RST);

rcu_periph_reset_disable(RCU_I2C0RST);

break;

case I2C1:

/* reset I2C1 */

rcu_periph_reset_enable(RCU_I2C1RST);

rcu_periph_reset_disable(RCU_I2C1RST);

break;

default:

break;

}

}

对C语言不熟悉的开发人员可能会对uint32_t数据类型感到好奇,它仅仅描述了任何32位无符号整数。实际上,GD32 MCU的外设非常容易使用。

结论

使用KEIL嵌入式开发工具的开发人员会很容易上手使用GD32 MCU。您会发现GD32代表了一系列经过深思熟虑且功能强大的32位微控制器,与其他厂商提供的产品相比,其中一些还额外提供了许多其他功能。

网页链接

[1] GigaDevice Product Selection Guide:
www.gigadevice.com/wp-content/uploads/2019/06/GigaDevice-Product- Selection-Guide.pdf

[2] GigaDevice GD32 Development Tools:
www.gigadevice.com/products/microcontrollers/gd32-development-tools/

来源: GD32MCU

围观 3388