
CH32V208는 저렴한 가격, 소형 패키지에 다양한 기능들이 있는데 USB 기능을 테스트를 해 보자. 간단하게 USB CDC 기능을 테스트 해 보면 좋을것 같다.
CH32X035 에서 테스트 했던 USB CDC 테스트 코드와 차이점이 있는것 같다.
CH32V208는 USB 코드 주조가 많이 변경된 점이 있다.
#include "usb_pwr.h"
extern uint8_t USBD_Endp3_Busy;
extern __IO uint32_t bDeviceState;
int SendCdcData(char *pBuf, unsigned int Len)
{
int ret = 0;
if(bDeviceState = CONFIGURED)
{
NVIC_DisableIRQ( USB_LP_CAN1_RX0_IRQn );
NVIC_DisableIRQ( USB_HP_CAN1_TX_IRQn );
ret = USBD_ENDPx_DataUp( ENDP3, pBuf, Len);
NVIC_EnableIRQ( USB_LP_CAN1_RX0_IRQn );
NVIC_EnableIRQ( USB_HP_CAN1_TX_IRQn );
return ret;
}
}
CH32V208 USB Device CDC 를 이용한 데이터 출력예제
int main(void)
{
int cnt =0;
char buf[64];
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
GPIO_INIT();
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n",SystemCoreClock);
printf("USBD CDC Test\r\n");
RCC_Configuration( );
TIM2_Init( );
UART2_Init( 1, DEF_UARTx_BAUDRATE, DEF_UARTx_STOPBIT, DEF_UARTx_PARITY );
Set_USBConfig();
USB_Init();
USB_Interrupts_Config();
while(1)
{
sprintf(buf, "%d\r\n", cnt);
if(SendCdcData(buf, strlen(buf)) == USB_SUCCESS)
{
cnt = (rand() % 100) + 1;
}
}
}
프로그램 실행하면 USB Serial 장치로 인식되고 수신된값이 그래프로 표시되는 것을 확인 할 수 있다.

반응형