STM32 USB SPEAKER例程的问题

[复制链接]
5261|6
 楼主| icer1 发表于 2010-2-21 15:36 | 显示全部楼层 |阅读模式
STM32 USB SPEAKER例程的问题

在UM0424的usb speaker程序里面,speaker作为一个OUT端点,数据是从pc发到stm32,stm32是作为接收数据的,
资料中说:“同一寄存器中的DTOG_RX位用来标识接收同步端点,DTOG_TX位用来标识发送同步端”

但是例子程序却是这样子写的:
void EP1_OUT_Callback(void)
{
  uint16_t Data_Len;       // data length
  if (GetENDPOINT(ENDP1) & EP_DTOG_TX)//为什么不是判断DTOG_RX呢,
//#define EP_DTOG_RX     (0x4000)  
//#define EP_DTOG_TX     (0x0040)  
  {
    //read from ENDP1_BUF0Addr buffer
    Data_Len = GetEPDblBuf0Count(ENDP1);
    PMAToUserBufferCopy(Stream_Buff, ENDP1_BUF0Addr, Data_Len);
  }
  else
  {
    //read from ENDP1_BUF1Addr buffer
    Data_Len = GetEPDblBuf1Count(ENDP1);
    PMAToUserBufferCopy(Stream_Buff, ENDP1_BUF1Addr, Data_Len);
  }
  FreeUserBuffer(ENDP1, EP_DBUF_OUT);
  In_Data_Offset += Data_Len;
}

不明白了
司徒老鹰 发表于 2010-2-22 00:36 | 显示全部楼层
等待版主……
ST_ARM 发表于 2010-2-22 10:27 | 显示全部楼层
void EP1_OUT_Callback(void)
{
  uint16_t Data_Len;       // data length
  if (GetENDPOINT(ENDP1) & EP_DTOG_TX)//为什么不是判断DTOG_RX呢,

OUT是向PC发送数据,而RX是从PC接收数据。RX和TX是相对于PC来说的。
ST_ARM 发表于 2010-2-22 15:39 | 显示全部楼层
我也再次调试了一下程序,发现使用EP_DTOG_TX和EP_DTOG_RX的结果是一样的,也就是说EP_DTOG_TX和EP_DTOG_RX是同步翻转的,我们将就此问题向欧洲的工程师咨询一下。
elvyis 发表于 2011-9-8 16:11 | 显示全部楼层
到底解决没有啊?我也正在弄这个。
elvyis 发表于 2011-9-9 16:33 | 显示全部楼层
USB Speaker的例程终于出声了,但是声音严重失真,而且音量调得稍大点(10-100)的时候,基本就只听到沙沙声,而调到(0-10)的话就还能听到歌声,但是失真比较大?到底是怎么回事?难道是因为我用的DAC(WM8725)不适用吗?请香主相助啊,先谢过。
恋子炎 发表于 2013-8-31 09:56 | 显示全部楼层
等时传输下的双缓冲翻转位只是用来切换buff0和buff1,和接受还是发送没有必然联系。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

26

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部