[CANTUS EVM] USB HID테스트 - USB로 센서 데이터 그래프에 표시
CANTUS는 저렴한 MCU임에 불구하고 USB기능이 있어 여러모로 사용할곳이 많은것 같다.
USB를 이용하여 3축 가속도 센서 데이터를 그래프로 표시하는 테스를 해 보았다. 기존 STM32를 이용하여 센서데이터를 USB로 전송하는 예제가 있어 쉽게 포팅할 수 있었다.
HID를 이용하면 드라이버필요 없이 USB에 연결할 수 있어 간단히 USB전송하기 좋다.
ADChip사에서 제공하는 USB API를 이용하면 아주 간단히 USB를 제어 할 수 있다. 깔끔하게 잘 동작한다.
하지만 라이브러이 형태이기 때문에 수정이나 다른 프로젝트에 계속 추가 하기가 쉽지 않아 사용자 처리 부분은 빼내서 처리했다.
그리고 한가지더.. 엔드포인트 수가 적고, 특히 64Byte 엔드포인트는 2개밖에 없다.
USB초기화 부분
가속도 센서 데이터 수집 및 USB전송 코드
CANTUS USB전송 테스트 동영상
USB HID로 3축 가속도 센서데이터를 전송하고 그래프로 표시하는 예제
CANTUS는 저렴한 MCU임에 불구하고 USB기능이 있어 여러모로 사용할곳이 많은것 같다.
USB를 이용하여 3축 가속도 센서 데이터를 그래프로 표시하는 테스를 해 보았다. 기존 STM32를 이용하여 센서데이터를 USB로 전송하는 예제가 있어 쉽게 포팅할 수 있었다.
HID를 이용하면 드라이버필요 없이 USB에 연결할 수 있어 간단히 USB전송하기 좋다.
ADChip사에서 제공하는 USB API를 이용하면 아주 간단히 USB를 제어 할 수 있다. 깔끔하게 잘 동작한다.
하지만 라이브러이 형태이기 때문에 수정이나 다른 프로젝트에 계속 추가 하기가 쉽지 않아 사용자 처리 부분은 빼내서 처리했다.
그리고 한가지더.. 엔드포인트 수가 적고, 특히 64Byte 엔드포인트는 2개밖에 없다.
USB초기화 부분
//USB초기화
//-------------------------------------------
setinterrupt(INTNUM_USB,usb_irq_f);
EnableInterrupt(INTNUM_USB,TRUE);
//USB Enable
Sbi(*R_PAF5, (3<<(2*7)));
Sbi(*R_P5oDIR, BIT7);
Sbi(*R_P5oLOW, BIT7);
Delay(100);
usb_set_description(USB_Configuration_Descriptor,USB_Device_Descriptor,HID_ReportDescriptor,USB_StringDescriptor);
usb_init();
//-------------------------------------------
//-------------------------------------------
setinterrupt(INTNUM_USB,usb_irq_f);
EnableInterrupt(INTNUM_USB,TRUE);
//USB Enable
Sbi(*R_PAF5, (3<<(2*7)));
Sbi(*R_P5oDIR, BIT7);
Sbi(*R_P5oLOW, BIT7);
Delay(100);
usb_set_description(USB_Configuration_Descriptor,USB_Device_Descriptor,HID_ReportDescriptor,USB_StringDescriptor);
usb_init();
//-------------------------------------------
가속도 센서 데이터 수집 및 USB전송 코드
while(1)
{
GetAccelValue(AXIS_X, &data);
data = 0xFFF&data;
gUsbTxBuffer[0] = data;
gUsbTxBuffer[1] = data>>8;
GetAccelValue(AXIS_Y, &data);
data = 0xFFF&data;
gUsbTxBuffer[2] = data;
gUsbTxBuffer[3] = data>>8;
GetAccelValue(AXIS_Z, &data);
data = 0xFFF&data;
gUsbTxBuffer[4] = data;
gUsbTxBuffer[5] = data>>8;
//USB로 센서 데이터 전송
SendtoUsb(gUsbTxBuffer, sizeof(gUsbTxBuffer));
Delay(4);
}
{
GetAccelValue(AXIS_X, &data);
data = 0xFFF&data;
gUsbTxBuffer[0] = data;
gUsbTxBuffer[1] = data>>8;
GetAccelValue(AXIS_Y, &data);
data = 0xFFF&data;
gUsbTxBuffer[2] = data;
gUsbTxBuffer[3] = data>>8;
GetAccelValue(AXIS_Z, &data);
data = 0xFFF&data;
gUsbTxBuffer[4] = data;
gUsbTxBuffer[5] = data>>8;
//USB로 센서 데이터 전송
SendtoUsb(gUsbTxBuffer, sizeof(gUsbTxBuffer));
Delay(4);
}
CANTUS USB전송 테스트 동영상
USB HID로 3축 가속도 센서데이터를 전송하고 그래프로 표시하는 예제
반응형