CC2538보드를 테스트한 방법에 대해 글을 올립니다.

 

 

■ 테스트 방법에 대한 고민

처음엔 어떻게 할까 고민을 많이 했습니다.

특히나 테스트를 했던 지난주 주말에는 조이스틱 스위치가 달려있지 않았어요.

(테스트하려니깐 깜박했던게 생각나서 주문했고, 현재는 땜질을 해놓은 상태입니다.)

 

처음엔 Z-Stack 예제(SampleSwitch, SampleLight)를 통해서 테스트를 하고자 했습니다.

두 예제를 SmartRF06EB에서 실행하고 둘 중 하나를 제작한 CC2538로 바꿔서 통신이 되는지 확인을 하고자 하였습니다.

하지만 스위치를 처리하기가 생각보다 쉽진 않아보였습니다.

(그냥 스위치대신 쇼트시켜서 버튼 누르는 것처럼 해볼까?라고도 생각을 했었습니다. ^^;)

 

그래서 고민중에 CC2538용 통신 테스트 예제가 생각이 났습니다.

CC2538 PER Test 1.10이라는 예제 프로그램으로 아래 사이트에 보면 있습니다.

http://www.ti.com/tool/cc2538-sw

 

두대의 SmartRF06EB가 필요하고, 각각 Tx/Rx 보드로 설정을 합니다.

그리고 실행하면 Tx 보드에서 보낸 데이터를 Rx 보드에서 수신하도록 되어있습니다.

이 프로그램은 LCD의 메뉴와 버튼을 눌러서 동작하게 되어있습니다.

 

 

■ 테스트 방법 선택

위 예제에서 버튼 동작과 LCD 메뉴의 동작들을 전부 없애면 Tx 역할을 할 수 있을 것으로 판단을 했고,

Tx로 데이터를 전송하기 직전의 설정값을 따와서 프로그램을 수정하였습니다.

 

 

■ 예제 프로그램 소스에 대한 간략한 설명

LCD에 메뉴 출력 및 버튼 처리를 하느라 프로그램이 복잡한데..

perConfig라는 구조체 변수에 메뉴를 통한 설정값들이 저장되고..

최종적으로 Tx/Rx 모드에 따라 appTransmitter()appReceiver() 함수를 호출하도록 되어있습니다.

 

 

■ 코드 수정 절차

1. 전처리기에 의해 설정된 부분을 일단 전부 지웠습니다.

   (SMARTRF06EB나 SMARTEF06BB로 설정된 부분의 코드들이구요)

2. perConfig의 설정값은 예제 프로그램을 한번 실행해보고 그때 설정된 값을 따다가 썼습니다.

3. SMARTRFBB 보드에 대한 코드를 보니 while문 아래서 appTransmitter()를 호출하는 부분을 제외하고는 모두 지웠습니다.

 

 

■ 코드 테스트 방법

1. Rx 모드로 동작시키는 녀석은 SmartRF06EB를 그대로 활용해서 수신 대기 상태로 만듭니다.

2. 위 코드에 따라 Tx를 실행하면, Rx 모드인 SmartRF06EB에서 데이터를 수신하는 것을 볼 수 있음

    (만약 수신이 안되는 거라면 RF와 관련된 부분 혹은 클럭등이 이상이 있을 수 있음)

 


■ 코드 테스트 성공의 의미

1. 클럭 설정이 정상

   (CC2538은 메인 클럭을 RF에서도 사용하기 때문에 Tx보드의 클럭과 Rx 보드의 클럭이 매칭이 되었음을 의미하므로,

    CC2538 보드의 X-Tal 및 커패시터가 정상적으로 동작한다고 볼 수 있음)

2. RF 부분의 회로가 정상

   (정확하게는 RF회로를 통한 Tx가 정상으로 볼 수 있지만 Rx도 될것으로 보임

    다만 SmartRF06EB 보드들끼리 통신할때의 RSSI보다 훨씬 약한 신호로 감지됨)