vcom_write & repeat time

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

vcom_write & repeat time

1,164 次查看
phateee
Contributor II

Hello,

can me sombody help, please?

I use LPC1837 and usb port - vcom. I am sending data in the for - cycle:

for (...)

{

   preparing datagram

   send: vcom_write(....)

}

and my problem is, that pc doesn't catch all data. I send 5x datagram from processor and in pc I catch only 2 datagram.

When I use delay between sending, it works. But I dont have time to waiting...Can I use vcom_write in cycle?

thank you

标签 (3)
0 项奖励
回复
1 回复

975 次查看
robertstrops
Contributor I

Hi,

I ran into same issue recently. Does anyone know how to solve it?

I am using LPC1549 and LPCOpen 2.20.

EDIT: Never mind, I made a quick fix by creating an alternative function, which waits for VCOM_TX_BUSY flag to clear.

uint32_t vcom_write_blocking(uint8_t *pBuf, uint32_t len)
{
    VCOM_DATA_T *pVcom = &g_vCOM;
    uint32_t ret = 0;
 
    while(pVcom->tx_flags & VCOM_TX_BUSY){}
    if ( (pVcom->tx_flags & VCOM_TX_CONNECTED) && ((pVcom->tx_flags & VCOM_TX_BUSY) == 0) )   {
        pVcom->tx_flags |= VCOM_TX_BUSY;
        /* enter critical section */
        NVIC_DisableIRQ(USB0_IRQn);
        ret = USBD_API->hw->WriteEP(pVcom->hUsb, USB_CDC_IN_EP, pBuf, len);
        /* exit critical section */
        NVIC_EnableIRQ(USB0_IRQn);
    }
return ret;
}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍