硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1286|回复: 1
收起左侧

usb虚拟串口问题

[复制链接]

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2021-1-31 09:19:35 | 显示全部楼层 |阅读模式
/*******************************************************************************
* Function Name  : EP1_IN_Callback
* Description    :
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void EP1_IN_Callback (void)
{
int32_t len = 0;
     
if (1 == packet_sent)
{
  len = USB_SendWriteIndex - USB_SendReadIndex;
  
  if (len > 0)
  {
   if(len > VIRTUAL_COM_PORT_DATA_SIZE){len = VIRTUAL_COM_PORT_DATA_SIZE;}
   
   UserToPMABufferCopy((u8 *)(&USB_Sendbuf[USB_SendReadIndex]), ENDP1_TXADDR, len);
   SetEPTxCount(ENDP1, len);
   USB_SendReadIndex += len;
   
   SetEPTxValid(ENDP1);
  }
  else
  {
   packet_sent = 0;
   USB_SendWriteIndex = 0;
   USB_SendReadIndex = 0;
  }
}
}

/*******************************************************************************
* Function Name  : SOF_Callback / INTR_SOFINTR_Callback
* Description    :
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void SOF_Callback(void)
{
int32_t len = 0;
if(bDeviceState == CONFIGURED)
{
  if(0 == packet_sent)
  {
   len = USB_SendWriteIndex - USB_SendReadIndex;
   if (len > 0)
   {
    if(len > VIRTUAL_COM_PORT_DATA_SIZE){len = VIRTUAL_COM_PORT_DATA_SIZE;}
   
    UserToPMABufferCopy((u8 *)(&USB_Sendbuf[USB_SendReadIndex]), ENDP1_TXADDR, len);
    SetEPTxCount(ENDP1, len);
    USB_SendReadIndex += len;
     
    SetEPTxValid(ENDP1);
    packet_sent = 1;
   }
   else
   {
    USB_SendWriteIndex = 0;
    USB_SendReadIndex = 0;
   }
  }
}
else
{
   packet_sent = 0;
   USB_SendWriteIndex = 0;
   USB_SendReadIndex = 0;
}
}

1. 目前USB发送数据用的是上面这段代码,是在USB中断里执行的,一次最多只能发送64个字节,这个规定能突破吗?
2.因为是在中断里发送数据,所以外部应用程序装载发送数据时,需要关闭一下中断,这个也是影响速度吧,要怎么好呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2021-2-1 10:49:19 | 显示全部楼层
USB FS是64字节,这个没法突破。

可以中断发送消息给任务,在任务里面处理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 22:04 , Processed in 0.160562 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表