728x90

2024/05 20

STM32 - Clock Configuration

CubeIDE의 Clock Configuration에 대해 알아보겠다.CubeIDE에는 위와 같이 Clock에 대한 설정을 할 수 있는 화면이 구성되어 있다.위 구성은 실제 STM32F4 시리즈의 데이터 시트와 유사한 구조를 가지고 있다.우선 Clock Tree에 있는 용어들을 먼저 정리해보겠다.HCLK : Core Clock으로 실제 소스 코드를 동작시키는 Clock이다.SYSCLK : System Clock으로 Power On Reset 직후에는 무조건 내부 Clock으로 먼저 동작한다.HSE : High Speed External 외부 고속 Clock으로 STM32 외부에 Crystal/Ceramic resonator가 필요하다. Duty가 50% 이하인 외부 구형파, 삼각파 신호로도 사용이 가능하..

STM32 - GPIO / 7_segment Counter 0~9까지 숫자 나타내기

Project 생성 Project는 MCU/MPU Selector STM32F429ZI로 생성하여 사용하였다.위 옵션은 주변 장치의 초기화 코드를 직접 작성하는 대신, 도구나 프레임워크가 주변 장치마다 필요한 초기화 코드를 자동으로 생성해주는 옵션이다. 또한 .c와 .h 파일로 나눠서 생성해주며 .c 파일은 초기화 코드를 포함하고, .h 파일은 해당 주변 장치에 대한 함수 프로토타입 및 상수 정의 등을 포함한다.7_segment 7_segment는 아래와 같이 PORT가 구성되어 있고핀 번호7-세그먼트 마디abcdefgDOT1000010002000100003000000004001000005000000016010000007100000008000000009000001001000000010 BCD코드 a(13..

STM32 - GPIO 레지스터에 대하여 (MODER ~ AFRH)

GPIO 레지스터 종류 GPIO 레지스터는 GPIO_TypeDef 구조체에 10개가 정의되어 있다. 1. MODER2. OTYPER3. OSPEEDR4. PUPDR5. IDR6. ODR7. BSRR8. LCKR9. 10. AFR[2] (AFRL, AFRH)Configuration(설정)과 관련된 레지스터1. MODER2. OTYPER3. OSPEEDR4. PUPDR Data와 관련된 레지스터5. IDR6. ODR Set/Reset과 관련된 레지스터7. BSRR Locking과 관련된 레지스터9. 10. AFR[2] (AFRL, AFRH) 위와 같이 register들이 선언된 것을 확인할 수 있다.  GPIOA~K까지 각 Port는 각자의 시작 주소가 있으며, 각 레지스터 마다 offset을 통해 해당 레..

STM32 - (GPIO 구동용 함수 분석 / Board Select & MCU/MPU 차이)

GPIO 구동용 함수 STM32F429의 HAL 드라이버의 GPIO 구동용 함수에는 크게 3가지가 있다.1. 초기화 및 초기화 해제용 함수2. 입출력용 함수3. 인터럽트 처리용 함수 1. 초기화 및 초기화 해제용 함수HAL_GPIO_Init() : GPIO를 설정 조건에 맞추어 초기화한다.HAL_GPIO_DeInit() : GPIO를 reset 이후 디폴트 값으로 설정(초기화 해체)한다. 2. 입출력용 함수HAL_GPIO_ReadPin() : GPIO의 지정된 핀의 값을 읽어온다.HAL_GPIO_WritePin() : GPIO의 지정된 핀을 0 또는 1로 설정한다.HAL_GPIO_TogglePin() : GPIO의 지정된 핀의 값을 토글(toggle) 시킨다.HAL_GPIO_LockPin() : GPIO..

STM32 - HAL Driver / 프로잭트 생성 / GPIO (+실습)

STM32F429의 핀 이름이 P(Port)로 시작하는 모든 핀들은 GPIO로 사용이 가능하다.PA~PH 포트까지 0~15번까지 총 16개의 핀으로 구성되어 있다.- HAL Driver MCU의 주변장치를 제어하는 동작은 HAL(Hardware Abstraction Layer)에서 이루어진다.이를 위하여 HAL 레벨에는 여러 개의 파일들이 있으며 이러한 파일의 묶음을 HAL 드라이버라고 한다. HAL 드라이버는 주변장치의 구동을 위해 다음과 같은 종류의 데이터 구조체를 가진다.1. 주변장치 핸들링용 구조체2. 초기화 및 동작 조건 설정용 구조체3. 작업 수행용 구조체 1. 주변장치 핸들 구조체(Peripheral handle structures)주변장치 핸들 구조체는 주변장치/모듈의 설정, 레지스터 등과..

C - 포인터

포인터 변수란 메모리의 주소 값을 저장하기 위한 변수다. 포인터는 '변수 형태의 포인터' '상수 형태의 포인터'를 어우르는 표현이다.  int main(void){ int num = 7; int * pnum; pnum = #}위 코드의 의미는 int형 변수 num에는 7의 값이 저장되어 있고, 포인터 pnum은 num 변수의 주소값이 저장되어 있다.& 연산자의 피연산자는 변수이어야 하며, 상수는 피연산자가 될 수 없다.int main(void){ int num1 = 5; double * pnum1 = &num1; double num2 = 5; int * pnum2 = &num2;}위 코드는 자료형이 일치하지 않기 때문에 문제가 발생할 수 있다.포인터가 가리키는 메..

디지털 타이머 - (아두이노, C언어(포인터))

https://insoobaik.tistory.com/592 디지털 논리회로 설계 - 가산기, 인코더, 디코더, 멀티플렉서, 7_Segment기본 논리게이트에 대한 내용 (NOT, AND, OR, NAND, NOR XOR)https://insoobaik.tistory.com/576 기본 논리 게이트 설계 (아두이노 IC Chip, Code 구현, C언어 Code 구현)보호되어 있는 글입니다. 내용을 보시려면 비밀insoobaik.tistory.com7_segment 및 기본 내용들은 위 글을 참고한다.디지털 타이머를 만들기 위해서는 0~9초 다음 10초가 0~59초 다음 1분이 0~59분 다음 1시간이 되어야 한다.시,분,초를 위해서는 총 6개의 7_segment가 필요하고, 각 자리에 맞게 이전 시간에..

FPGA - ILA(Integrated Logic Analyzer) 사용법

ILA(Integrated Logic Analyzer)는 디지털 회로의 디버깅과 분석을 위해 사용되는 도구이다. FPGA(Flexible Programmable Gate Array) 디자인에서 유용하다. ILA는 디지털 회로의 내부 신호를 모니터링하고 분석하는 데 도움이 되며, 디버깅 시간을 단축하고 회로의 동작을 이해하는데 도움이 된다. 좌측 IP Catalog를 클릭하여 검색창에 ila를 검색한다. Number of probes는 ILA로 캡처하려는 시그널의 수를 지정하는 항목이다. 이 값은 ILA에서 감시하고 분석할 수 있는 시그널의 개수를 결정한다.일반적으로 디버깅할 시그널의 수가 많을수록 문제 해결이 더욱 쉬워지지만, FPGA 디바이스의 리소스가 한정되어 있기 때문에 최적의 수를 지정해야 한다...

Semiconductor/FPGA 2024.05.07

용어정리 (반도체, 디지털, 아날로그, ARM)

용어정리UART(Universal asynchronous receiver/transmitter) : 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종SPI(Serial Peripheral Interface) : 아키텍처 전이중 통신 모드로 동작하는 동기화 직렬 데이터 연결 표준I2C(Inter-Integrated Circut) : 하나의 마스터와 여러개의 슬레이브 기기가 물려 통신이 가능, 클럭 신호를 사용하는 동기식 통신 방식이라 시간에 자유롭다. 슬레이브 선택을 위해 항상 주소 데이터가 붙기에 긴 데이터를 전송하기엔 부적합하다. IC사이 통신 링크를 제공하는 양방향 2와이어 직렬 버스FSM(finite-state machine) : fsm의 핵심은 단 하나의 상태만..

728x90