본문 바로가기

[TI]/TM4C

TM4C123 USB 테스트 - CAN2USB 테스트

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 테스트 동영상


반응형