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  

먼저 사용하고자 하는 프로젝트에 사용할 lib를 제공하는 header 파일을 참조시킨다.
#include <ti/drivers/UART.h>
#include <ti/drivers/uart/UARTCC26XX.h>

사용자에게 맞게 설정을한다.
UART_init(); ->
UART_Params_init(&uart_params);
uart_params.baudRate = 115200;
uart_params.writeDataMode = UART_DATA_BINARY;
uart_params.readTimeout = uart_timeoutUs / Clock_tickPeriod;

UART Open을 통해서 사용자는 UART 통신을 할 준비를 맞췄다.
uart_handle = UART_open(Board_UART, &uart_params);

사용자 수신 API
int rxBytes = UART_read(uart_handle, uart_rxBuf, 100);

사용자 송신 API
UART_write(uart_handle, uart_txBuf, sizeof(uart_txBuf));


댓글

이 블로그의 인기 게시물

HP 서버 OS 설치시 HDD를 잡지 못하는 문제

python-gdal 설치

Mysql JOIN 사용시 컬럼이름 중복해결