Loading...
 

Zephyr project on STM32

   Zephyr Workbench, a VSCode extension to manage Zephyr on STM32.
It enables users to easily create, develop, and debug Zephyr applications.
Main features:
  • Install host dependencies.
  • Import toolchain and SDK.
  • Create, configure, build and manage apps.
  • Debug STM32.
You can directly download it from the VSCode marketplace
For more details, visit the Zephyr Workbench

System Workbench for STM32


USB CDC Receiving

Hello.

I transmit from PC to STM32F4 big packets through USB CDC FS. There aare more than 64 bytes. In this case funtion CDC_Receive_FS () is called more than one time. I want to know, can I know if the receiving frame is a single message or part of big packet, can I know the size of such big packet? (Maybe there is some flag or smth else.)

yes you can but you have to modify the cdc base class code

the usb transaction is is setup in
USBD_CDC_ReceivePacket
...
USBD_LL_PrepareReceive(pdev,
CDC_OUT_EP,
hcdc->RxBuffer,
CDC_DATA_FS_OUT_PACKET_SIZE);
}

CDC_DATA_FS_OUT_PACKET_SIZE is 64 that tell usb layer to get ready to receive up to 64 byte from host.

you could set this to any 64 mulmiple if to receie more at once
But if you do it is likley to brake any default host “com driver” and s/w.

With that you’ll be abble to receive longer “usb transfer” but you want get any “64” byte long message :-(
on usb when both host and device side want to to do biger transfer than the max packet size (64 here)
it require both side to be aware of it so that a spcial zero length packet is send for any exact 64 byte transfer. without it the over side wait for more.

So it may work but with custom host s/w only.


Hi everyone,

I am looking for an answer to the same question as Slavius.

Here, I do not want to modify the USBD_CDC_ReceivePacket that can break any default host “com driver” as diabolo38 said. I want to know if there is any raised flag when receiving more than 64 bytes? (the max packet size to receive is 64).

example:
the host send a 100 bytes packet to the device. (the packet size can differ in time). So it will be splitted into a 64 bytes and a 36 bytes.
the question is: will there be a flag that will be raised to say to the device “you received a 64 bytes packet but another to complete the packet is coming”?

thanks


 

Newest Forum Posts

  1. SPI on Nucleo_STMH533RE by royjamil, 2025-05-04 20:13
  2. SPI on Nucleo_STMH533RE by higginsa1, 2025-03-25 07:37
  3. SPI on Nucleo_STMH533RE by royjamil, 2025-03-23 11:31
  4. SPI on Nucleo_STMH533RE by higginsa1, 2025-03-23 09:33
  5. Configuring DMA for ADC in SW? by sam.hodgson, 2025-03-04 12:58
  6. Build a project in "release" mode by info@creosrl.it, 2025-02-20 18:12
  7. Build a project in "release" mode by info@creosrl.it, 2025-02-20 17:05
  8. Build a project in "release" mode by tang, 2025-02-20 10:36
  9. Build a project in "release" mode by info@creosrl.it, 2025-02-19 17:35
  10. Fail to debug in Win 11 C/C++ by mortenlund, 2024-12-26 20:27

Last-Modified Blogs