本帖最后由 hwl1023 于 2019-10-15 14:37 编辑
ST在2018年末推出了新一代入门级STM32G0系列,该系列是一款全新的 Arm® Cortex®-M0+ 微控制器。STM32G0除了继承F0系列的优良特性外拥有很多新的特性,力求在每个细节实现最出色的优化,为用户提供最佳的性价比,以灵活的特性满足各种应用需求。
快速的了解下STM32G0的新特性:
1)STM32G0仅需一组电源引脚,不仅降低了BOM成本还可以减少PCB面积,这一特性提升了IO的利用率到高达93%。
2)内部提供精度为1%的高速时钟HSI可以满足绝大数的应用,可进一步节省成本。可以大大减少因为不同的架构及不同开发工具而带来的成本开销和精力投入。
3)STM32G0系列的能效非常高,运行模式功耗低于100μA/ MHz,并提供多种低功耗模式,以节省电能,延长电池续航时间。当实时时钟(RTC)运行时,停止模式功耗仅为3-8μA,待机功耗仅为500nA。
4)集成了一个12位2.5 MSPS的ADC,利用硬件过采样还可将精度提高到16位。支持最新的USB Type-C和Power Delivery 3.0版本。
5)提供 16 KB 到 512 KB片内 Flash,采用 8 引脚到 100 引脚,提供了5种封装形式(SO/TSSOP、WLCSP、BGA、QFN、LQFP)。实现了万能架构 (one-architecture-fits-all) 的概念,以满足未来的市场需求。
ST提供了2款扩展丰富的NUCLEO开发板,NUCLEO-G070RB 和NUCLEO-G071RB,今天我们要测试的是其中的NUCLEO-G071RB。和我们之前用过的众多
NUCLEO,开发板板载了下载器和评估芯片以及各种扩展接口。
开发板主要特性如下:
STM32 microcontroller in LQFP64 package
• 1 user LED shared with Arduino™
• 1 user and 1 reset push-buttons
• 32.768 kHz LSE crystal oscillator
• Board expansion connectors:
– Arduino™ Uno V3
– ST morpho extension pin headers for full access to all STM32 I/Os
• Flexible power-supply options:
– ST-LINK USB VBUS or external sources (3.3 V, 5 V, 7 V to 12 V)
• On-board ST-LINK/V2-1 debugger and programmer with USB reenumeration
capability.
• Three different interfaces supported on USB:
– mass storage
– virtual COM port
– debug port
NUCLEO-G071RB提供了几种供电模式,方便各种模式的使用
5V_USB_STLK from ST-LINK USB connector
• VIN (7 V - 12 V) from Arduino connector or ST morpho connector
• E5V from ST morpho connector
• 5V_USB_CHG from ST-LINK USB
• 3.3 V on Arduino connector or ST morpho connector
得益于ST的优秀的生态建设,在我们熟悉一种芯片的使用后我们可以毫无任何障碍的迁移到另外一种系列的芯片,这种便携性给我的开发和评估带来很大的便利,让我们能短时间内搭建测试平台,编写移植代码。
如果你习惯使用STM32CubeMX,可以使用快速的使用该工具创建一个测试工程。如果你喜欢自己建立工程,那么官方提供的软件开发包可以提供很多的例子供你参考:
通过参考这些例子,我们快速创建一个点灯和输出打印测试工程:
int main(void)
{
HAL_Init();
SystemClock_Config();
LED_Init();
USART2_Init();
while(1)
{
BSP_LED_Toggle();
HAL_Delay(1000);
printf("Hello, Nucleo STM32G0-071RB!!\n");
}
}
通过点灯之后,我们基本熟悉了芯片的时钟、IO、外设的配置,下面我们再添加一个SPI外设,把我们在其他系列上移植好的oled程序快速的移植到nucleo-stm32g071 上,
int main(void)
{
HAL_Init();
SystemClock_Config();
LED_Init();
USART2_Init();
MCO_PIN_Init();
HAL_RCC_MCOConfig(RCC_MCO1,RCC_MCO1SOURCE_HSI,RCC_MCODIV_2);
OLED_Init();
OLED_ShowString(0,0," STM32G071",24);
OLED_ShowString(0,24, " WWW.21IC.COM",16);
OLED_Refresh_Gram();
while(1)
{
BSP_LED_Toggle();
HAL_Delay(1000);
printf("Hello,world\n");
}
}
方便、快速这应该是ST的开发板给我们最直接的感受,我们能从一个系列快速切换到另一个新的系列,在能使用新特性的时候尽量的降低学习成本。谁会不爱这样的ST呢。
最后我们看下内部HSI 16M 进行16分频后通过MCO输出的准确度:
MCO_PIN_Init();
HAL_RCC_MCOConfig(RCC_MCO1,RCC_MCO1SOURCE_HSI,RCC_MCODIV_16);
那么使用内部HSI的SYSCLK(64MHZ)进行64分频后的时钟如何呢,
HAL_RCC_MCOConfig(RCC_MCO1,RCC_MCO1SOURCE_SYSCLK,RCC_MCODIV_64);
最后感谢意法半导体(ST)和21IC 提供的开发板进行评测!
|