General Purpose I/O 기능 Alternate function configuration

Download Report

Transcript General Purpose I/O 기능 Alternate function configuration

GPIO (general purpose IO)
마이크로 프로세서
(Micro Processor)
2015년 2학기
충북대학교 전자공학과
박 찬식
http://gnc.chungbuk.ac.kr
[email protected]
교육관 325호, T. 3259
1
들어가기

학습 목표
 GPIOs

강의 내용
 GPIO
기능
 GPIO 레지스터
2
General Purpose I/O 기능


GPIO
 마이크로프로세서가 주변장치와 통신하기 위해 범용으로
사용되는 입출력 포트
 STM32의 범용 I/O는 병렬로 16비트씩의 데이터를 입출력하기
위한 가장 기본적인 주변장치
GPIO registers (each)
 two 32-bit configuration registers (GPIOx_CRL, GPIOx_CRH)
 two 32-bit data registers (GPIOx_IDR, GPIOx_ODR)
 a 32-bit set/reset register (GPIOx_BSRR)
 a 16-bit reset register (GPIOx_BRR)
 a 32-bit locking register (GPIOx_LCKR)
3
General Purpose I/O 기능

Each port bit of the General Purpose IO (GPIO) Ports
 can be individually configured by software in several modes:










Input floating
Input pull-up
Input-pull-down
Analog
Output open-drain
Output push-pull
Alternate function push-pull
Alternate function open-drain
Each I/O port bit is freely programmable,
The I/O port registers have to be accessed as 32-bit words
(half-word or byte accesses are not allowed).
4
General Purpose I/O 기능

Basic structure of a standard I/O port bit
5
General Purpose I/O 기능


Port bit configuration
table
 CNFy 2비트를 이용하여
출력모드, 입력모드,
부가기능 모드 등의
핀 별 입출력 방식을
설정
Output MODE bits
 MODE 2비트는 출력
모드를 설정
6
General Purpose I/O 기능

Input Configuration
 When the I/O Port is
programmed as Input:




출력 회로는 GPIO 핀에
연결되지 않도록 차단
모든 입력 신호는 Schmitt
trigger 회로 통해 입력
I/O 핀에 인가된 데이터는 매
APB2 클럭 주기로 샘플링되어
입력 데이터 레지스터 (Input
Data Register: GPIOx_IDR)에
저장
입력 데이터는 GPIOx_IDR을
통해 읽음
7
General Purpose I/O 기능

Output configuration
 When the I/O Port is
programmed as Output:

출력 회로가 연결됨
• Open Drain Mode
– ‘0’  하단의 N-MOS ON
– ‘1’  상단의 P-MOS 항상
OFF  출력 신호 Hi-Z
• Push-Pull Mode
– 0’  하단의 N-MOS ON
– ‘1’  상단의 P-MOS ON 
부하로 source current
8
General Purpose I/O 기능

Output configuration
 When the I/O Port is programmed as Output:
출력 데이터는 출력 데이터 레지스터(Output Data
Register: GPIOx_ODR)를 통해 출력
 GPIOx_BSRR 또는 GPIOx_BRR 레지스터를 사용하여
비트 단위로 데이터를 출력할 수 있음
 모든 입력 신호는 슈미트 트리거(Schmitt trigger)
회로를 통해 입력
 I/O 핀에 인가된 데이터는 매 APB2 클럭 주기마다
샘플링되어 입력 데이터 레지스터(Input Data Register:
GPIOx_IDR)에 저장됨
 입력 데이터는 입력 데이터 레지스터(Input Data
Register: GPIOx_IDR)를 통해 읽음

9
General Purpose I/O 기능

Alternate function configuration
 When the I/O Port is programmed as Alternate Function:

출력 회로가 출력 데이터 레지스터(Output Data Register:
GPIOx_ODR)와 분리 차단되고, 지정된 주변장치의 출력 신호와
연결됨
10
General Purpose I/O 기능

Alternate function configuration
 When the I/O Port is programmed as Alternate Function:





출력 회로를 open drain 또는 push-pull 모드로 설정할 수 있음
open drain과 push-pull 출력 회로의 동작은 출력 모드와 동일함
모든 입력 신호는 슈미트 트리거(Schmitt trigger) 회로를 통해
입력되므로 데이터 입력이 가능함
I/O 핀에 인가된 데이터는 매 APB2 클럭 주기마다 샘플링되어 입력
데이터 레지스터(Input Data Register: GPIOx_IDR)에 저장됨
입력 데이터는 입력 데이터 레지스터(Input Data Register:
GPIOx_IDR)를 통해 읽음
11
General Purpose I/O 기능

Analog configuration
 When the I/O Port is
programmed as Analog
configuration:



출력 회로는 GPIO 핀에
연결되지 않도록 차단
pull-up, pull-down 저항이
차단  아날로그 모드에서의
핀 상태는 대부분 하이
임피던스(Hi-Z) 상태가 됨
Schmitt trigger 회로는
차단되고 Schmitt trigger
출력은 강제적으로 항상 ‘0’이
되어 입력 데이터 레지스터
(Input Data Register:
GPIOx_IDR)를 읽으면 항상
‘0’으로 읽힘
12
GPIO Registers

Port configuration register (GPIOx_CRL, GPIOx_CRH, x=A…G)
 GPIO 기본 핀 설정 레지스터로써 MODE로는 입출력을 설정하고,
CNFy는 핀 별 입출력 방식을 설정
 포트 설정 레지스터는 A~G 포트에 대해 각각 GPIOx_CRL,
GPIOx_CRH인 32bit 레지스터가 존재하며 각각 0~7핀, 8~15핀
등 총 16개 핀의 동작을 설정
CNFy[1:0]:
Port x configuration bits (y=0...7)
MODEy[1:0]:
Port x mode bits (y=0...7)
00: Analog mode
Input mode
01: Floating input (reset state)
(MODE[1:0]=00)
10: Input with pull-up / pull-down
11: Reserved
00: General purpose output push-pull
Output mode
01: General purpose output Open-drain
(MODE[1:0] > 00)
10: Alternate function output Push-pull
11: Alternate function output Open-drain
00: Input mode (reset state)
01: Output mode, max speed 10 MHz.
10: Output mode, max speed 2 MHz.
11: Output mode, max speed 50 MHz.
GPIOx_CRL 설정 (GPIOx_CRH의 경우 y=8…15)
13
GPIO Registers



Port input data register (GPIOx_IDR) (x=A..G)
 GPIO 입력 데이터 레지스터로 입력 시 들어오는 데이터를 저장하는
레지스터
 IDRy(y=0...15)는 각 핀과 연결되어 들어오는 데이터를 저장
Port output data register (GPIOx_ODR) (x=A..G)
 GPIO 출력 데이터 레지스터로 출력 시에만 유용
 ODRy(y=0...15)에 저장된 값을 각 핀의 출력으로 전달
Port bit set/reset register (GPIOx_BSRR) (x=A..G)
 포트 비트 세트/리셋 레지스터는 GPIOx_ODR의 해당 비트를 세트하거나
리셋시킴
 GPIOx_ODR 레지스터의 해당 비트가 세트되면 해당 핀에 ‘1’, 리셋되면
‘0’값이 출력되며, 세트하기 위해서는 BSy(y=0...15)의 해당 비트를
‘1’설정하고, 리셋하려면 BRy(y=0...15)의 해당 비트를 ‘1’로 설정
14
GPIO Registers


Port bit reset register (GPIOx_BRR) (x=A..G)
 포트 비트 리셋 레지스터는 GPIOx_ODR 레지스터의 해당 비트를
리셋시킴
 GPIOx_ODR 레지스터의 해당 비트가 리셋되면 포트의 해당 핀에
‘0’값이 출력
Port configuration lock register (GPIOx_LCKR) (x=A..G)
 포트 설정 잠금(Port Configuration Lock) 레지스터는 포트 비트의
설정을 잠그는 기능을 하는 레지스터
15