[ARM] STM32_FreeRTOS, Shared Memory
ARM/2_Study2024. 4. 30. 00:23[ARM] STM32_FreeRTOS, Shared Memory

1.  OSProcess = 프로그램Thread = Process 내부에서 동작하는 프로그램Process → Process Direct Access 불가능 ⇒ IPC(Inter Process Communication) 사용 Windows, Linux : 범용 OS ← 8GB 이상임베디드용 OS : 제한된 기능(스케줄링, 메모리 제어) ← 10kB 이하종류 : RTOS, Micrium OS, …  OS 필수 기능⇒ 스케줄링프로세스가 실행되는 순서를 결정 FCFS(선착순)        : 프로세스는 준비 대기열에 도착한 순서대로 실행. 비선점형 스케줄링 알고리즘우선순위 스케줄링        : 각 프로세스에 우선순위 할당Round Robin(RR) ← 대부분의 OS에서 사용        : 각 프로세스에 실..

[ARM] STM32_Serial Communication(UART), Queue
ARM/2_Study2024. 4. 29. 23:43[ARM] STM32_Serial Communication(UART), Queue

1.  Serial Communication   동기/비동기 통신 방식 핀 다중 통신여부 Slave구분 방법 속도 UART비동기전이중(Full Duplex)TxD, Rxd1:1 통신XCLK이 없어 속도의 제한이 있음I2C동기반이중(Half Duplex)SCL, SDA1:n 통신AddressSPI보다 느림SPI동기전이중(Full Duplex)CLOCK, MOSI, MISO, CS1:n 통신CS(Chip Select)제일 빠름 특징I2C반이중 통신으로 송수신 동시 불가데이터 전송에 Address 송신, ACK bit 수신 프로토콜이 추가되어 속도가 SPI에 비해 느림(100kHz, 400kHz)핀 개수 적음Pull-up 저항 필요SPI속도 가장 빠름 (Mbps)각 Slave별로 CS핀이 필요하여 핀..

[ARM] STM32_PWM, Driver(Motor)
ARM/2_Study2024. 4. 29. 23:14[ARM] STM32_PWM, Driver(Motor)

1.  PWM Prescaler 설정 : 100-1 → 100MHz / 100 : 1MHzARR(Auto Reload Register)Counter Period 조절하여 주파수 조절 (top 값)1MHz → 1 count = 1us@ ARR=1000-1) 0 ~ 999 count하고 overflow → 1kHzCCR (Channel Compare Register) : Pulse 값 조절하여 duty rate 조절PWM mode : mode 1) CNT CCR → 출력 High(시작 Low)Output compare preload : Enable → CCR 값 변경시 다음 주기부터 변경 적용 / Disable → CCR 값 변경시 바로 적용(오류 가능성 있음)CH Polarity 조절하여 시작을 LOW ..

[ARM] STM32_Driver(CLCD I2C, Ultrasonic)
ARM/2_Study2024. 4. 26. 09:03[ARM] STM32_Driver(CLCD I2C, Ultrasonic)

1.  CLCD I2C   1-1.  CLCD 메모리 CGROM(Character Generator ROM)8비트 문자 패턴을 저장하고 있는 메모리208개의 5x8 도트와 32개의 5x10 도트의 문자 패턴 저장(9920bit)Character Code 0b0010 0000(공백) ~ 0b0111 1111(←)까지는 ASCII (아스키 코드) 와 일치          → c언어에서 문자로 표현된 데이터를 변환하지 않고 그대로 LCD에 출력 가능→ 위 표와 같이 문자가 CGROM에 저장되어 있고 저장된 문자를 DDRAM을 통해 화면에 출력→ 표 좌측 CGRAM(1) ~ CGRAM(8)은 사용자가 문자를 만들어 CGRAM에 저장하여 사용 가능 CGRAM(Character Generator RAM)사용자 정의..

[ARM] STM32_메모리 저장&실행 과정, Driver(Button, LED)
ARM/2_Study2024. 4. 26. 00:03[ARM] STM32_메모리 저장&실행 과정, Driver(Button, LED)

1.  메모리 저장 & 실행 과정 `main.c` 소스 파일 Compile → `main.o` 오브젝트 바이너리 코드 파일 변환 → Linker가 `main.elf` 실행 코드로 변환Flash Memory : 실행 코드 저장RAM : 데이터 저장  .elf 실행 코드가 flash Memory에 저장되는데 어떻게 저장? → 메모리는 각 section으로 나뉘어져 있음 .map 파일`.map` 파일에서 각 section을 어디에 저장시킬지 저장되어 있음. (네비게이션 역할)(.text : 사용자 정의 함수 등) LinkerScript 파일더보기/*********************************************************************************** @file ..

[ARM] STM32_Low level Programming
ARM/2_Study2024. 4. 24. 10:01[ARM] STM32_Low level Programming

1.  STM32F411RET6(ARM Cortex-M4) STM32f411RET6 특성Flash Memory : 512 kBytesRAM : 128 kBytesSpeed : 100 MHz   2.  STM32 구조 D-BUS : RAM BUSI-BUS : Flash Memory BUSS-BUS : 주변장치 BUS APB1, APB2 : Bus 이름→ ARM Architecture에서는 모든 peripheral, clock을 사용자가 설정해줘야함⇒ 복잡할 수 있지만 전력 소모에서 이득  3.  ioc를 이용한 설정 3-1.  Clock 설정  PLL회로 : 클럭 증폭→ NUCLEO 보드에는 8MHz 외부 크리스탈 오실레이터가 장착되어 있음..

image