ch573 usb com例程发数据到串口问题

问题:

EVT\EXAM\USB\Device\COM\src

这个例程测试,可以发现USB转串口,PC串口助手可以发数据下来,打印出来没问题

我想在程序里调用函数发数据到串口助手,没有反应,调用的函数是

/* 通讯相关 */

/*******************************************************************************

* Function Name  : SendUSBData

* Description    : 发送数据处理

* Input          : p_send_dat:发送的数据指针

                   send_len:发送的状态

* Output         : None

* Return         : 发送的状态

*******************************************************************************/

UINT8 SendUSBData(UINT8 *p_send_dat,UINT16 send_len)

{

  UINT8 sta = 0;


  /* 厂商模式处理 */

  if(usb_work_mode == USB_VENDOR_MODE)

  {

    memcpy(&Ep2Buffer[MAX_PACKET_SIZE],p_send_dat,send_len);


    Ep2DataINFlag = 0;

    R8_UEP2_T_LEN = (UINT8)send_len;

    PFIC_DisableIRQ(USB_IRQn);

    R8_UEP2_CTRL = R8_UEP2_CTRL & 0xfc; //IN_ACK

    PFIC_EnableIRQ(USB_IRQn);

  }

  /* CDC模式处理 */

  else

  {

    /* 直接发送数据 */

    memcpy(&Ep1Buffer[MAX_PACKET_SIZE],p_send_dat,send_len);


    Ep1DataINFlag = 0;

    R8_UEP1_T_LEN = (UINT8)send_len;

    PFIC_DisableIRQ(USB_IRQn);

    R8_UEP1_CTRL = R8_UEP1_CTRL & 0xfc; //IN_ACK

    PFIC_EnableIRQ(USB_IRQn);

  }


  return sta;

}

发送不了数据,问题在哪里呢?

您好,工作模式选择USB_CDC_MODE的话,是走端点1的IN/OUT端点收发数据的,可以在主循环中添加代码判断Ep1DataOUTFlag是否非0,以判断何时收到数据了就回传,如下图。send_in_data、send_in_len与自定义的数据有关。

工作模式选择USB_VENDOR_MODE的话,走端点2,代码逻辑一样的。

image.png


只有登录才能回复,可以选择微信账号登录