[TMS320F28069M] SCI(Serial Communication Interface)-1

728x90
반응형

TI DSP도 기본적인 시리얼 통신 인터페이스를 지원한다. 우리가 알고 있는 UART를 TI DSP에서는 SCI라고 한다. 데이터 시트의 Block Diagram을 살펴보면 아래와 같은 구조로 되어있다. GPIO MUX에서 TX핀과 RX핀을 선택하고, LSPCLK에 의해 통신속도(Baud)가 결정되는 것 같다. 

RX, TX 인터럽트가 있다. 이어서 레지스터를 살펴보면,

 총 16개의 레지스터가 있다. 다른 MCU와 큰 차이점은 없는것 같다. 레지스터를 설정하기 전 가장 중요한 통신속도(Baud Rate) 계산하는 방법을 알아보자.

공식은

$$Baud Rate = \frac{LSPCLK}{((BRR+1)*8)}$$

여기서 LSPCLK의 설정은 LOSPCP 레지스터에서 하고, BRR은 SCIHBAUD, SCILBAUD에서 설정한다.

SYSCLKOUT 값이 어떻게 나오는지까지 설명하려면 내용이 너무 많고 복잡해지기 때문에 이 부분은 생략하고 BuadRate를 구하는 것에만 집중하겠다. (Clcok설정은 매우 중요한 내용이니까 나중에 따로 포스팅하자. 꼭!!!!)

본 포스팅에서 사용하는 개발 보드의 SYSCLKOUT 값은 90MHz다. LSPCLK의 default 값은 0x02로 SYSCLKOUT/4다.

$$LSPCLK=\frac{90MHz}{4}=22.5MHz$$

baud 9600을 설정하고자 할 때 BRR 값을 구하려면 아래와 같이 계산하면 된다. 

$$ (LSPCLK / 9600 / 8) - 1$$

$$ ((22.5*10^6) / 9600 / 8) - 1 =291.96 $$

반올림하면 292, 292는 Hex 값으로 0x124가 된다. 따라서 SCIHBAUD에는 0x01, SCILBAUD에는 0x24로 설정해주면 된다. 이와 관련된 내용은 데이터 시트 820페이지에 나와있다.

 

그럼 TI에서 제공하는 예제를 돌려 직접 확인해보자.

TI에서 제공하는 예제 중에서 "Example_2806xSci_Echoback"을 열어서 다운로드해보자. CCS를 열고 workspace를 만드는 방법은 이전 포스팅을 참고하면 된다! 

 

"Select search-directory"를 선택하고 우즉에 Browse... 클릭.

"C:\ti\c2000\C2000Ware_4_01_00_00\device_support\f2806x\examples\c28" 이 경로로 이동, SDK가 설치된 경로. 여기서 "sci_echoback"폴더를 선택하고 "폴더 선택"을 누르면 된다.

폴더 선택 - finish를 누르면 ccs의 Project Explorer에 프로젝트가 추가된 걸 확인할 수 있다.

빌드하고 다운로드 한 다음 바로 런을 누르지 말고 Tera term을 실행!(꼭 Teraterm이 아니어도 터미널 프로그램이면 상관없다.

Run(F8)을 누르면 터미널 프로그램에 아래와 같이 mcu에서 문자열을 보내는 걸 확인할 수 있다.

 

여기서 문자를 입력해보면

 

코드의 for문 부분과 비교해보면 정상적으로 동작하는 것을 확인할 수 있다. 개발 보드의 SCI 회로는 조금 복잡하게 되어있다. 사용자에게 SCI포트를 선택할 수 있는 방법을 제공하기 위한 설계인 것 같은데 더 복잡하다.. 이 부분은 다음 포스팅으로 넘기고 코드를 살펴보자.

윗부분은 다른 예제와 거의 비슷하고 주목해야 할 부분은 132번째 줄의 InitSciaGpio();함수와 173번째 줄부터 나오는 코드다.

SCI-A를 사용하기 위한 GPIO 설정이다. 함수를 들어가 보면 GPIO28, 29번을 SCI RX, SCI TX로 사용하기 위한 GPIO설정이 나온다. 

아래 그림은 173번째 줄부터의 코드다.

 

scia_fifo_init()에서 FIFO(First In First Out) 기능에 대한 설정을 하고, scia_echoback_init()'함수에서 SCI의 모드와 baudrate에 관한 설정을 한다. 함수를 들어가서 SCIHBAUD와 SCILBAUD의 값을 확인해보면 위에서 설명한 값과 같은 것을 확인할 수 있다. 

 

혹시, 이 글을 보고 질문이 있으면 댓글 달아주세요. 오늘은 졸려서 이만...

 

- 끝 -

728x90
반응형