개발 관련 학습정리(62)
-
[Cortex-M3] 6. DMA와 ADC
오늘은 DMA(Direct Memory Access)와 ADC(Analog to Digital Converter)에 대하여 알아보자 DMA는 메모리로 데이터를 전송해주는 페리퍼럴로, ADC의 값을 전달하는데도 유용하게 쓰인다. DMA는 1부터 7까지의 채널로 이루어져 있으며 각각의 우선순위를 결정할 수 있다는 특징이 있다. 그럼 이제 DMA를 다루기 위한 레지스터들을 알아보자. DMA register 1. DMA_CCRx (DMA channel x configuration register) MEM2MEM (Memory to memory bit) : 메모리에서 메모리로 보내는 모드를 설정하는 비트이다. MSIZE1...0 (Memory size) : 보낼 메모리의 비트 단위를 설정한다. 8/16/32비트로..
2019.09.16 -
[Cortex-M3] 5. Systick, TimerX 제어하기 (2)
이번에는 systick에 이어서 ARM의 타이머를 알아보도록 하자 먼저 sysclk이 AHB 프리스케일러로 들어온다. 여기서 분주비로 나눠서 시스템 클락, APB1, APB2로 제공된다. APB1에서는 분주비로 나눠서 APB1의 페리페럴에게 제공된다. 또한, 타이머 2/3/4에게 제공되며 아까 나뉜 클락을 2배로 증폭시킬수도 있다. APB2에서도 분주비로 나눠서 APB2의 페리페럴에게 제공한다. 이제 타이머들을 제어할 레지스터들을 다뤄보도록 하자. 1. TIMx_CR1 (TIMx Control Register1) Bit 7 ARPE(Auto-reload preload enable) : 자동 리로드 프리로드 활성화 비트 Bit 4 DIR(Direction) : 타이머 방향을 조정하는 비트 Bit 0 CEN..
2019.09.09 -
[Cortex-M3] 4. Systick, TimerX 제어하기 (1)
오늘은 systick을 이용하여 타이머를 만들고, millis구조를 사용하는 방법을 배웠다. systick은 기본적으로 72MHz를 사용하며, 분주를 사용하여 헤르츠를 낮출수 있다. 이제 systick을 다룰 레지스터를 알아보자. 1. STK_CTRL (SysTick control and status register) 여기서는 enable에서 필요한 ENABLE비트만 이해하고 다음 시간에 배우는걸로 넘어가도록 하자. ENABLE (counter enable) : 0 - counter disable 1- counter enable 2. STK_LOAD (SysTick reload value register) 이 RELOAD가 24비트로 이루어진 레지스터는 분주비를 설정하는 레지스터이다. 72MHz로 들어오..
2019.09.08 -
[Cortex-M3] 3. EXTI(외부 인터럽트)와 AFIO, NVIC
EXTI(외부 인터럽트)가 일어나는 과정과 내부 아키텍처에 대해 알아보자. 외부에서 input이 들어오면 다음과 같은 처리를 하여 이루어진다. 1. falling trigger와 rising trigger를 거쳐 인터럽트를 검출한다 2. 마스크 레지스터와 and논리회로를 거쳐 enable 상태일때 통과시킨다. 3. pending 레지스터를 거쳐 nvic컨트롤러로 향한다. 인터럽트는 0~15번까지 존재하며 16~19번 인터럽트는 특수한 인터럽트이다. 간단한 구조를 알아보았으니 제어를 하기 위하여 레지스터를 알아보자. GPIO는 항상 쓰이기 때문에 확실히 외워두고 알아보는게 좋을 듯 하다. 1. EXTI_RTSR (Rising Trigger Selection Register) TRx : 해당 인터럽트를 ri..
2019.09.02 -
[Cortex-M3] 2. Cortex-M3의 GPIO 두번째
저번에 이어서 GPIO 레지스터를 계속 알아보도록 하자. 4. BSRR (Port bit set/reset register) BSRR은 포트를 세트하거나, 리셋하는 레지스터 이다. BR비트가 리셋, BS비트가 세트를 담당한다. 5. BRR (Port bit reset register) BRR은 리셋만 하는 레지스터이다. BR비트가 리셋을 하고, BSRR로 세트 BRR로 리셋하는게 효율이 좋다고 한다. ODR을 쓰는것보다 속도가 BSRR과 BRR을 쓰는것이 연산처리가 간단하여 더 빠르게 사용할 수 있다. 6. IDR (Port input data register) IDR은 ODR과 비슷하게 0번에서 15번핀의 외부 입력값을 받아오는 역할을 한다. 스탠다드 GPIO의 기본 구조 마지막으로 gpio의 구조에 ..
2019.08.27 -
[Cortex-M3] 1. Cortex-M3의 기본 구조와 GPIO
cortex-m3의 구조와 입출력 레지스터를 다루어 보자. 대표적인 특징을 나열하자면, 1. Data bit, address bit는 1clk당 32bit전달 2. Core, Flash, sram은 bus로 연결 3. Core는 thread단위로 제어가능 4. Amba bus(bus matrix)는 master/slave모드로 구성되어 있고 (AHB, APB1…2) bridge로 나눔 5. RCC (Reset Clock Control)이 클록 제공 6. APB2 – gpio, adc / APB1 - I2C, USART, SPI가 포함되어있다. 7. DMA(Direct Memory Access) – flash에서 가져오는 정보를 따로 처리 등이 있다. 이제 cortex-m3의 아키텍처를 이해하였으면, 그에..
2019.08.19