F💻W 38

STM32 개발 시, delay 함수 직접 구현해서 사용해보자 !

STM32F205RBT6 데이터시트를 참고하면 120 MHz 의 최대주파수로 동작하는 것을 확인 가능하다. 1us의 딜레이를 수행할 시 , asm("nop"); // CPU에게 아무런 작업도 하지 말라는 명령어 동작을 최대주파수만큼 실행한다 만약 여러가지 통신과 기능이 구현되어 있다면, 스코프에서 확인하면 살짝의 오차가 발생하는 것을 확인할 수도 있다! 1us 를 구현했으니, 10us->100us ->1ms 까지 함수를 만들어 사용이 가능하다. stm의 내장 딜레이 함수 사용하고 싶지 않을때, 만들면 좋다 !

F💻W/Coding 2023.12.06

Atmega로 UART, SPI 통신 구현

Atmega8A 칩을 사용해 UART, SPI 통신을 구현할 것입니다. Atmega를 Master칩으로 설정하고, GPIO 핀을 활용해 연결된 Slave칩들의 핀들까지 컨트롤 할 것입니다. 따라서 코드를 그대로 적용할 시 작동이 안 될수도 있습니다,,! 그리고 데이터 시트에서 기초 통신 코드를 어셈블리코드와 C코드로 간략하게 기술되어 있습니다. 저도 그 코드를 일부 참고해서 작성했으니, 웬만하면 데이터시트를 먼저 참고해주세요 :> 1. SPI 설정 최소한의 기능으로 동작하기 위해서 라이브러리를 사용하지 않고, GPIO핀을 조작해 직접 SPI 구현할 것입니다. - SPI_MasterInit() : 핀 설정 SCK, MOSI, NSS를 Output으로설정..

F💻W/Coding 2023.12.04

STM32 Clock Configuration System Clock 설정

((stm32f103CBTx 기준 작성 )) ARM Cortex-M3 시스템 프로그래밍 완전 정복 1 - p.181 에서,, USB를 위한 48 MHz Clock은 main PLL에서 생성되는데 이를 위한 clock source는 반드시 HSE crystal oscillator를 사용해야만 한다. HSE : 외부 클럭 HSI : 내부 클럭 ((위 그림에서 HSI가 들어가면 안될텐데 왜 들어간거지,,,)) 내부 클럭도 사용할 수 있긴 하지만 정확도가 떨어진다

F💻W/그 외 2023.06.30

DMA - Dynamic Memory Access (MSP Init)

메모리에 직접 접근하는 기술 CPU의 개입 없이 I/O 장치와 메모리 간의 데이터 전송을 허용하는 기술 CPU가 다른 작업을 수행하는 동안에도 I/O 장치에서 데이터를 전송할 수 있으므로 시스템 성능 향상됨 timers, ADC, SPIs. I2Cs, USARTs 에서 사용된다. 따라서 위 기능들을 사용할 때는 MSP Init을 해줘야 함. 아래 예시코드를 보면 UART_MSPInit 함수를 사용한다. (주의할 점은 하단의 __HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE); 가 안써져 있다. 써줘야 UART의 동작이 정상적으로 구현된다) void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitS..

F💻W/그 외 2023.06.30

GPIO MODE의 종류와 설명

gpioModeInputPull GPIO 핀을 입력으로 설정하고 풀업 저항을 활성화 gpioModeInputPullFilter GPIO 핀을 입력으로 설정하고 풀업 저항을 활성화하며, 핀의 전압이 변할 때 임계값을 설정하여 노이즈를 제거 gpioModePushPull GPIO 핀을 출력으로 설정하고, 핀의 전압을 HIGH 또는 LOW로 설정할 수 있음. GPIO 핀의 출력 드라이버의 전압 강도(drive strength)를 설정할 수 있음. gpioModePushPullDrive GPIO 핀을 출력으로 설정하고, 핀의 전압을 HIGH 또는 LOW로 설정할 수 있음 gpioModeWiredAnd Open-drain output gpioModeWiredOr GPIO 핀을 출력으로 설정하고, 핀의 전압을 HI..

F💻W/그 외 2023.06.26