[TMS320F28069 EVM] SPI테스트 - 3축 가속도 센서 테스트
SPI테스트 하기에는 가속도센서를 이용하면 상당히 편리하다. 제어 자체도 간단하지만 API로 작성해 둔것이 있으므로 SPI 드라이버 부분과 /CS핀 설정만 하면 쉽게 SPI동작여부를 테스트 할 수 있다.
SPI구조는 TMS320F2808과 같은 구조이고 특별하게 변한것이 없고 코드 또한 동일하게 호환된다. 다만 FIFO가 16 level에서 4 level로 줄었다. 아무래도 가격때문이지 않을까...
[NET-EVM] 보드에서 가속도 센서의 CS는 CN7-P8에 연결되어 있으므로 [TMS320F28069 EVM] 보드에서는 CN6의 P8->GP20에 연결되어 있다.
TMS320F28069 SPI 가속도 센서 초기화 드라이버 코드
[EXP-DSP EVM]확장 보드의 SPI포트에 연결하기 위해 점퍼핀으로 연결 했다.
TMS320F28069 3축 가속도 센서 테스트 동영상
TMS320F28069 SPI테스트 소스코드
SPI테스트 하기에는 가속도센서를 이용하면 상당히 편리하다. 제어 자체도 간단하지만 API로 작성해 둔것이 있으므로 SPI 드라이버 부분과 /CS핀 설정만 하면 쉽게 SPI동작여부를 테스트 할 수 있다.
SPI구조는 TMS320F2808과 같은 구조이고 특별하게 변한것이 없고 코드 또한 동일하게 호환된다. 다만 FIFO가 16 level에서 4 level로 줄었다. 아무래도 가격때문이지 않을까...
[NET-EVM] 보드에서 가속도 센서의 CS는 CN7-P8에 연결되어 있으므로 [TMS320F28069 EVM] 보드에서는 CN6의 P8->GP20에 연결되어 있다.
TMS320F28069 SPI 가속도 센서 초기화 드라이버 코드
#define _SPI0_ENABLE 1
//-----------------------------------------------------------------------------
// myAccel3LV02 HAL
#define MY_ACCEL3LV02_SPI_MODE 1
#define MY_ACCEL3LV02_I2C_MODE 0
#define ACCEL_CS_BIT BIT19
#define ACCEL_CS_PORT
#define ACCEL_CS_ASSERT() cbi(GPIOA_C, LCD_RS_BIT);NOP();
#define ACCEL_CS_DEASSERT() sbi(GPIOA_S, LCD_RS_BIT);NOP();
#define ACCEL_CS_INIT() EALLOW;\
GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 0;\
GpioCtrlRegs.GPADIR.bit.GPIO20 = 1;\
EDIS;\
ACCEL_CS_DEASSERT()
#define ACCEL_SPI_INIT() SPI0_Init()
#define ACCEL_Read SPI0_WriteReadByte
#define ACCEL_Write SPI0_WriteReadByte
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// myAccel3LV02 HAL
#define MY_ACCEL3LV02_SPI_MODE 1
#define MY_ACCEL3LV02_I2C_MODE 0
#define ACCEL_CS_BIT BIT19
#define ACCEL_CS_PORT
#define ACCEL_CS_ASSERT() cbi(GPIOA_C, LCD_RS_BIT);NOP();
#define ACCEL_CS_DEASSERT() sbi(GPIOA_S, LCD_RS_BIT);NOP();
#define ACCEL_CS_INIT() EALLOW;\
GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 0;\
GpioCtrlRegs.GPADIR.bit.GPIO20 = 1;\
EDIS;\
ACCEL_CS_DEASSERT()
#define ACCEL_SPI_INIT() SPI0_Init()
#define ACCEL_Read SPI0_WriteReadByte
#define ACCEL_Write SPI0_WriteReadByte
//-----------------------------------------------------------------------------
[EXP-DSP EVM]확장 보드의 SPI포트에 연결하기 위해 점퍼핀으로 연결 했다.
TMS320F28069 3축 가속도 센서 테스트 동영상
TMS320F28069 SPI테스트 소스코드
void main(void)
{
short data = 1;
unsigned int flag = 1;
//DSP System Initialize
SystemInit();
Led1Init();
Led1On();
//시리얼 포트 초기화
DebugInit(BAUD_115200);
DebugPrint("TMS320F28069 EVM SPI Test(%d)Mhz\r\n", _SYS_CLK);
//가속도 센서 LIS3LV02 초기화
myAccel3lvInit();
myAccel3lvWrite(CTRL_REG1, 0xD7); //1000.0111 Power on, enable all axis, self test off
while(1)
{
if(DebugIsByte())
{
switch(U0_GetByte())
{
case '0':
Led1Off();
DebugPrint("LED OFF\r\n");
break;
case '1':
Led1On();
DebugPrint("LED ON\r\n");
break;
case 'h':
DebugPrint("Device ID=%02X\r\n", myAccel3lvRead(WHO_AM_I));
break;
case 'r':
GetAccelValue(AXIS_X, &data);
DebugPrint("X=%d\r\n", data);
break;
}
if(flag)
{
GetAccelValue(AXIS_X, &data);
DebugPrint("%d\r\n", data);
Delay(100);
}
}//end while
}
{
short data = 1;
unsigned int flag = 1;
//DSP System Initialize
SystemInit();
Led1Init();
Led1On();
//시리얼 포트 초기화
DebugInit(BAUD_115200);
DebugPrint("TMS320F28069 EVM SPI Test(%d)Mhz\r\n", _SYS_CLK);
//가속도 센서 LIS3LV02 초기화
myAccel3lvInit();
myAccel3lvWrite(CTRL_REG1, 0xD7); //1000.0111 Power on, enable all axis, self test off
while(1)
{
if(DebugIsByte())
{
switch(U0_GetByte())
{
case '0':
Led1Off();
DebugPrint("LED OFF\r\n");
break;
case '1':
Led1On();
DebugPrint("LED ON\r\n");
break;
case 'h':
DebugPrint("Device ID=%02X\r\n", myAccel3lvRead(WHO_AM_I));
break;
case 'r':
GetAccelValue(AXIS_X, &data);
DebugPrint("X=%d\r\n", data);
break;
}
if(flag)
{
GetAccelValue(AXIS_X, &data);
DebugPrint("%d\r\n", data);
Delay(100);
}
}//end while
}
반응형