[LM3S8962 EVM] SPI테스트 - 3축 가속도센서 테스트
가속도 센서 테스트 드라이버
myMCU-EXP 보드의 가속도 센서(LIS3LV02)는 SPI0, CS(J18->16) ->RD3에 연결되어 있으므로 아래와 같이 드라이버 코드를 작성할 수 있다.
LM3S8962 SPI데이터 송수신 드라이버 함수 작성
[LM3S8962 EVM] SPI 테스트 소스 코드
가속도 센서 테스트 드라이버
myMCU-EXP 보드의 가속도 센서(LIS3LV02)는 SPI0, CS(J18->16) ->RD3에 연결되어 있으므로 아래와 같이 드라이버 코드를 작성할 수 있다.
//-----------------------------------------------------------------------------
// myAccel3LV02 HAL
#define MY_ACCEL3LV02_SPI_MODE 1
#define MY_ACCEL3LV02_I2C_MODE 0
#define ACCEL_CS_BIT BIT3
#define ACCEL_CS_PORT PORTD
#define ACCEL_CS_INIT() SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);\
GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, ACCEL_CS_BIT);\
GPIOPadConfigSet(GPIO_PORTD_BASE, ACCEL_CS_BIT, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
#define ACCEL_CS_ASSERT() Cbi(ACCEL_CS_PORT, ACCEL_CS_BIT)
#define ACCEL_CS_DEASSERT() Sbi(ACCEL_CS_PORT, ACCEL_CS_BIT)
#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 BIT3
#define ACCEL_CS_PORT PORTD
#define ACCEL_CS_INIT() SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);\
GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, ACCEL_CS_BIT);\
GPIOPadConfigSet(GPIO_PORTD_BASE, ACCEL_CS_BIT, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
#define ACCEL_CS_ASSERT() Cbi(ACCEL_CS_PORT, ACCEL_CS_BIT)
#define ACCEL_CS_DEASSERT() Sbi(ACCEL_CS_PORT, ACCEL_CS_BIT)
#define ACCEL_SPI_INIT() SPI0_Init()
#define ACCEL_Read SPI0_WriteReadByte
#define ACCEL_Write SPI0_WriteReadByte
//-----------------------------------------------------------------------------
LM3S8962 SPI데이터 송수신 드라이버 함수 작성
unsigned char SPI0_WriteReadByte(unsigned char Data)
{
unsigned long rcv_data;
SSIDataPut(SSI0_BASE,Data);
SSIDataGet(SSI0_BASE, &rcv_data);
return rcv_data;
}
{
unsigned long rcv_data;
SSIDataPut(SSI0_BASE,Data);
SSIDataGet(SSI0_BASE, &rcv_data);
return rcv_data;
}
[LM3S8962 EVM] 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;
}
}
반응형