본문 바로가기
프로젝트 기록/23SEMA_Control_STM32

Nucleo board, and dma

by 소요이 2023. 1. 5.
728x90


<NUCLEO = 12bit의 해상도>
즉, 0과 1을 가질 수 있는 숫자가 12개이고
그 경우의 수는 2^12 = 4096임
따라서 조도센서, 기타 센서로 받아오는 ADC값의 범위는 0~4095임 이건 맞음
근데 블로그 중에 stm인데 1024까지의 값을 받아온 경우도 있다. (?)
stm32 입력전압

<질문을 위한 공부>
DMA controller(Direct Memory Access)
주변 장치와 SRAM사이 데이터 교환을 DMA controller가 수행하고, 프로세스는 다른 작업을 수행함 -> 성능 개선 효과
 +) 마프에서 타이머를 여러개 실행하고, 그 때마다 센서값도 받아왔을 때 갑자기 타이머가 느리게 돌아갔는데, 이런 것도 dma controller 사용을 통해 개선할 수 있지 않을까?

인터럽트 처리도 일종의 오버헤드인데, 너무 잦은 인터럽트가 발생하면 CPU에도 비효율이 발생하게 됨. 메모리는 CPU의 작업공간이라 센서와 같은 I/O들은 메모리에 접근하려면 CPU를 거쳐 가야하는데, 메모리에 접근할 수 있는 장치를 하나 더 만든 것이 DMA controller이다.
STM32의 경우, Master이 Cortex Core, DMA Controller이며, Slave는 Flash, SRAM, AHB1, AHB2가 있음
순서: I/O 장치들이 각 작업을 끝내면 local buffer에 저장시키고 특정 분량이 차면 DMA controller가 CPU대신 I/O장치들의 local buffer에 있는 내용들을 메모리에 카피해줌. 이 때 한번에 인터럽트를 걸어 발생 빈도를 낮추는 것임.
특징: 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용함, byte가 아니라 block 단위로 인터럽트를 발생시킴.


<stm32 보드- core>
이 주제가 나온 이유: dma방식 할 때 master가 될 수 있는 게 Cortex Core, 그리고 dma controller의 2가지가 있다고 함. 근데 core를 모름
-> core 검색 -> F1,4등 제품 라인별로 CoreMark가 다름
정보: STM32는 STMicroelectronics의 32 비트 마이크로컨트롤러 유닛(MCU) 제품군이다. STM32 칩은 Cortex-M7F, Cortex-M4F, Cortex-M3, Cortex-M0 + 또는 Cortex-M0와 같은 32 비트 ARM 프로세서 코어를 기반으로하는 관련 시리즈로 분류된다. 내부적으로 각 마이크로 컨트롤러는 프로세서 코어, 정적 RAM, 플래시 메모리, 디버깅 인터페이스 및 다양한 주변 장치로 구성되어있다.
의문: high performance, mainstream, ultra-low-power, wireless 별로 전력 소비량이 얼마나 차이나는지? 또 유의미한지?

'프로젝트 기록 > 23SEMA_Control_STM32' 카테고리의 다른 글

[Timer] 스톱워치 만들기  (0) 2023.01.08
[STM32] LSE 선택하는 법  (0) 2023.01.07
dma, interrupt, polling방식 차이점  (0) 2023.01.05
for LoRa,, 정리  (0) 2023.01.05
수소차 전체 구조 공부  (0) 2023.01.02