Хотів би поділитися власним досвідом роботи з G0 серією, яка, як на мене, є дуже цікавою та популярною серед любителів. Компанія ST Microelectronics випустила в світ G0 серію в 2019 році як заміну “мейнстрімної” F0 серії, але з покращеннями енергоефективності з L4 серії. Тобто дана серія це щось середнє між бюджетною F0 та енергоефективною L4.

G0 базується на 90 нм техпроцесі, що в порівнянні з 130 нм в F0 є вагомим покращенням. Згідно самої ST серія G0 споживає менше 100µA на 1MHz якщо біжить на частоті 64 MHz. Це значно менше в порівнянні з 250µA в F0. Також додався Shutdown режим (все вимкнено, працює лише RTC) до режимів енергозбереження (може бути корисним в певних сценаріях). Деякі старші представники серії мають LP (Low-power) UART.
В G0 серії виробник реалізував ідею зменшення собівартості кінцевого продукту всіма можливими способами:
піни живлення цифрових і аналогових периферій були об’єднані. Тобто тепер весь МК живиться лише від однієї пари пінів — VDD та VSS. Таким чином виробник спрощує процес розведення плати, але і забирає можливість відокремити живлення, що в теорії може мати негативні наслідки. Хоча STM і запевняють, що якраз попрацювали над шумами та стабільністю.
тепер за замовчуванням пін BOOT0 працює як звичайний GPIO, що теж вивільняє один вихід.
вивільнені піни тепер слугують як GPIO, що дозволяє використовувати менші корпуси МК.
збільшена точність внутрішнього резонатора — HSI16.
в моделях (STM32G0B, STM32G0C) з підтримкою Full-Speed USB внесли додатковий 3-ій HSI48 для роботи USB без зовнішнього резонатора.
покращена система захисту від короткочасних стрибків напруги до кількох тисяч вольт.
Наразі G0 серію можна вважати найдешевшою серед усіх МК, навіть незважаючи на недавній запуск ультрабюджетної серії C0.
Ще одне “покращення” в G0 — це відсутність за замовчуванням можливості перейти в режим бутлоадера через пін BOOT0. Тепер завантажитись з системної пам’яті можна спеціальною комбінацією бітів nBOOT0 та nBOOT1 в Option Bytes. Ці біти можна виставити або програмно, або через STM32CubeProgrammer.
Можна повернути стару поведінку виставивши 0 в біт nBOOT_SEL. Якщо nBOOT_SEL = 1 (дефолт) — пін BOOT0 ігнорується.
/*
* LAB Name: STM32 Boot0 Enable
* Author: Khaled Magdy
* For More Info Visit: www.DeepBlueMbedded.com
*/
#include "stm32g0xx.h"
void Flash_Unlock(void) {
FLASH->KEYR = 0x45670123; // Unlock Flash memory
FLASH->KEYR = 0xCDEF89AB;
FLASH->OPTKEYR = 0x08192A3B; // Unlock Option Bytes
FLASH->OPTKEYR = 0x4C5D6E7F;
}
void Boot0_Enable(void) {
FLASH->OPTR &= ~FLASH_OPTR_nBOOT_SEL; // Clear the nBOOT_SEL bit to enable BOOT0 pin functionality
while(FLASH->SR & FLASH_SR_BSY1); // Wait for any ongoing flash operation to complete
FLASH->CR |= FLASH_CR_OPTSTRT; // Start the Option Byte programming
while(FLASH->SR & FLASH_SR_BSY1); // Wait for the programming to complete
FLASH->CR |= FLASH_CR_OBL_LAUNCH; // Launch the option byte loading
}
int main(void) {
if ((FLASH->OPTR & FLASH_OPTR_nBOOT_SEL) == 0) // Check if the nBOOT_SEL bit is already cleared
{
for (;;); // If already cleared, do nothing
}
Flash_Unlock(); // Unlock flash memory and option bytes
Boot0_Enable(); // Enable BOOT0 pin functionality
for (;;); // We should never reach this point as the system will reset
}
Тобто пін BOOT0 працює лише тоді, коли nBOOT_SEL = 0. Новий підхід ST пояснює гнучкістю та зручністю для заводської прошивки. Бутлоадер тепер сам активується, якщо немає прошивки — незалежно від Option Bytes.
Корпуси: від 8 до 100 пінів
Пам’ять: до 512КБ Flash, до 144КБ RAM
Часто бувають поюзані на AliExpress (з уже записаною прошивкою)
Обов’язковий ST-Link для відновлення
Відсутня підтримка JTAG
Серія G0 виглядає привабливою для бюджетних пристроїв: низька ціна, хороша енергоефективність, вдосконалені можливості. Попри запуск серії C0, G0 наразі виглядає більш вигідною за ціною/можливостями. Найбільший інтерес викликають найдешевші моделі, бо дорожчі втрачають переваги перед іншими серіями STM32.
Посилання на першоджерело: https://solderkid-blog.netlify.app/stm32/neopixel