[TMS320C6720] SPI 테스트 - 3축 가속도 센서 CCS 를 이용한 그래프표시 하기
TMS320C6720에는 UART는 없지만 SPI포트가 2채널 있다.
테스트 결과 최대 클럭 스피드는 50Mhz(100Mhz//(1+1))까지 출력은 가능하다. FIFO가 없긴하지만, 클럭 설정도 유연하게 설정가능한것 같고...DMA도 지원한다니 SPI인터페이스에 좋을것 같다.
TMS320C6720SPI 관련 블록도
TMS320C672x SPI 주요 레지스터
SPIFMTx 레지스터
17 : POLARITY
16 : PHASE
15-8 : PRESCALE[7:0]
BR = SYSCLK2/(PRESCALEx + 1)
SPIDATx : 송신 버퍼
SPIBUF : 수신 버퍼
TMS320C6720 SPI Read/Write함수
SPI1BUF레지스터의 RXEMPTY(BIT31) 가 1이되면 수신이 완료된 것을 나타내고 데이터를 가져오면 된다.
TMS320C6720 SPI테스트 예제 소스코드
[LCD_EXP_EVM] 보드 의 SPI커넥터
CCS3.3을 이용하면 데이터를 그래프로 볼 수 있어 편리한데, 3축 가속도 센서의 데이터값을 그래프로 보기 위해 적당한 값으로 버퍼 잡고 (short buf[128]), 브레이크 포인트 걸어서 실시간으로 센서 데이터값을 그래프로 확인 가능하다.
디버깅 툴이 그리 빠르지 않은넘이라... 실시간이라기는 좀 그렇지만 전체적인 센서의 추위는 확인 할 수 있다.
TMS320C 6720 SPI 가속도센서 테스트 동영상
TMS320C6720에는 UART는 없지만 SPI포트가 2채널 있다.
테스트 결과 최대 클럭 스피드는 50Mhz(100Mhz//(1+1))까지 출력은 가능하다. FIFO가 없긴하지만, 클럭 설정도 유연하게 설정가능한것 같고...DMA도 지원한다니 SPI인터페이스에 좋을것 같다.
TMS320C6720SPI 관련 블록도
TMS320C672x SPI 주요 레지스터
SPIFMTx 레지스터
17 : POLARITY
16 : PHASE
15-8 : PRESCALE[7:0]
BR = SYSCLK2/(PRESCALEx + 1)
SPIDATx : 송신 버퍼
SPIBUF : 수신 버퍼
TMS320C6720 SPI Read/Write함수
SPI1BUF레지스터의 RXEMPTY(BIT31) 가 1이되면 수신이 완료된 것을 나타내고 데이터를 가져오면 된다.
unsigned char SPI1_WriteReadByte(unsigned char Data)
{
_SPI1DATA0 = Data;
while(_SPI1BUF & BIT31);
return (_SPI1BUF & 0xFF);
}
{
_SPI1DATA0 = Data;
while(_SPI1BUF & BIT31);
return (_SPI1BUF & 0xFF);
}
TMS320C6720 SPI테스트 예제 소스코드
#include "system.h"
#include "myAccel.h"
void main()
{
unsigned int idx = 0;
short data = 0;
short buf[128];
SystemInit();
//Led Init..
Led1Init();
Led2Init();
Led1Off();
Led2Off();
DebugPrint("[TMS320C6720 EVM] Test Program - SPI Accel Test.\n");
myAccel3lvInit();
//1000.0111 Power on, enable all axis, self test off
myAccel3lvWrite(CTRL_REG1, 0xC7);
DebugPrint("Accel Init\r\n");
data = myAccel3lvRead(WHO_AM_I);
DebugPrint("Who am I? 0x%02X\r\n", data);
while(1)
{
if(idx > 128)
{
for(idx=0;idx<128;idx++)buf[idx]=0;
idx = 0;
}
GetAccelValue(AXIS_X, &data);
buf[idx++] = data;
Led1Toggle();
DebugPrint("%d\r\n", data);
}
}
#include "myAccel.h"
void main()
{
unsigned int idx = 0;
short data = 0;
short buf[128];
SystemInit();
//Led Init..
Led1Init();
Led2Init();
Led1Off();
Led2Off();
DebugPrint("[TMS320C6720 EVM] Test Program - SPI Accel Test.\n");
myAccel3lvInit();
//1000.0111 Power on, enable all axis, self test off
myAccel3lvWrite(CTRL_REG1, 0xC7);
DebugPrint("Accel Init\r\n");
data = myAccel3lvRead(WHO_AM_I);
DebugPrint("Who am I? 0x%02X\r\n", data);
while(1)
{
if(idx > 128)
{
for(idx=0;idx<128;idx++)buf[idx]=0;
idx = 0;
}
GetAccelValue(AXIS_X, &data);
buf[idx++] = data;
Led1Toggle();
DebugPrint("%d\r\n", data);
}
}
[LCD_EXP_EVM] 보드 의 SPI커넥터
CCS3.3을 이용하면 데이터를 그래프로 볼 수 있어 편리한데, 3축 가속도 센서의 데이터값을 그래프로 보기 위해 적당한 값으로 버퍼 잡고 (short buf[128]), 브레이크 포인트 걸어서 실시간으로 센서 데이터값을 그래프로 확인 가능하다.
디버깅 툴이 그리 빠르지 않은넘이라... 실시간이라기는 좀 그렇지만 전체적인 센서의 추위는 확인 할 수 있다.
TMS320C 6720 SPI 가속도센서 테스트 동영상
반응형