TM4C123 USB 테스트 - CAN2USB 테스트
TM4C123은 기존 Crtex-M3 코어 시리즈인 LM3S5732 와 같이 USB Device, HOST를 지원하고 CAN통신이 가능하다.
USB를 지원하면서 CAN이 가능한 MCU중에서 저렴하고 사용하기 편리하기 때문에 USB2CAN 보드 제작하기에 좋을것 같다.
TM4C123 USB 관련 핀맵
TM4C123 USB 초기화 코드
void InitializeUsb(void)
{
// Enable the GPIO peripheral used for USB, and configure the USB pins
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
ROM_GPIOPinTypeUSBAnalog(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
ROM_GPIOPinTypeUSBAnalog(GPIO_PORTD_BASE, GPIO_PIN_4 | GPIO_PIN_5);
// Initialize the transmit and receive buffers.
USBBufferInit((tUSBBuffer *)&g_sTxBuffer);
USBBufferInit((tUSBBuffer *)&g_sRxBuffer);
// Pass our device information to the USB library and place the device
// on the bus.
USBDBulkInit(0, (tUSBDBulkDevice *)&g_sBulkDevice);
}
TM4C123 USB 데이터 수신 처리 함수
//---------------------------------------------------------
//수신 데이터 처리
//pvMsgData 는 수신된 데이터의 포인터
data = (unsigned char*)(pvMsgData);
for(i=0;i<ui32MsgValue;i++)
{
DebugPrint("%02X ", *(data+i));
}
DebugPrint("\r\n");
switch(*data)
{
case CMD_SET_LED:
Led1On();
break;
case CMD_RESET_LED:
Led1Off();
break;
case CMD_SET_LED2:
Led2On();
break;
case CMD_RESET_LED2:
Led2Off();
break;
case CMD_READ_CAN_DATA:
USBBufferInit((tUSBBuffer *)&g_sTxBuffer);
//CAN통신 데이터 처리
CANProcess(g_sTxBuffer);
//USB 데이터 전송
USBBufferDataWritten(&g_sTxBuffer, 2);
break;
}
//---------------------------------------------------------
USB2CAN 테스트 PC 프로그램
LM3S5732에서 작성 했던 프로그램을 동일하게 테스트 가능하다
TM4C123 USB2CAN 테스트 동영상