We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I'll start a new project with an ARM7 or Cortex-M3 controller (including flash and ram as well as usb).
I'll add some peripherals to the controller - touch screen controller and led controller via spi, one encoder and 4 buttons via gpio. All information (button pressed, touch coordinates and so on) will be transferred via usb to a computer (intel processor).
I think it's enough to get these information every 1ms. Is an STM32F cortex-m3 controller fast enough to proceed all these requests? I'm not sure (never worked with usb so far) if the performance for usb 2.0 is enough...
Maybe someone of you can give me some information / perofmance suggestions...
best regards Herbert
I am not sure your host will be able to start a new request to the device every millisecond. However, I am working on a system based on a LPC2478 at 64[MHz] that can be polled via a CDC connection every 125[ms] without a problem (while doing other things, too). regardless of what the host can and cannot do, do you really need to update it a thousand times a second? remember that USB transactions are interrupt driven - send and receive (this is probably a bigger issue for the embedded side, of course!).
thanks for your answer.
Which interrupt intervall should be enough for all these user-inputs (encoder, buttons, and touch controller)?
by the way do you know the datarate for a usb mouse or keyboard? How fast will be the update of the actual positon of the mouse?
check the value of your 'bInterval' variable in the HID descriptor. assuming it uses interrupt transfers, this determines how often your device's bus time-slice.
there is no way anybody but you can know that. like many other embedded endeavors, determining this will require to set a balance between performance requirements and available resources.
I'll need three endpoints (interrupt transfers) - each one tx a single packet 64Byte every 1ms...
I am not sure your host will be able to start a new request to the device every millisecond. However, I am working on a system based on a LPC2478 at 64[MHz] that can be polled via a CDC connection every 125[ms] without a problem (while doing other things, too).
The cortex-M3 processor will be not the host controller - it will be a normal device controller. The host controller is a normal PC computer with intel atom processor.
I don't know much about this. But I think that, The host controller is a normal PC computer is just what Tamir worried about.
1 ms response time is OK for an Embedded/Real-time system, but it might not be OK for Windows/Linux/Mac-OS.
>i>1 ms response time is OK for an Embedded/Real-time system, but it might not be OK for Windows/Linux/Mac-OS.
ok then I missunderstood Tamir. That means the controller is able to perform these usb transfers every 1ms, but maybe the embedded host controller is not able to be as fast as the cortex-m3.
But a normal mouse is also working with a 1ms time intervall (at a windows or linux computer).