Hello Paul, > > Mattis, thanks! That's an implementation along the lines I was thinking. > If yours can get close to 1 Mb/s, chances are one could get all the way > there with the Arduino Itsy Bitsy M4, that's a 120 MHz ARM chip (Cortex > M4). It has USB built-in. I'll study your code; that approach of using a > fast loop for consistent reliable timing matches what I was thinking. > > Actually the STM32F103 has built-in USB so there is no difference there, really.
> DDCMP is a bit harder because it's normally full duplex. I think the code should handle full-duplex, but I have not really tested it. At least Tx and Rx is separate flows in the software. > The framing is different but no harder, I think. And I was thinking of > leaving the protocol state machine to the host, so the microcontroller > would only do framing -- deliver completed good frames to the host without > interpretation. > I made a very quick check on DDCMP. It looks a bit like BSC but using a byte counter rather than various characters to end the frame. That would probably simplify the software. It seems to use SYN SYN which is identical to BSC so that part of the code that takes care of framing could probably be used directly. There are also the small STM32F411 Weact boards out there ( https://github.com/WeActTC/MiniF4-STM32F4x1). 100 MHz and the ART accelerator. From other projects where I have used the STM32F103 have seen that it executes slower than I expected since it was reading code from flash. The ART accelerator should help here to achieve near zero wait state so perhaps 1 Mbit/s would be possible? I made the design of the board so that it should work with the Weact board as well. But never got around testing it, mainly because the stm32duino hasn't support for them. But converting to the more official STM32 Arduino core would probably not be that hard. If you have further questions feel free to ask. Would be nice to add DDCMP support as well! Then perhaps I could try those M8203 / M8207 boards I have sitting here. /Mattis > > paul > > >