lyhscut
驱动牛犊
驱动牛犊
  • 注册日期2005-03-19
  • 最后登录2005-04-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1543回复:6

关于PDIUSBD12的IN端点的问题

楼主#
更多 发布于:2005-03-29 22:38
我使用PDIUSBD12的端点1的IN端点和端点2的IN端点进行数据的传输
(数据从PDIUSBD12传到主机)。在初始化的时候先把数据写到IN缓
冲区,产生中断(IN端点产生的中断)后,再把新的数据写到相应的
IN缓冲区。不知道这样做,数据的传送会不会有问题呢?

我现在遇到的问题如下:
复位后,第一次传输的数据不确定(主机第一次接收到的数据不是设
定的数据),以后每一次接收的数据都正确。请问PDIUSBD12的IN缓冲
区在复位后是不是不确定的呢?还是我上面所说的固件结构有问题?

最新喜欢:

hanwlhanwl
kkyouking
驱动中牛
驱动中牛
  • 注册日期2004-02-23
  • 最后登录2008-02-27
  • 粉丝0
  • 关注0
  • 积分47分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-30 08:57
每次传输前设定数据就可以了
52+PDIUSBD12开发套件 SL811单片机读写U盘套件 www.devking.cn 联系sl811hs@yahoo.com.cn QQ 14441292
lyhscut
驱动牛犊
驱动牛犊
  • 注册日期2005-03-19
  • 最后登录2005-04-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-30 10:52
每次传输前我都设定了数据的,但复位后第一次传输的数据就出错
lyhscut
驱动牛犊
驱动牛犊
  • 注册日期2005-03-19
  • 最后登录2005-04-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-30 19:49
我之前碰到的问题是由于第一次写数据到缓冲区是在枚举之前所致。
现在又碰到新的问题,如下:

1.我在枚举之后写了16字节的数据到端点1的IN端点,写了64字节数据到端点2的IN端点。接收数据的时候,端点1每次发送过来的数据都正确,但端点2第一次发送过来的数据错误,以后发送过来的数据正确。

2.我在枚举之后写了16字节的数据到端点1的IN端点,连续写了2次64字节的数据到端点2的IN端点。接收数据的时候,端点1和端点2每次发送过来的数据都正确

请问是什么原因呢?是由于D12的端点2有双缓冲区所致吗?
lyhscut
驱动牛犊
驱动牛犊
  • 注册日期2005-03-19
  • 最后登录2005-04-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-31 15:21
问题解决了,原来固件中有Bug
xiaozhu912
驱动牛犊
驱动牛犊
  • 注册日期2004-09-27
  • 最后登录2005-08-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-01 09:20
你好,我也遇到了同样的问题,第一个数据包总是错的,下面的数据包都是对的,请问你是怎么解决的,谢谢!!!!!
lyhscut
驱动牛犊
驱动牛犊
  • 注册日期2005-03-19
  • 最后登录2005-04-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-01 11:55
我原来有Bug的固件是在BusReset后使端点1、2的IN端点的缓冲区有效(没有写数据)。后来不要那段代码,数据的传输就正确了。应该是由于原来的固件使主端点双缓冲区的切换发生了错误。如果你的情况不是那样的话,可以在第一次写数据到IN缓冲区前清缓冲区(端点2的IN缓冲区可能需要清2次),然后再写数据,那样的话,传输的数据是正确的。但这样做只是取巧,还是应该好好查一查固件的Bug。
游客

返回顶部