阅读:844回复:1
D12端点缓冲区的问题!
请教各位大侠: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)呢? 疑惑中,请大家解答!! |
|
沙发#
发布于:2004-04-16 20:14
主机发送数据
D12接受到数据 然后buffer中就有数据了 其实要问buffer什么时候满, 就是EOP的时候,D12标志buffer满了啊! |
|