打印

usb端点1 IN传输问题,求解

[复制链接]
1122|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
soso1217|  楼主 | 2015-4-22 14:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32l152re端点1发送  PC端bus hound接收,收到的第一字节和第二字节总是不对,请问是什么原因,假设Send_Buffer1[20]={1,2,3,4,5......20},接受到的为 x  x  1 2... 18
这是代码,
void EP1_IN_Callback(void)
{
      if(j<20)
   {
    *Send_Buffer = *(Send_Buffer1+j);
    *(Send_Buffer+1) = *(Send_Buffer1+j+1);
    USB_SIL_Write(EP1_IN, (uint8_t*) Send_Buffer, 2);  
    SetEPTxValid(ENDP1);
    j = j+2;
    if(j == 20)
    {
     j = 0;
     *Send_Buffer = 0;
     *(Send_Buffer+1) = 0;   
    }
  }
沙发
香水城| | 2015-4-27 17:28 | 只看该作者
说明放到EP1的硬件发送buffer的首地址前两个数据不是你想的1,2,而是之前就有dummy值了。

可以在使能EP1的TX valid之前,debug状态下在memory window里看看EP1的硬件发送buffer这段区域的内容。

另外,EP1_IN_Callback()这里已经是PC取走上一次数据之后触发的中断,这里是第二次在往EP1硬件发送buffer中放数据了。

使用特权

评论回复
板凳
soso1217|  楼主 | 2015-5-6 10:02 | 只看该作者
香水城 发表于 2015-4-27 17:28
说明放到EP1的硬件发送buffer的首地址前两个数据不是你想的1,2,而是之前就有dummy值了。

可以在使能EP1的 ...

嗯嗯 ,是,终于明白了 谢谢

使用特权

评论回复
地板
soso1217|  楼主 | 2015-5-7 13:20 | 只看该作者
香水城 发表于 2015-4-27 17:28
说明放到EP1的硬件发送buffer的首地址前两个数据不是你想的1,2,而是之前就有dummy值了。

可以在使能EP1的 ...

dummy值怎么去除啊。总不能每次都要接收两次,取第二次的值吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

45

帖子

0

粉丝