[Cortex-M4/STM32] NUCLEO-F446RE

CS·2025년 3월 1일

STM32

목록 보기
1/8

NUCLEO-F466RE

RISC기반의 ARM 계열 32bit based MCU를 탑재한 개발 보드이다.

다음과 같은 특징들을 가지고 있다
출처 : https://www.st.com/en/evaluation-tools/nucleo-f446re.html


  • Common features
    STM32 microcontroller in an LQFP64 or LQFP48 package
    1 user and 1 reset push-buttons
    32.768 kHz crystal oscillator

  • Board connectors:
    ST morpho extension pin headers for full access to all STM32 I/Os
    Flexible power-supply options: ST-LINK USB VBUS or external sources
    Comprehensive free software libraries and examples available with the STM32Cube MCU Package
    Support of a wide choice of Integrated Development Environments (IDEs) including IAR Embedded Workbench®, MDK-ARM, and STM32CubeIDE
    Features specific to some of the boards (refer to the ordering information section of the data brief for details)
    Second user LED
    External or internal SMPS to generate Vcore logic supply
    24 MHz or 48 MHz HSE
    User USB Device full speed, or USB SNK/UFP full speed
    Cryptography
    CAN FD transceiver

Board connectors:
External SMPS experimentation dedicated connector
USB Type-C®, Micro-B, or Mini-B connector for the ST-LINK
USB Type-C® user connector
MIPI® debug connector
CAN FD header

On-board ST-LINK (STLINK/V2-1, STLINK-V3E, STLINK-V2EC, or STLINK-V3EC) debugger/programmer with USB re-enumeration capability: mass storage, Virtual COM port, and debug port


CAN 통신이 가능하여 이 개발보드를 선택하게 되었다. 개발은 CubeMX와 CubeIDE를 사용하여 개발할 예정인데, 사실 차량쪽은 이 쪽을 사용하지 않는다고 한다. 하지만 IAR Embedded Workbench, MDK-ARM의 경우 유료로 사용하여야 하고, CubeMX를 통해 전환도 가능하여 CubeIDE를 사용하기로 했다. F3시리즈와 다르게 FPU추가를 통해 floating data type을 사용할 수 있다는 것도 유용한 점이다.

STM32F446RE

최대 180MHz의 속도로 동작하는 고성능 Arm® Cortex®-M4 32비트 RISC 코어를 기반으로 합니다. Cortex-M4 코어는 단정도 부동소수점 연산 유닛(FPU)을 포함하며, 모든 Arm® 단정도 데이터 처리 명령어와 데이터 타입을 지원합니다. 또한, DSP 명령어 세트를 구현하고 있으며, 메모리 보호 유닛(MPU)을 포함하여 애플리케이션의 보안을 강화합니다.

이 장치는 고속 내장 메모리(최대 512KB 플래시 메모리, 최대 128KB SRAM), 최대 4KB 백업 SRAM을 포함하며, 두 개의 APB 버스, 두 개의 AHB 버스 및 32비트 멀티 AHB 버스 매트릭스에 연결된 확장된 입출력(I/O) 및 주변 장치를 제공합니다.

모든 장치는 3개의 12비트 ADC, 2개의 DAC, 저전력 실시간 시계(RTC), 12개의 범용 16비트 타이머(모터 제어용 PWM 타이머 2개 포함), 2개의 범용 32비트 타이머를 제공합니다.

또한, 표준 및 고급 통신 인터페이스를 갖추고 있습니다.

주요 기능

  • 코어
    Arm® 32비트 Cortex®-M4 CPU (부동소수점 연산 유닛 포함)
    ART Accelerator™를 활용한 플래시 메모리에서 0-웨이트 상태 실행
    최대 동작 주파수: 180MHz
    메모리 보호 유닛(MPU) 지원
    성능: 225 DMIPS / 1.25 DMIPS/MHz (Dhrystone 2.1 기준)
    DSP 명령어 지원

  • 메모리
    512KB 플래시 메모리
    128KB SRAM
    최대 16비트 데이터 버스를 지원하는 유연한 외부 메모리 컨트롤러 (SRAM, PSRAM, SDRAM, NOR/NAND 플래시 메모리 지원)
    듀얼 모드 QuadSPI 인터페이스
    LCD 병렬 인터페이스 (8080/6800 모드 지원)

  • 클럭, 리셋 및 전원 관리
    1.7V ~ 3.6V 동작 전압 및 I/O 전압 지원
    전원 온/오프 리셋(POR), 전원 감지 리셋(PDR), 전압 감지 리셋(PVD), 갈색 전압 강하 리셋(BOR)
    4MHz ~ 26MHz 크리스탈 오실레이터
    공장 보정된 16MHz 내부 RC 오실레이터 (1% 정확도)
    32kHz RTC 오실레이터 (보정 기능 포함)
    내부 32kHz RC 오실레이터 (보정 기능 포함)

  • 저전력 모드
    슬립(Sleep), 정지(Stop), 대기(Standby) 모드
    RTC 및 20×32비트 백업 레지스터와 선택적 4KB 백업 SRAM을 위한 VBAT 전원 공급 지원

  • 아날로그 기능
    3× 12비트 ADC (최대 2.4MSPS, 최대 24채널 지원)
    트리플 인터리브드 모드에서 최대 7.2MSPS 지원
    2× 12비트 DAC

  • DMA 및 타이머
    16채널 DMA 컨트롤러 (FIFO 및 버스트 지원)
    최대 17개의 타이머 :
    2× 워치독 타이머
    1× SysTick 타이머
    최대 12개의 16비트 타이머 및 2개의 32비트 타이머 (최대 180MHz 동작)
    각 타이머는 최대 4개의 입력 캡처(IC) / 출력 비교(OC) / PWM 또는 펄스 카운터 기능 제공

  • 디버그 기능
    SWD 및 JTAG 인터페이스
    Cortex®-M4 Trace Macrocell™ 지원

  • 입출력(I/O) 기능
    최대 114개의 인터럽트 지원 I/O 포트
    최대 111개의 고속 I/O (최대 90MHz)
    최대 112개의 5V-내성(I/O 보호 기능 포함) 포트

  • 통신 인터페이스 (최대 20개 지원)
    SPDIF-Rx
    최대 4개의 I2C 인터페이스 (SMBus/PMBus 지원)
    최대 4개의 USART 및 2개의 UART (최대 11.25Mbit/s, ISO7816 인터페이스, LIN, IrDA, 모뎀 제어 지원)
    최대 4개의 SPI (최대 45Mbit/s), 이 중 3개는 I2S 기능 겸용
    내부 오디오 PLL 또는 외부 클럭을 통한 오디오 클래스 정밀도 지원
    2× SAI (직렬 오디오 인터페이스)
    2× CAN (CAN 2.0B Active 지원)
    SDIO 인터페이스
    CEC (소비자 전자제품 제어 인터페이스)

  • 고급 연결 기능
    USB 2.0 풀 스피드 장치/호스트/OTG 컨트롤러 (온칩 PHY 포함)
    USB 2.0 고속/풀 스피드 장치/호스트/OTG 컨트롤러 (전용 DMA, 온칩 풀 스피드 PHY, ULPI 포함)
    전용 USB 전원 레일을 통해 전체 MCU 전원 공급 범위에서 온칩 PHY 작동 가능
    8비트 ~ 14비트 병렬 카메라 인터페이스 (최대 54MByte/s 전송 속도)

  • 기타 기능
    CRC 계산 유닛
    RTC (하드웨어 캘린더 및 서브초 정확도 제공)
    96비트 고유 ID 제공
    이 STM32F446xC/E 시리즈는 다양한 고성능 애플리케이션에서 사용할 수 있으며, 특히 실시간 제어, 데이터 처리, 멀티미디어, 모터 제어 및 통신 애플리케이션에 적합합니다.



Bus관련

  1. I.Code bus와 D.code bus : 0x0000_0000~0x1FFF_FFFF

    MCU 내부 flash memory(Code Segment)에 연결하기 위한 AHB-Lite bus protocol기반 32bits bus interface로, MCU내 flash memory와의 연결을 제공한다.

  2. System bus : 0x2000_0000 ~ 0xDFFF_FFFF, 0xE010_0000~ 0xFFFF_FFFF
    MCU 내부 SRAM, 주변 장치, 외부 memory등을 위한 AHB-Lite bus protocol기반 32bits bus interface

    SRAM 영역:
    STM32F446의 128KB SRAM은 보통 0x2000_0000부터 시작하며, 사용 가능한 크기에 따라 0x2000_0000 ~ 0x3FFF_FFFF 영역 내 일부가 할당됨.

    주변 장치(Peripherals) 영역:
    보통 0x4000_0000 ~ 0x5FFF_FFFF 범위에 매핑되어 있으며, APB 및 AHB 기반의 다양한 주변 장치들이 이곳에 연결
    ex) PWM, TIM, GPIO, I2C, SPI, CAN, USB, RTC 등등

    외부 메모리 영역:
    외부 메모리(예: SDRAM, NOR/NAND Flash 등)는 일반적으로 0x6000_0000 이상(0x6000_0000 ~ 0x9FFF_FFFF 등)의 주소 범위.

  3. PPB bus : 0xE000_0000 ~ 0xE00F_FFFF
    AHB/APB bus protocol기반 32bits bus interface.
    주로 NVIC(인터럽트), FPW, ITM, TPIU, ETM, ROM table(EEPROM)등을 위해서 사용됨.

Cortex-M3 이상은 data 전송 시, unaligned 전송을 지원하기에 bus interface는 이를 aligned 전송으로 변환한다. 즉, 모든 전송은 aligned로 간주한다.

위의 블록 다이어그램을 보면, AHB bus가 bridge를 통해 APB2 bus, APB1 bus로 연결되어 각종 주변 장치들과 연결되어 있다.

  • AHB Bus :
    DMA / CPU / RAM 등과 고속, 고성능으로 연결
  • APB2 Bus :
    UART / Timer / SPI / I2C등 저속, 단순 연결. 90[MHz]
    보다 빠른 PWM 발생을 위한 Advanced control timer인 TIM1, TIM8이 여기 연결되어 있다.
  • APB1 Bus :
    APB2보다 2배 느리다. 45[MHz]
    GP/Basic timer와 CAN, I2C 등은 이쪽에 연결되어 있음을 확인할 수 있다.

CubeMX를 통해 Clock Tree를 보면 보기 쉽게 확인 가능하다.
진행하고자 하는 프로젝트에 따라, MCU가 탑재된 보드와 clock설정, Prescaler 설정등을 고려해서 진행하면 되겠다.

profile
학습

0개의 댓글