NUCLEO-C031C6: Difference between revisions

From Embedded Workshop
Jump to navigation Jump to search
No edit summary
No edit summary
Line 26: Line 26:
  * Blue PushButton, B1, connects to PC13, grounding the signal when pressed
  * Blue PushButton, B1, connects to PC13, grounding the signal when pressed
  * Reset Button, B2, connects to NRST, used to reset the STM32 microcontroller
  * Reset Button, B2, connects to NRST, used to reset the STM32 microcontroller
  * 32,768Hz crystal oscillator provided, LSE, used for Real Time Clock (RTC), connected to PC14-OSC32_IN and PC15-OSC32_OUT
  * 32,768Hz crystal provided for LSE oscillator, used for Real Time Clock (RTC), connected to PC14-OSC32_IN and PC15-OSC32_OUT
  * 48MHz crystal oscillator provided, HSE, used for SYSCLK, connected to PF0-OSC_IN and PF1-OSC_OUT
  * 48MHz crystal provided, for HSE oscillator, used for SYSCLK, connected to PF0-OSC_IN and PF1-OSC_OUT
  * UART2 connects the target processor to the ST-Link, providing a USB COM port connection on the host computer. Uses PA2 for TX, and PA3 for RX.
  * UART2 connects the target processor to the ST-Link, providing a USB COM port connection on the host computer. Uses PA2 for TX, and PA3 for RX.
  * I2C1 connects to the Arduino Headers (SCL/D15, SDA/D14) using PB8(SCL) and PB9(SDA)
  * I2C1 connects to the Arduino Headers (SCL/D15, SDA/D14) using PB8(SCL) and PB9(SDA)

Revision as of 13:02, 25 February 2023

The NUCLEO-C031C6 development board uses the STM32-C036C6 as the target processor. This processor was developed for cost sensitive applications in an attempt to gain more market share from the 8-bit processor world.
STMicro derived this part from the STM32-G0 family.
At first glance, I thought, "This isn't a 64-pin device." I was right. That's a 48-pin part (their largest C0 family part)

Processor: STM32-C031C6

Arm® Cortex®-M0+ core
32KB Flash
12KB SRAM
48MHz SYSCLK
32.768 kHz crystal oscillator
Internal 48MHz RC oscillator
Peripherals:
2 USARTs
5 timers: TIM1, TIM3, TIM14, TIM16, TIM17, all 16-bit, all PWM capable
1 SPI / I2S interface
1 I2C
1 ADC (multiple channel)
CRC calculation unit
IWDG independent watchdog
WWDG system window watchdog
Unique 96-bit signature

Nucleo Board

* Green LED, LD4, connected to PA5, illuminates when driven high, isolated by a transistor to not impact current measurements
* Blue PushButton, B1, connects to PC13, grounding the signal when pressed
* Reset Button, B2, connects to NRST, used to reset the STM32 microcontroller
* 32,768Hz crystal provided for LSE oscillator, used for Real Time Clock (RTC), connected to PC14-OSC32_IN and PC15-OSC32_OUT
* 48MHz crystal provided, for HSE oscillator, used for SYSCLK, connected to PF0-OSC_IN and PF1-OSC_OUT
* UART2 connects the target processor to the ST-Link, providing a USB COM port connection on the host computer. Uses PA2 for TX, and PA3 for RX.
* I2C1 connects to the Arduino Headers (SCL/D15, SDA/D14) using PB8(SCL) and PB9(SDA)
* ST-Link connects to TCK (PA14), TMS (PA13)
https://www.st.com/en/evaluation-tools/nucleo-c031c6.html

NUCLEO-C031C6 New Project Observations

When starting a new project for NUCLEO-C031C6 using STM32CubeIDE, and selecting "Yes"
  to "Initialize all peripherals with their default Mode ?", there where several
  things that were different, a bit odd for this board relative to other NUCLEO boards.
* UART1 is enabled and configured for the board, but not UART2.  (UART2 connects to the debugger's VCP.)
* I2C1 is enabled and configured

Fixes

* The default NUCLEO-C031C6 project configures UART1 - Disable this
* Enable UART2 - use this if you want serial printf() support

STMicro Hands-on workshop

https://content.st.com/stm32c0-workshop-ame.html
Agenda
Overview of the STM32C0 series
Hands-on demonstrations
Lab 1 Blinky: Blink an LED by software
Lab 2 PWM: Use hardware (PWM timer) to blink an LED
Lab 3 EXTI: External Interrupt using a push button
Lab 4 Printf: Printf debugging using UART communication
Lab 5 LL Driver: Example using Low Layer Driver
Lab 6 ADC (optional): ADC example using DMA

Where is everything?

Once an STM32 processor or development board is selected, STM32CubeIDE downloads and installs
a firmware package for the device selected.
I found the install location for the “C0” firmware here:
C:\Users\JimMerkle\STM32Cube\Repository\STM32Cube_FW_C0_V1.0.1
Within this folder are header files, HAL source code, middleware, driver code,
example code, and documentation for the firmware package.
Each project includes a copy of the header files needed for a build.
(Just drill down inside the project's Driver folder.)  Example:
C:\Users\JimMerkle\Documents\STM32_Projects\NUCLEO-C031C6_Blinky\Drivers\STM32C0xx_HAL_Driver\Inc\stm32c0xx_hal_gpio.h

References

M0+ Core
https://developer.arm.com/Processors/Cortex-M0-Plus