EE/Embedded Systems

Nordic Semiconductor - nRF MCU and Bluetooth Low Energy

esmJK 2020. 12. 22. 22:58

www.skkuwongroup.online/

0. Nordic nRF51/nRF52 Series?

이번 연구에 쓰이는 마이크로컨트롤러는 Nordic nRF52, PCA10040 모델입니다. 

CPU는 ARM Cortex M4 로 저전력이 장점이며 Flexible GPIO, Bluetooth Low Energy, NFC를 활용할 수 있다는 특징이 있으나 STMicro 사의 Cube MX 같은 툴이 없고 환경이 달라 여러 Webinar 등을 찾아보고 도메인 지식을 쌓을 필요가 있다고 느꼈습니다. 

 

처음에 마이크로컨트롤러를 받았을 때는 포장지에 nRF51 시리즈라고 쓰여 있었는데 마이크로컨트롤러의 마이크로프로세서 위 패키징 위에 붙은 모델번호 'PCA10040' 를 찾아보니 nRF52832 SoC 를 위한 Development Kit(DK) 라고 합니다. PCA10040은 보드의 PCB가 nRF52DK를 위한 제품임을 뜻하고, nRF52832 칩셋을 프로그래밍 할 수 있다고 합니다. 

 

개발보드를 사용하기 위해 참고한 자료는 다음과 같습니다. 

 

Nordic Semiconductor Official Youtube Channel 

www.youtube.com/channel/UCWQMBzrPapk4qBfEM48NZ4w

 

개인 강좌

www.youtube.com/watch?v=Rbs9ux0orOE&list=PL1gevilh6SLguNgvE3l2dJjOgcxTTuK6Q

www.youtube.com/watch?v=jtTWnIxVDXs&list=PLiKJljyEUlZj4z8RqJKTaoMpSqjLdBGO4

www.ploger.co.kr/new/Development_Environment_Setting_Guide_rev7.0.pdf

 

1. Bluetooth Low Energy의 통신 계층 및 통신하기 위한 단계 

 

Broadcaster : Transmitter  

Observer : Receiver

Peripheral : Slave 역할

Central : Mater 역할, 다중연결 지원

 

Broadcasting of Data = Advertising 

Peripheral Device 또는 Broadcaster가 Advertising을 수행합니다. Broadcasting 되는 것보다 더 많은 데이터를 받기 위해서 연결할 필요 없이 Scan Request로 해결이 가능합니다. 3개의 Advertising Channel이 존재하는데 connection interval 동안 모든 채널을 다 송신합니다. 

 

디바이스를 감별하는 것은 Address로 가능합니다. 

Address의 종류에는 Static 과 Private 가 있습니다. 둘 사이에는 형식의 차이가 있습니다. 

 

Application을 감별하는 것은 Universal Unique Identifier (UUID)로 가능합니다. 

16bit UUID는 Bluetooth SIG에 의해 정의되어 있는것을 사용하는 것이고 128bit는 custom 입니다. 

 

위 예시의 경우 3가지의 UUID가 존재하는데 Heart Rate Service, Battery Service, Device Information Service 입니다. 

 

Connection이 이루어질 때의 과정은 다음과 같습니다. 

38번 패킷 이후 Connect Request가 보내지면, Advertising을 멈추고 Master에게서 2nd Packet을 받게 되고 Slave는 이후 패킷으로 반응을 해주면 연결이 된 것으로 볼 수 있습니다. 

 

블루투스 연결이 되고 데이터 송/수신이 일어날 때를 가정해봅니다. Application에 의해 BLE를 통해 주고 받는 데이터가 정의되는데, BLE에서 Application 정보는 Profile에 있습니다. 데이터 계층은 다음과 같습니다. 

Profile : Overall functionality of an application. Consists of services

   ㄴ   Service : Sub-functionality. Consists of characteristics

            ㄴ   Characteristics : Performs its service's functionality 

 

위 예시는 Heart Rate Profile 의 Heart Rate Service 와 Device Service 를 나타냅니다. 

Heart Rate Service는 Heart Rate Measurement Characteristic과 인체에서 센서의 위치를 나타내는 정보로 이루어져 있습니다. 

 

Software Development Kit (SDK) 정보는 다음 링크에서 얻을 수 있습니다.

developer.nordicsemi.com/developer.nordicsemi.com/nRF5_SDK/nRF5_SDK_v17.x.x/

 

SDK에는 BLE peripheral로서 기기를 사용할 때의 예, Central 예시, central 과 peripheral 로 동시에 사용할 때의 예가 모두 들어있습니다. NFC/ UART, SPI를 사용한 예시도 있습니다. 

 

2. SoftDevice (s132) 

pre-compiled abstraction으로 BLE를 다루기 위해 하드웨어까지 접근해야 하는 번거로움을 줄여줍니다. 

Central, Peripheral, Observer, Broadcaster 를 동시에 지원하며 8개의 커넥션을 유지하게 할 수 있습니다. 

Throughput은 커넥션 숫자에 따라 다르지만, Max : 149.2 kbps for S132 V2.0.x.  정도라고 합니다. 

 

SDK가 어떻게 작동하는지를 알기 위해 다음 그림을 참고하시면 됩니다. 

Application Code 는 가장 상단에 위치해 있습니다. Application Code 는 Soft Device를 Soft Device API를 통해 액세스하게 됩니다. 그러면 Soft Device 는 BLE Link를 application을 통해 받은 매개변수를 이용해 적정히 움직입니다. 

SoftDevice가 enable 되어 있다면 SoC와의 상호작용은 SoftDevice를 통해서만 해야 합니다. 

 

Example 폴더에는 config 파일이 존재합니다. 이 파일은 SDK의 드라이버를 import 하고 이를 이용해 clock 등을 enable 하고자 할 때 이용합니다.  

System Hierarchy

 

Soft Device 는 Precompiled Hex File 로서 컴파일 할 때마다 같이 컴파일 해주지 않아도 되는 시간적 이점을 가지고 있습니다. 자세한 구조는 다음과 같습니다. 

 

 

Soft Device는 ANT, BLE 등의 프로토콜 스택을 가지고 있고, 어플리케이션에서 이것의 기능을 사용하려면 API를 통해서만 할 수 있습니다. API는 Supervisor call 기반이며 100% Event Driven 이라고 합니다. 

 

메모리에서의 Soft Device의 위치는 다음과 같습니다.

 

 

 

SoftDevice 가 Enabled 되면 몇 peripheral은 아래와 같이 액세스가 제한될 수 있습니다. 이는 SoftDevice Specification 문서에서 더 자세히 확인할 수 있습니다. 

 

 

SoftDevice API는 어플리케이션과 SoftDevice 사이의 인터페이스로서 Supervisor Call (SVC)로 구현됩니다. API call 은 SVC number 를 가진 인터럽트를 반환하고, 이것은 스택의 SVC Handler 에 의해 처리된다고 합니다. SoftDevice API는 다음과 같이 쓰인다고 합니다.

 

sd_softdevice_enable(...); 

sd_ble_gap_adv_start(...);

sd_flash_write(...);

sd_ppi_channel_assign(...);

 

 

nRF go Studio 또는 nRF Connect for Desktop 에서 사용하고 있는 개발 보드를 선택 후 Erase를 실행하고, 알맞는 SoftDevice hex file (s130, s132) 을 추가하여 program 합니다. 이렇게 하면 메모리 내의 Region이 두 개로 나뉘는데 

region 0 : SoftDevice

region 1 : Application

처럼 바뀝니다. 

 

이후에는 실제 BLE 개발에 대해 다루도록 하겠습니다.