2024-12-23 06:00 AM - edited 2024-12-23 06:01 AM
Hi all,
I'm developing a composite USB device on USB OTG port on a board based on STM32F429 chip.
The device has two interfaces: a custom device + a CDC device. I'm using USB_Device_Library code.
Windows host correctly shows 3 items: the composite device, the generic USB device with my custom label/name, a virtual serial port (COM8).
As test when I open the virtual port (by Putty) I see the three-linee welcome message and a prompt.
When I press a key on the terminal, the code is sent to the device by a BulkOut packet and the device, if the code is different from 0x0d, echoes the code by a BulkIn packet.
This is OK til I press the nine-th character on the keyboard: as echo of this character I see garbage on the terminal.
Dumping the memory of the internal buffers I see that the device received the correct code and replied 1 byte with the correct code!
If I sniff the usb channel with WireShark I see a 7-bytes packet on BulkIn reply (!!).
My debug log shows that the register containing the number of chars to sent to the host (IN_EP_TSIZ) is 1 and the char written in the FIFO (in USB_WritePacket fn) is 0x39 '9':
RXFLVL OUT DATA_UPD
RXFLVL DATA_UPD EP buff: x200100c1 - count: 1
OEPINT
OEPINT XFRC ep1
[USBD_LL_DataOutStage]
[USBD_LL_DataOutStage] DataOut ep1 - idx=1
[terminal] echo '9'
[transmit] x20010128, len: 1
[USB_EPStartXfer] IN_EP_TSIZ x00080001
IEPINT
IEPINT TXFE
[USB_WritePacket] ep2 - len: 1
[USB_WritePacket] IN_EP_TSIZ x00080001
[USB_WritePacket] x39
IEPINT
IEPINT XFRC ep2
[USBD_LL_DataInStage] ep2
[USBD_CDC_DataIn] ep2 - id=1
[USBD_CDC_DataIn] endTx TxBuf: x20010128 - 39 -
How it is possible that Wireshark and Windows terminal reveive a 7-bytes packet ??? (None of them are 0x39)
Thanks!