[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 가속도 센서 초기화 드라이버 코드
#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
//-----------------------------------------------------------------------------
[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
}
댓글을 달아 주세요