Jump to content

    
Sign in to follow this  
AlexRayne

stm32f4 usb fs - непойму как работает bulkIN

Recommended Posts

Привет всем!

уже довольно долго мучаюсь с попыткой поднять стек MSD на unicore-mx. портит все дело внезапные остановы отправки пакетов в bulkIN точке. (почемуто на точке0 никаких проблем нету)

вот последний анамнез ставящий меня в тупик:

 

        cm_disable_interrupts();
        REBASE(DWC_OTG_DIEPxTSIZ, ep_num) =     mc_from_flags(transfer->flags) |     DWC_OTG_DIEPTSIZ_PKTCNT(pktcnt) |DWC_OTG_DIEPTSIZ_XFRSIZ(transfer->length);
//* вот тут вот установлен NACK - чтобы точка не вела активность пока в ее ФИФО чтото кидается
        REBASE(DWC_OTG_DIEPxCTL, ep_num) = DWC_OTG_DIEPCTL_EPENA |    DWC_OTG_DIEPCTL_MPSIZ(transfer->ep_size) |    DWC_OTG_DIEPCTL_SNAK | DWC_OTG_DIEPCTL_TXFNUM(ep_num) | ptyp_map[transfer->ep_type] | DWC_OTG_DIEPCTL_USBAEP;

        USBD_LOGF_LN(USB_VIO, "USBD:submit urb%"PRIurb" on ep8%"PRIx8" DIEPxTSIZ=%x"
                , view_urbid(urb->id), ep_num, REBASE(DWC_OTG_DIEPxTSIZ, ep_num) );

        /* Push first packet to memory! */
        if (transfer->length) {
            /* Enable empty interrupt mask */
            REBASE(DWC_OTG_DIEPEMPMSK) |= DWC_OTG_DIEPEMPMSK_INEPTXFEM(ep_num);

            urb_to_fifo_1pkt(dev, urb);
        }
//* вот тут вот установлен ACK - чтобы точка начала отправку
        REBASE(DWC_OTG_DIEPxCTL, ep_num) |= DWC_OTG_DIEPCTL_CNAK;
        cm_enable_interrupts();

        /* Enable Interrupt */
        REBASE(DWC_OTG_DAINTMSK) |= DWC_OTG_DAINTMSK_IEPM(ep_num);

останов на последнем операторе - включение прерываний, показывает изумительную картину:

флаг XFRC - установлен, что и понятно, вссь пакет ушел в фифо.

флаг TXFE - чист, а DTXFSTSx - показывает что в фифо завис мой пакет, и никуда не отправляется. при этом DIEPCTL показывает флаг NACKSTS = 0

 

на этом месте обмен с хостом останавливается, и спустя таймаут хоста требует ресета.

 

Кто боролся с ФИФО в стмах - расскажите что я нетак курю? как правильно работать с отправкой балк-пакетов?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this