본문 바로가기
임베디드.일렉트로닉스/nRF52

nRF52. GPIO (General Purpose Input Output)

by i.got.it 2019. 10. 19.

 

 

nRF52840 GPIO 

Features 

• Up to 32 GPIO pins per GPIO port 

• Configurable output drive strength 

• Internal pull-up and pull-down resistors 

• Wake-up from high or low level triggers on all pins 

• Trigger interrupt on state changes on any pin 

• All pins can be used by the PPI task/event system 

• One or more GPIO outputs can be controlled through PPI and GPIOTE channels 

• All pins can be individually mapped to interface blocks for layout flexibility 

• GPIO state changes captured on SENSE signal can be stored by LATCH register

 

 

레지스터. PIN_CNF[n] , n=0,...,31 

각각의 핀의 설정 하는 레지스터. 아래와 같은 설정 가능. 

 

• Direction 

• Drive strength 

• Enabling of pull-up and pull-down resistors 

• Pin sensing 

• Input buffer disconnect 

• Analog input (for selected pins)

 

 

레지스터 DIR 

0 : Pin set as input, 1 : Pin set as output 

주요 개념이해  : 이 설정의 정확한 의미는 아래 GPIO 내부 구성 그림에서 핀 드라이빙 회로를 핀에 연결 유무 선택하는것. 1이면 드라이빙 회로가 핀으로 연결되고, 0이면 드라이빙회로가 연결되지 않는다.  문서상의 설명에서 Pin set as output 이라고 해서 해당 핀을 입력용도로 사용하지 못한다는 의미 아님. 드라이빙 회로를 핀에 연결해도 input buffer (아래 그림에서 i 로 표시된 버퍼) 를 핀에 연결하면 해당핀을 입력용도로도 사용가능. 

 

레지스터 PIN_CNF[n], n-0,...,31

PIN_CNF[n] 중 필드 DRIVE(아래 그림에서 o 라고 표시된 드라이빙 회로 지칭) 설정은 아래 처럼 총 8 가지 지정가능하다. 

 

    NRF_GPIO_PIN_S0S1 = GPIO_PIN_CNF_DRIVE_S0S1, ///< !< Standard '0', standard '1'.
    NRF_GPIO_PIN_H0S1 = GPIO_PIN_CNF_DRIVE_H0S1, ///< !< High-drive '0', standard '1'.
    NRF_GPIO_PIN_S0H1 = GPIO_PIN_CNF_DRIVE_S0H1, ///< !< Standard '0', high-drive '1'.
    NRF_GPIO_PIN_H0H1 = GPIO_PIN_CNF_DRIVE_H0H1, ///< !< High drive '0', high-drive '1'.
    NRF_GPIO_PIN_D0S1 = GPIO_PIN_CNF_DRIVE_D0S1, ///< !< Disconnect '0' standard '1'.
    NRF_GPIO_PIN_D0H1 = GPIO_PIN_CNF_DRIVE_D0H1, ///< !< Disconnect '0', high-drive '1'.
    NRF_GPIO_PIN_S0D1 = GPIO_PIN_CNF_DRIVE_S0D1, ///< !< Standard '0', disconnect '1'.
    NRF_GPIO_PIN_H0D1 = GPIO_PIN_CNF_DRIVE_H0D1, ///< !< High-drive '0', disconnect '1'.

 

 

 

 

 Nordic 사 기술문서의 부실함. 

- 위 DRIVE 설정에서 S0, S1, H0, H1, D0, D1, 주석에 기록된 standard 0, standard 1, ... 등의 의미 설명이 명시적으로 있어야 하는데 문서에 없음. 

- 해당 용어가 GPIO관련 보편적인 기술용어도 아니기 때문에 추가 설명은 필수인데 누락되어있다. 포럼에서 이것저것 검색하면서 추적 정리해야 함. 담당자가 공학분야 전문가가 아니고 인문학 출신인가? 싶을정도.  혹은 공학 전공은 했는데 정보소통에는 관심 없는 빡대가리일수도.. 

 

그래서 위 표현들의 의미를 추정하자면, 

'0' = logic low, '1' = logic high 를 의미하고, standard와 high 가 의미하는 것은 드라이빙 전류의 적고 많음을 표현하는것으로 사용되었고,  disconnect 의 의미는 드라이빙 하지 않는다는 의미라고 두면 대충 이해는 된다. 즉, S0S1 의 의미는 logic low는 저전류구동  , low high 도 저전류. H0D1 은 로직 0 은 고전류구동, 로직1은 구동없음. 

즉, D1 이 통상적인 GPIO 핀의 Open Drain 설정에 해당함. 

한편, D0 가 의미하는 바는 해당핀이 GND와 비연결 된 것. 

standard : 최대 0.5mA,  high drive : 최대 5mA. 

 

 

 

 

레지스터.OUT, OUTSET, OUTCLR 

 

OUT

- 0 : Pin driver is low, 1: Pin driver is high . default : 0

OUTSET 

- GPIO 포트의 각 핀을 Set (=핀 로직 high) 하는것. 1기록하면 Set 되고 0기록하면 아무작용없음. default : 0

OUTCLR

- GPIO 포트의 각 핀을 Clear (=핀 로직 low) 하는것. 1기록하면 Clear 되고 0기록하면 아무작용없음. default ; 0

 

OUTSET, OUTCLR로 핀상태 제어할때,

1개의 핀에 대해서 위와 같이 OUTSET, OUTCLR 로 핀 상태를 지정하게 되는데, 0기록시 아무작용없기때문에 핀의 상태를 처음에 1 이후 0 으로 상태변경하려면  OUTSET 으로 1전송하고 나서 OUTCLR 로 1전송해야한다. 

 

 

 

GPIO Internal Pullup, Pulldown 저항값. 

풀업 , 풀다운 저항 모두 동일한 저항값 13k옴. ( 최소 11k옴 ~ 최대 16k옴 ) 

 

 

Pin Configuration 

 

 

 

 

 

 

from :  page141~ http://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.0.pdf 


 

GPIO 활용 예 

 

 

nRF52840 GPIO 출력. 출력속도 : https://igotit.tistory.com/2029

 

nRF52840. GPIO 핀 출력, 출력속도

타겟보드 : nRF52840 Dongle GPIO 출력 시험코드 프로젝트 IDE 환경 : SES 에서 프로젝트 템플릿 기반. 상세보기 -> https://igotit.tistory.com/2023 - mian 의 앞부분에서 핀 P0.24 를 출력으로 설정하고 있고,..

igotit.tistory.com

 

 

nRF52840 레지스터 직접 제어 : https://igotit.tistory.com/2314 

 

nRF52840. GPIO 코딩. SDK 없이 레지스터 직접 제어

개요. - nRF52840 의 GPIO 제어 코드를 nRF5 SDK 없이 레지스터 직접 접근하여 코딩하는 예 정리. - SDK 없이 레지스터 직접 제어 코드 작성해봐야 하는 이유 . 실활용목적에서는 SDK 기반하여 작성하겠지만 초보..

igotit.tistory.com

 

Open Drain 관련.

상기 DRIVE 설정중 Open Drain 에 해당하는 것은 S0D1 혹은 H0D1임.

from : nRF52 TWI 함수설명 중. 아래 핵심정보 복사해온것.

함수 bool twi_master_init 설명 중 Both pins are configured as Standard-0, No-drive-1 (open drain).

 

S0, H0 의 차이점 : 상태 0일때 포트핀으로 흘릴수 있는 최대 전류 S0 0.5mA , H0 5mA. from : dev zone

 

nRF52 의 오픈드레인 활용시 주의사항.

https://igotit.tistory.com/2341

 

nRF52. GPIO 오픈드레인 어중띤 특성 주의.

개요. MCU 핀 설정에서 오픈드레인 설정은 매우 유용하고 실전에서 활용도가 매우 높은것이나, nRF52 의 GPIO 는 오픈 드레인 특성이 완전한 오픈드레인으로 활용불가능함에 주의 해야함. 상세 nRF52 칩에서 GPIO..

igotit.tistory.com

 

 

본 글 포함된 상위 정리글.

https://igotit.tistory.com/244 의 nRF52

 

STM32. nRF52. ESP32. EFM8. EFM32. PSoC 활용 정리.

STM32. nRF52. ESP32. EFM8. EFM32. PSoC 총정리 제조사 칩 주요특징 실리콘랩 8bit MCU EFM8 시리즈 32bit EFM32 시리즈 EFM8 싸다. STM STM32 . 최고 항상 만족. Cypress pSoC pSoC6 은 기대해볼만. NORDIC nRF5..

igotit.tistory.com

 

 


첫등록 : 2019년 1월 7일

최종수정 : 2019년 10월 19일

 

본 글 단축주소 : https://igotit.tistory.com/2031

 


 

 

 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5