whmjack
驱动小牛
驱动小牛
  • 注册日期2003-09-17
  • 最后登录2007-04-26
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望29点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:843回复:1

D12端点缓冲区的问题!

楼主#
更多 发布于:2004-04-14 18:23
请教各位大侠:D12的端点的缓冲区什么时候为满?假如端点的缓冲区是64,是不是一定要到64个字节全部装满时缓冲区才是满的!这个时候用读端点状态读出的字节的第0位就是1?
那假如是这样的话D12的mass storage board中的程序应该怎么理解?
Hal4Sys_D12CmdPortOutB( 0x04);// SelectEP BulkOut
FlexByte = Hal4Sys_D12DataPortInB();
if(FlexByte_b0 == 1) // BulkOut Full
    TPBulk_CBWHandler(); // Goto BOTFSMstate_CBWProc
第一句选择端点4,然后读入端点状态,其中FlexByte_b0是缓冲区状态位,假如是1就是满了,然后进入CBW的处理程序。
void TPBulk_CBWHandler( void )
{
if(  sizeof(CBW) ==
 Hal4D12_ReadEndpoint(4,EP2_PACKET_SIZE,
(PINT8)&TPBulk_CBW)) )
这句话是判断CBW的大小,请大家看看,这读出来肯定不会是31字节呀,因为缓冲区满了(大小为64字节),然后读出64字节,怎么可能等于sizeof(CBW)呢?
疑惑中,请大家解答!!

    
zhaobeishengcoo
驱动牛犊
驱动牛犊
  • 注册日期2004-02-25
  • 最后登录2005-05-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-16 20:14
主机发送数据
D12接受到数据
然后buffer中就有数据了
其实要问buffer什么时候满,
就是EOP的时候,D12标志buffer满了啊!
游客

返回顶部