본문 바로가기

[MCU]/CANTUS

[CANTUS EVM] SPI테스트 - SPI 가속도 센서 테스트

[CANTUS EVM] SPI테스트 - 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;
}


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; 
   }
  }
반응형