라벨이 Ti인 게시물 표시

CC2650 BLE 서비스 등록, READ, WRITE, NOTIFY 해보기

Ti에서 제공하는 BLE 스텍을 사용해서 통신하기 먼저 BLE 스텍에서 Profiles 그룹에 있는 서비스들을 이용하면 쉽게 구현할 수 있다. 서비스 API를 살펴보면서 하면 쉽게 할 수있다. 1. 먼저 static 함수들은 서비스파일에서만 사용할 수 있기때문에 그외의 파일에서 호출 할 수 없다. 따라서 2. 나머지 서비스 헤더 파일에 extern 되어 있는 함수들을 사용자 응용 파일에서 호출해서 사용하면된다. 예를 들면 서비스 등록, 콜벡 등록, 파라미터 수정, 읽기등이 해당된다. 3. 서비스 파일을 어떻게 설정하느냐에 따라서 서비스의 기능을 정할 수 있다.  Enabler Characteristic Properties에 해당되는 변수값을 설정하면 된다. 3가지 항목은 아래와 같다. -GATT_PROP_READ -GATT_PROP_WRITE -GATT_PROP_NOTIFY 이 외에도 여러가지가 있으니 gattservapp.h를 살펴보면 될것 가탇. 4. 서비스 등록에 관련된 내용은 아래와 같다. 사용자가 하고 싶은데로 설정하면 될것 같다. -Service attribute -Characteristic Properties -State Characteristic -Characteristic Configs -Characteristic User Description 이 외에도 여러가지가 있다. 5. Profile Attributes - Table을 통해서 프로파일의 구성을 설정할 수 있다. 6. readAttrCB 콜백함수를 통해서 Read로 들어오는 이벤트를 처리할 수 있다. 7. writeAttrCB 콜백함수를 통해서 Write로 들오는 이벤트를 처리할 수 있다. 8. AddService 함수를 통해서 사용자가 서비스를 등록할 수 있다. 9. SetParameter 함수는 사용자 코드에서 호출하여 파라미터를 설정해 놓을 수있다. 10. GetParameter 함수는 사용자 코드에서 변경된 파라미...

CC2650 UART 해보기

CC2650은 Coretex-M3로 ARM 구조를 따른다. 하지만 본인은 아직까지 ARM 구조를 다뤄본적이 없기 때문에 이번 기회를 통해서 제어 해보기로 한다. 기존해 해봤던 MSP430 이나 8051 구조에서는 각 핀이 할 수 있는일이 정해져있었다. 기본적으로 GPIO 제어는 대부분의 핀에서 할 수있었지만 해당핀의 고유 기능이 정해져있어서 고유 레이지스터를 통해서 정해진 핀을 사용할 수 있었다. 하지만 Coretex-M3에서는 모든 핀이 GPIO 뿐만아니라 사용자가 요구하는 기능을 수행 할 수 있다. 따라서 UART 통신을 구현할 때에도 정해진 핀이 없기 때문에 사용자가 먼저 핀에 대한 설정을 해줘야 한다. 이런 초반작업에 대한 내용을 사용자가 모두 알아야 되는 불편함 때문인지 아니면 사용자 편의 기능을 위해서인지 TI에서는 CC2650에 사용할 수 있는 TI-RTOS를 지원해준다. TI-RTOS를 사용하면 사용자는 간편하게 핀설정 뿐아니라 UART, I2C, PWM등 해당 칩이 지원하는 기능들을 손쉽게 사용할 수 있게 되어 있다. 어떻게 보면 내가 점점 더 TI칩을 사용하게 되는것이 이런 편의 기능을 계속 제공해주기 때문이라는 생각도 든다. 어쨌든 CC2650의 UART를 사용하기 위해서는 TI-RTOS에서 제공하는 API호출을 통해서 아래와 같이 사용할 수 있다. 핀설정은 아래와 같은 파일에서 확인 할 수 있다. *IOID에 대한 하드웨어 핀 확인은 datasheet를 보면 알 수 있다. #define Board_UART_RX                       IOID_12 #define Board_UART_TX                       IOID_4   먼저 사용하고자 하는 프로젝트에 사용할 ...

CC2650 BLE 만들기 #1

1. Ti 에서 만들어 팔고있는 CC2650DK 보드를 이용한 BLE 예제 돌려볼때 주의할 점   #. Ti를 홈페이지를 통해서 CC2650에 사용할 수 있는 BLE 스텍을 다운로드 받는다.       : 로그인 해야 하는 불편함이 있음   #. 예제를 위한 IAR 컴파일러를 설치한다.       : 버전이 정확히 맞지 않으면 컴파일 에러가 발생하기 때문에 BLE 스텍 가이드 문서를 참조하여 똑같은 컴파일러 버전을 다운로드 받아서 사용한다.       : 30일 무료버전을 받을 수 있다.   #. BLE 스텍을 설치한 폴더에서 가지고 있는 보드에서 가능한 샘플을 선택한다.       : 여러보드들이 있어서 그런지 예제하나에 여러 보드를 설정을 통해서 사용할 수 있게 해놓았다.     #. 컴파일 해보기       : 컴파일시 사용자 지침서를 꼭 확인하고 컴파일을 해야한다.       : 예제 프로젝트 구성을 보면 APP, STACK 두가지의 프로젝트를 제공하는데 APP는 STACK을 사용하여 컴파일 하기 때문에 반드시 처음이나 STACK이 수정되었을 때 STACK을 꼭 컴파일 해줘야한다.       : 절차는 아래와 같다.         1. Select the new stack project.         2. Select Project→ Download→ Download Active Application to download the stack project.         3. Select the application project.        ...

CC1200 900Mhz #1 - 시작하기

1. 제공하는 기본 예제 사용의 한계    - eszy_link 예제를 통한 통신 셋팅을 사용    - 기본 예제를 바탕으로 설정하였기 때문에 여러가지 기능이 있음에도 사용하지 못하는 문제    - 앞으로 CC1200을 이용해서  거창하게 RF 스텍은 아니 더라도 편하게 사용할 수 있는 RF 통신 스텍 비스무리 한걸 만들어 보고자 한다.    - 같이 할 펌웨어 블로거가 있으면 좋겠다. 2. MSP430F5438 + CC1200 을 이용    - 기본적으로 저전력과 여러가지 성능이 뛰어난 MSP 칩을 이용 3. Ti에서 제공하는 여러 예제를 참고하여 기본적인 설정을 시작 *CC1200 : Ti에서 개발한 400, 900Mhz RF 전용 칩이다. *MSP430F5438 : Ti에서 개발한 저전력 전용 MCU

MSP430F5438 clk, uart, timer 초기화

MSP430을 사용하면서 혹시모를 삽질을 위해 초기화에서 주의해야 할 점을 몇 가지!! 1. clk를 초기화 할 때   unsigned int i;   P5SEL |= 0x06;                            // Port select XT2                  UCSCTL1 = 1;   UCSCTL6 = XCAP_3;   UCSCTL8 = 0;      for(i=0; (i<0x7FFF) && (SFRIFG1&OFIFG); i++) {           UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags           SFRIFG1 &= ~OFIFG;   }      UCSCTL6 &= ~XT2DRIVE0;   UCSCTL4 = SELA__XT1CLK | SELS__XT2CLK | SELM__XT2CLK; // ACLK(XT1),     MCLK/SMCLK(XT2)   UCSCTL5 = DIVS_3; // MCLK (20M), SMCLK(2.5M), ACLK(32.768K) msp430에서 clk를 초기화 시키지 않으면 모든게 동작하지 않는다. 2. uart RX interrupt 초기화 할 때     UCA1IE |= UCRXIE;      를 해야줘야 인터...

cc2530 Z-stack uart 설정 주의

예를 들어 baud가 1200 이고 8bit transfer, one stop bit, even parity를 사용하는 경우라면 z-stack에서 _hal_uart_isr.c의 설정에서 아래와 같이 설정해야 한다. UxUCR = UCR_STOP | UCR_PARITY | UCR_D9 | UCR_BIT9; 이부분을 설정하면서 삽질했던 부분이 UCR_BIT9 설정이 분명 데이터 시트상에는 0일때 8bit transfer라고 되어 있는데 1로 설정했을 때 8bit transfer로 동작한다. 내가 잘못 이해한건지 아니면 데이터 시트가 잘못된건지 이건 이종간의 장비가 통신을 할 때 꼭 설정해야 하는 부분인데 이것 때문에 삽질을 했다.

cc2530 256k 사용할때 Linker에 Extra Options

cc2530에 256kbyte 크기의 플레시를 사용할때 다음과 같이 옵션을 설정해야 한다. 프로젝트에->Linker->Extera Options 설정에 다음과 같이 추가 해준다. -M(CODE)[(_CODEBANK_START+_FIRST_BANK_ADDR)-(_CODEBANK_END+_FIRST_BANK_ADDR)]*_NR_OF_BANKS+_FIRST_BANK_ADDR=0x8000

Zigbee Coordinator 주의할 점

Zigbee 통신에서 coordinator는 최대 6개의 자식노드를 받을 수 있다. 이 때문에 6개 이상의 노드가 조인을 요청하면 받아줄수 없다. 따라서 라우터도 조인을 받을 수 있는 상태로 만들어줘야 6개 이상의 장비들이 지그비 네트워크를 구성 할 수 있다.

cc2530 uart 설정

cc2530에서는 2개의 uart를 지원한다. uart0을 사용하기 위해서는 HAL_UART = TRUE; HAL_UART_ISR=1; HAL_UART_DMA=2; 와 같이 설정해 주면 uart0를 사용할 수 있다. 위에서 HAL_UART_DMA가 HAL_UART_ISR과 값이 같으면 에러가 출력된다. 물론 z-Statck에서 하는 말이다.

CC2530 + CC2590의 테스트

cc2530은 기존에 지그비와 비슷한 거리 약 50~80m정도의 통신 거리를 확인 했었다. 하지만 좀 더 긴 통신거리를 필요로 하는 사이트에서 사용할 수 있도록 cc2590을 연결하여 테스트 해보았더니 기존거리보다 약 10m 정도 늘어난 통신거리를 확인했다. 증폭을칩을 연결하면 +6dbm을 제공한다고 하는데 그럼 거리는 얼마나 늘어나야 되나? 계산 되시는 분은 댓글좀 달아주시죠 ㅋㅋ