[CANTUS EVM] SPI테스트 - SPI 가속도 센서 테스트
CANTUS의 SPI구조는 아래 그림과 같고 특징적으로는 8Byte FIFO가 있다.
CANTUS SPI테스트를 위해 [NET-EVM]보드의 가속도 센서를 테스트 해 보았다.
가속도센서의 SPI CS핀은 P5.2에 연결되어 있다.
ADChip사에서 제공하는 드라이버코드는 여러기능을 위해 작성되어 있기 때문에 속도 면이나 기존 코드를 위해 그냥 사용하기는 힘들다. 데이터시트보고 로레벨로 작성해 보았다.
CANTUS SPI모드 설정
CANTUS SPI테스트 동영상
CANTUS SPI 테스트 코드
CANTUS의 SPI구조는 아래 그림과 같고 특징적으로는 8Byte FIFO가 있다.
CANTUS SPI테스트를 위해 [NET-EVM]보드의 가속도 센서를 테스트 해 보았다.
가속도센서의 SPI CS핀은 P5.2에 연결되어 있다.
ADChip사에서 제공하는 드라이버코드는 여러기능을 위해 작성되어 있기 때문에 속도 면이나 기존 코드를 위해 그냥 사용하기는 힘들다. 데이터시트보고 로레벨로 작성해 보았다.
SUINT SPI0_WriteReadByte(SUINT Data)
{
//SPI포트로 데이터 출력
*R_SPI0DATA = Data;
// 전송대기
while (!(*R_SPI0STAT & SPISTAT_SPIF));
//데이터 수신
return *R_SPI0DATA;
}
{
//SPI포트로 데이터 출력
*R_SPI0DATA = Data;
// 전송대기
while (!(*R_SPI0STAT & SPISTAT_SPIF));
//데이터 수신
return *R_SPI0DATA;
}
CANTUS SPI모드 설정
CANTUS SPI테스트 동영상
CANTUS SPI 테스트 코드
#include "system.h"
#include "serial.h"
#include "myAccel.h"
int main()
{
short data;
SystemInit();
Led1Init();
Led1On();
U0_Init(BAUD_115200);
DebugPrint("CANTUS SPI - Accel LIS3LV02 Test\r\n");
//가속도 센서 초기화
myAccel3lvInit();
myAccel3lvWrite(CTRL_REG1, 0xC7);
while(1)
{
if(U0_IsGetByte())
{
switch(U0_GetByte())
{
case '0':
DebugPrint("Led1 Off\r\n");
Led1Off();
break;
case '1':
DebugPrint("Led1 On\r\n");
Led1On();
break;
case 'i':
myAccel3lvWrite(CTRL_REG1, 0xC7); //1000.0111 Power on, enable all axis, self test off
DebugPrint("Accel Init\r\n");
break;
case 'r':
data = myAccel3lvRead(WHO_AM_I);
DebugPrint("Who am I? 0x%02X\r\n", data);
break;
case 'x':
GetAccelValue(AXIS_X, &data);
DebugPrint("%d\r\n", data);
break;
}
}
#include "serial.h"
#include "myAccel.h"
int main()
{
short data;
SystemInit();
Led1Init();
Led1On();
U0_Init(BAUD_115200);
DebugPrint("CANTUS SPI - Accel LIS3LV02 Test\r\n");
//가속도 센서 초기화
myAccel3lvInit();
myAccel3lvWrite(CTRL_REG1, 0xC7);
while(1)
{
if(U0_IsGetByte())
{
switch(U0_GetByte())
{
case '0':
DebugPrint("Led1 Off\r\n");
Led1Off();
break;
case '1':
DebugPrint("Led1 On\r\n");
Led1On();
break;
case 'i':
myAccel3lvWrite(CTRL_REG1, 0xC7); //1000.0111 Power on, enable all axis, self test off
DebugPrint("Accel Init\r\n");
break;
case 'r':
data = myAccel3lvRead(WHO_AM_I);
DebugPrint("Who am I? 0x%02X\r\n", data);
break;
case 'x':
GetAccelValue(AXIS_X, &data);
DebugPrint("%d\r\n", data);
break;
}
}
반응형