[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 외부 크리스탈 오실레이터가 장착되어 있음..

[ARM] I2C Level Shifter
ARM/1_Study2024. 4. 10. 03:28[ARM] I2C Level Shifter

■ Level Shifter 양 디바이스의 전압이 다를 때 사용 Level Shifter를 사용하지 않으면 Low Level Module의 High signal 3.3V가 High Level Module에서 High signal로 인식하지 못할 수 있음 또한, High Level Module의 High signal 5V가 Low Level Module에 인가되었을 때 손상을 입힐 수 있음 Mobility가 더 좋은 nMOS 주로 사용 Pull-up Register 이용 동작 원리 1. High Level Module → Low Level Module signal transmit 2. Low Level Module → High Level Module signal transmit Made By Minseok..

[ARM] STM32_FND,DHT11
ARM/1_Study2024. 4. 8. 22:20[ARM] STM32_FND,DHT11

1. FND Common Cathode type D1 ~ D4 : Common pin → 0이면 ON, 1이면 OFF A ~ G : Segment pin → 1이면 해당 핀 ON DP : Decimal pin → 1이면 소수점 ON (1), (2) : Prescaler : 16-1 (3) : PB0 ~ PB7 : GPIO Output(A ~ DP), PC0 ~ PC3 : GPIO Output(D1 ~ D4) `SysTick_Handler()` : 1ms마다 실행 → `SystickCallBack()` 함수 1ms마다 실행 1-1. 2, 4번째 FND만 ON 더보기 void SystickCallBack()// Run every 1ms { // 2, 4번째 FND만 켜짐 static int pos = 0; ..

image