일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Microchip Studio
- 아두이노 통신
- 유심 재발급 제한
- sort
- STM32 IDE
- STM32
- GPIO
- 코테
- 유심 재발급
- Avr
- S&P500
- SPXL
- STM32 라인업
- 정렬
- c#
- C++
- 아두이노
- 객체지향
- 백준
- Mega2560
- 코딩테스트
- CubeIDE
- 정렬알고리즘
- STM32 개발환경
- STM32CubeIDE
- flag 변수
- STL
- 알고리즘
- atmega
- NUCLEO-F103RB
- Today
- Total
뽕구의 개발일지
[STM32] GPIO - INPUT 구조 본문
GPIO (General Purpose Input/Output, 범용 입출력)
정의 : 입력이나 출력을 포함한 동작이 런타임 시에 사용자에 의해 제어될 수 있는, 집적 회로나 전기 회로 기판의 디지털 신호 핀
MCU 쪽으로 신호가 들어오는 경우 INPUT, MCU 쪽에서 신호가 출력되는 경우 OUTPUT 이라는 개념은 매우 기본적입니다. 먼저 STM32F103의 기반이 되는 ARM Cortex-M3의 INPUT 기본 구조부터 단계별로 알아보도록 하겠습니다.
① 입출력 PIN과 입출력 PIN에서 과전압이 들어오면 다이오드쪽으로 전류가 흘러 회로를 보호해주는 "Protection diode" 보호 다이오드입니다.
② Floating 현상을 막기 위해 Push-Pull 저항, Push-Down저항 을 선택할 수 있는 부분입니다.
*Floating 현상은 스위치가 열려있을때 전류의 흐름을 판별할 수 없는 상태임을 의미합니다.
③ 상위 임계점 (upper threshold)에 도달하면 출력 1(HIGH), 하위 임계점(lower threshold) 이하면 출력 0(LOW)로 출력하는 TTL 슈미트 트리거입니다. 쉽게 생각해서 0.8V 이하면 LOW, 1.8V 이상 신호면 HIGH 를 출력합니다.
상위 임계점과 하위 임계점 차를 두고 슈미트 트리거 히스테리시스 라고 합니다.
④ Analog 신호인 경우 "Analog Input"으로 신호가 흐르고, Digital 신호 중 SPI, I2C 같은 정의된 신호인 경우 "Alternate Function Input"로 신호가 흐릅니다.
⑤ Alternate Function Input Digital 신호가 아닌 일반적인 GPIO인 경우 "Input Data Register" 에 저장됩니다.
⑥ Input Data Register에 접근하여 저장된 GPIO 신호를 읽습니다.
아래는 ⑤에 해당하는 Input Data Register의 구조입니다.
STM32의 경우 32bit MCU이기 때문에 레지스터가 32bit 구조이고, INPUT의 경우 GPIOx_IDR 를 사용합니다.
(x : A~I /J/K)
하위 비트 [0] ~ [15] 가 Input Data Register[0] ~ [15] 에 해당하고 상위 [16] ~ [31] 은 Reserved 입니다.
'개발 일지 > STM32' 카테고리의 다른 글
[STM32] GPIO - 입출력 제어 (0) | 2023.08.20 |
---|---|
[STM32] GPIO - OUTPUT 구조 (2) | 2023.08.03 |
[STM32] 개발환경 구축하기 5 - 빌드하기 (Nucleo) (0) | 2023.08.02 |
[STM32] 개발환경 구축하기 4 - 빌드하기 (삽질) (0) | 2023.07.31 |
[STM32] 개발환경 구축하기 3 - 프로젝트 생성 (0) | 2023.07.31 |