ccschen 发表于 2024-2-16 23:28:36

USBX CDC发送不正常。

收发缓冲区都是2048字节,测试时,上位机向设备发送2048字节数据,设备收到后,向上位机发送2048字节数据。

现在的现象是,设备收到2048字节后,设备也进入了发送流程,但上们机没收到,得上位机向设备发送了4096字节后,才能从设备收到4096字节数据。

        while (1)
        {
                        if (tx_event_flags_get(&CDC_EventFlag, RX_NEW_RECEIVED_DATA, TX_OR_CLEAR,
                                                                                                               &transmitdataflag, TX_WAIT_FOREVER) == TX_SUCCESS)               
                        {
                                if (tx_event_flags_set(&CDC_EventFlag, TX_NEW_TRANSMITTED_DATA, TX_OR) != TX_SUCCESS)
                                {
                                        Error_Handler();
                                }                               
                        }
                        tx_thread_sleep(MS_TO_TICK(10));
               
        }

ccschen 发表于 2024-2-16 23:31:38

收发改成1024,也是上位机发送够4096字节后,上位机一次性收到4096

eric2013 发表于 2024-2-17 09:20:49

ccschen 发表于 2024-2-16 23:31
收发改成1024,也是上位机发送够4096字节后,上位机一次性收到4096

这么来看应该是配置选项那里设置了。

另外看下USBX里面有没有类似data available的函数

ccschen 发表于 2024-2-17 19:43:16

eric2013 发表于 2024-2-17 09:20
这么来看应该是配置选项那里设置了。

另外看下USBX里面有没有类似data available的函数

UINT _ux_device_class_cdc_acm_write(UX_SLAVE_CLASS_CDC_ACM *cdc_acm, UCHAR *buffer,
                              ULONG requested_length, ULONG *actual_length)

这个函数都返回了成功。。。现在收发都是同一个端点,不知道有不有影响。

ccschen 发表于 2024-2-17 21:10:59

UX_DEVICE_CLASS_CDC_ACM_WRITE_AUTO_ZLP 使能就对了。

eric2013 发表于 2024-2-18 00:46:28

ccschen 发表于 2024-2-17 21:10
UX_DEVICE_CLASS_CDC_ACM_WRITE_AUTO_ZLP 使能就对了。

谢谢告知最终原因。

Aesthetics 发表于 2024-4-15 20:47:42

楼主可以参考下这个例程吗,最近在学习usbx

eric2013 发表于 2024-4-16 08:36:21

Aesthetics 发表于 2024-4-15 20:47
楼主可以参考下这个例程吗,最近在学习usbx

CDC虚拟串口例子就可以。在AZURE H7的软件包里面有。
页: [1]
查看完整版本: USBX CDC发送不正常。