카테고리 보관물: MCU Study

MCU) SPI통신 / CC2520란?

1. CC2520이란?

 CC2520 RF 무선 통신 칩이다. 이것을 이용하면 2.4 GHz 대역에서 무선 통신을 할 수 있다.또한 ZigBee protocol stack을 올리면 ZigBee 통신도 가능하게 된다. CC2520 TI사에서 만들었다. 따라서 CC2520과 관련된 자료는 http://www.ti.com에서 받을 수 있다. 본 보고서에서 사용하게 될 모듈은 Mango-Z1이다. Mango-Z1 Cortex-M3 CC2520을 결합한 모듈이며, 2.4GHz ZigBee/IEEE 802.15.4 RF transceiver가 가능하다.

1.1 회로도 분석

 펌웨어 제작에 앞서 하드웨어가 어떻게 구현되어 있는지 보도록 하자. CC2520은 아래와 같이 STM32F103RB에 연결되어 있다.

그림 1 Mango-Z1 회로도

 

Mango-Z1 회로도에서 CC2520 부분을 조금 더 자세히 보면 아래와 같다.

그림 2 Mango-Z1 보드에서 CC2520

 CC2520에 연결된 부분이 어떤 핀에 연결되어 있는지 파악하기 위해STM32F103RBT6_LQFP64 회로도를 분석할 필요가 있다. 따라서 아래 그림을 참고하여 매칭되는 핀을 정리해보자.

1 STM32F103RBT6_LQFP64 회로도

 

 두 회로도를 참고하여 정리하면 아래와 같이 된다. 서로 매칭 되는 핀을 알아야 소프트웨어 코딩을 할 수 있다. CC2520 STM32F103RB SPI 통신으로 작동하게 되는데 SPI 통신에 관해서는 뒤에서 자세히 다루겠다.

CC2520

STM32F103RB

Type

설명

Signal

Pin #

Signal

Pin #

SPI

SCLK

28

PA5_SPI1_SCK_ADCIN5

21

I

Serial Clock. Maximum 8MHz

SO

1

PA6_SPI1_MISO_ADCIN6_T3CH1

22

O

Serial Out

SI

2

PA7_SPI1_MOSI_ADCIN7_T3CH2

23

I

Serial In

CSn

3

PA4_SPI1_NSS_U2CK_ADCIN4

20

I

Chip Select, active low

General Purpose digital I/O

GPIO0

10

PC8

39

IO

 

GPIO1

9

PC9

40

IO

 

GPIO2

7

PC10

51

IO

 

GPIO3

6

PC11

52

IO

 

GPIO4

5

PC12

53

IO

 

GPIO5

4

PD2_T3_ETR

54

IO

 

Misc

RESETn

25

PC6

37

I

External reset pin, active low

VREG_EN

26

PC7

38

I

High일 때, 동작

2 CC2520 STM32F103RB 핀 설명

1.2 SPI(Serial Peripheral Interface) 통신

 SPI는 근거리용 고속 직렬 동기식 통신 규격이다. Motorola에서 개발한 통신 규격이다. 위 표에서 본 것처럼 총 4개의 선(MOSI, MISO, SCK, NSS)을 이용한다. MOSI Master Out Slave In, MISO Master In Slave Out을 의미한다. 아래 그림을 보면 더 쉽게 이해가 될 것이다. Master STM32가 될 것이고 Slave CC2520이 될 것이다.

그림 3 CC2520 SPI 통신

 

 SPI는 직렬 동기식 통신 방식으로 Full Duplex 통신이 가능하다. 클럭은 Master에서 제공해주고, CC2520은 최대 8 MHz 속도로 전송할 수 있다. 이론적으로는 STM32F103RB의 최대 클럭이 36MHz이기 때문에 4.5MHz가 최대 클럭이 된다.

 Master는 하나, Slave는 여러 개를 사용할 수 있다. 이 때 MISO MOSI, CLK은 같은 라인으로 사용 가능하지만 NSS는 각 Slave마다 따로 주어야 한다. NSS Negative Slave Select로 각 Slave를 구분하기 위한 신호이다.

 아래 그림은 SPI 통신을 할 때 나타나는 신호 파형이다. 그림을 참고하여 더 자세히 설명해보자.

그림 4 SPI 통신 타이밍 다이어그램

 SPI 통신은 총 4가지 동작 방식을 가질 수 있다. rising edge 혹은 falling edge, leading edge혹은 trailing edge을 선택하여 4가지 방법을 만들 수 있다. 표로 간략하게 정리해보겠다.

CPHA

CPOL

설명

0

0

leading edge, rising edge

0

1

leading edge, falling edge

1

0

trailing edge, rising edge

1

1

trailing edge, falling edge

그림 5 SPI 동작 방식

 

 또 한 가지 특징을 볼 수 있는 것은 NSS LOW일 때 MISO MOSI의 데이터를 동시에 가져온다는 것이다. Full-duplex Tx Rx가 동시에 이루어지는 것을 볼 수 있다.

 그렇다면 CC2520에는 어떤 통신 방법을 사용해야 할까? CC2520 데이터 시트에서 SPI 타이밍 다이어그램을 가져와보도록 하자.

그림 6 CC2520 타이밍 다이어그램

 

 위의 그림에서 볼 수 있듯이 CSn LOW일 때 그리고 SCLK rising edge일 때 SI 데이터를 가져가는 것을 볼 수 있다. , leading edge, rising edge 방식으로 작동하는 것이다. 따라서CPHA 0, CPOL 값도 0이 되어야 한다.

 CSn SPI를 위한 input enable signal이다. CSn 신호가 High가 되면 reset이 된다.

1.3 CC2520 레지스터

 CC2520 STM32와 마찬가지로 메모리 맵을 파악해야 한다. CC2520을 컨트롤 할 때 주로 다루게 될 레지스터는 FREG SREG 두 종류가 있다. F Fase, S Slow의 약자이다. 차이라면 SREG FREG보다 한 byte 통신을 더 해야 하는데 이에 따라 약간의 속도 차이가 발생한다. 그림을 통해 자세히 살펴보도록 하자. 그림은 CC2520 Datasheet를 참고한다. FREG0x000~0x03F, SREG 0x040~0x0FF인 것을 알 수 있다. 레지스터를 자세히 살펴보면 0x40 주소에 CHIPID VERSION이 있는 것을 볼 수 있다. CC2520을 이용한 RF 통신에 앞서서 SPI 통신을 통해 CC2520 CHIP ID Version을 읽어오는 실습을 하기 위해 필요한 정보이다.


그림 7 FREG SREG 메모리 맵(), 레지스터()

 

 레지스터 공간은 128개이지만 개수는 128개보다 적다. 이 레지스터는 모두 8비트 레지스터들이다. FREG REGRD REGWR instruction으로, SREG MEMRD MEMWR instruction으로 접근할 수 있는 레지스터이다. 각 명령어는 REGRD 0x80, MEMRD 0x10으로 정해져있다.

 CC2520에는 많은 명령어들이 있다. 아래 그림은 그 중에 MEMRD, MEMWR, REGRD, REGWR만을 캡쳐한 것이다.

그림 8 명령어 셋

 그림에서 알 수 있듯이 MEMRDMEMWR 3 Bytes, REGRD REGWR 2 Bytes임을 알 수 있다. 여기서 SREG FREG의 차이를 볼 수 있는 것이다. a address, s status byte, ddata이다. MEMRD의 명령어가 4bit임을 알 수 있고 SREG 주소의 최대 값이 0x07F인데 이를 표현하려면 3 bit가 모자라다. 따라서 2 Byte 영역을 사용할 수 밖에 없다. MEMWR도 마찬가지이다.

 반면에 REGRD REGWR는 명령어가 2비트임을 알 수 있고 FREG 주소의 최대 값이 0x03F인데 6bit로 이 주소를 표현할 수 있기 때문에 1 Bytes로 가능하다.

 

 아래 레지스터들은 반드시 처음 부팅을 한 이후에 설정이 되어야 하는 것들을 정리한 것이다.자세한 설명은 Reference manual을 참고하길 바란다.

그림 9 설정해야하는 레지스터들

Advertisements