<div dir="ltr">Wojtek,<div><br></div><div>I had a "run-in" with the Cypress FX2 about 5 years ago.  I was forced to use it because it was used on my then employers previous product.  </div><div><br></div><div>I am not a natural C programmer, and forced to having to use this IC I guess put about 3 months on the project.</div><div><br></div><div>The FX2 is a 8051 based microcontroller</div><div>You need to get hold of the C compiler - Keil uVision  - at whatever cost</div><div>You have to fight your way around the 8051 architecture</div><div><br></div><div>I never did come to terms with the code that ran the USB - I just accepted that was present on the device, and tried to concentrate on getting my application to work.</div><div><br></div><div>I ended up implementing bit-banged SPI on the FX2, to copy a few bytes into a serial SRAM, for which I created a dual port arrangement to the C2000 DSP I was using.</div><div><br></div><div>Did I learn anything useful about USB from my FX2 experience? - just never use an 8051 or FX2 ever again!</div><div><br></div><div>The FX2 adds about $5 the product.  There's really no place left for it nowadays when you can by an easy to use USB to serial converter IC for under $0.50, and every ARM chip from $1.50 upwards has USB on chip.</div><div><br></div><div>I am a solid proponent of keep it simple. I am pleased to add Nicklaus Wirth to my shortlist of computer heroes, including Charles H. Moore, Gordon Bell, Ed de Castro - who offer a voice of sanity in an otherwise insane world.</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 17 February 2016 at 04:56,  <span dir="ltr"><<a href="mailto:skulski@pas.rochester.edu" target="_blank">skulski@pas.rochester.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">enso wrote:<br>
<br>
>[USB] requires a working computer system with substantial resources,<br>
> the opposite of what you need in an embedded or experimental system.<br>
<br>
Not true. I built embedded systems with EZ-USB from Cypress. It is a very<br>
popular chip originally developed by Anchor which Cypress acquired. I used<br>
the FX and FX2 versions. (The newest version is FX3.) The working USB<br>
system consists of a single chip plus a few capacitors. There are no<br>
"substantial resources" involved. The chip has 16 kB RAM and it is enough<br>
for a very substantial project.<br>
<br>
The FX2 software can be very simple because most of the USB protocol is<br>
handled internally by the ASIC part of the chip. A page or two of code is<br>
sufficient for a simple system. Example software is provided in FX2<br>
documentation. A more complex one can use an embedded OS which Cypress<br>
named Frameworks. It is neat, small, well written in plain C, and very<br>
well documented.<br>
<br>
The FX2 Technical reference manual is an outstanding source of knowledge<br>
both on the chip and on the USB protocol and architecture.<br>
<br>
> An asynchronous serial port sends data when it's ready,<br>
<br>
Not that simple. A good reference book will explain a bit more. I<br>
recommend Patterns for Time-Triggered Embedded Systems by Michael Pont<br>
(available from Amazon). This book is very much in Oberon spirit. I once<br>
wrote to Michael Pont that his architecture is very close to Oberon<br>
System. He never heard of Oberon prior to my e-mail, but he checked and<br>
acknowledged the similarity. His software provides an example how Oberon<br>
System could have been if it was supported by a good industrial manager<br>
like Michael.<br>
<br>
> whereas USB has to packetize the data, causing<br>
> unnecessary processing and making the timing less certain.<br>
<br>
Let me point out that the USB-2 can achieve about 25 MBytes per second. It<br>
supports up to 256 devices on a single bus. It has extensive<br>
identification of devices and it can load and execute drivers. Saying that<br>
these features are "unnecessary processing" is not even wrong.<br>
<br>
USB-3 is even more impressive, but I am not an expert on USB-3. My working<br>
knowledge only covers (parts of) USB-2.<br>
<br>
> A serial port was an always-ready peripheral, easily configured<br>
> with a couple of registers.<br>
<br>
One host and a single peripheral. It is not much. As soon as you want to<br>
develop something more substantial (like a network) "easily" does not<br>
apply anymore. You must read a few books. I recommend Serial Port Complete<br>
by Jan Axelson, or the Pont's book pointed above.<br>
<br>
> Initializing a USB connection requires extensive negotiation<br>
> and large tables, requiring kilobytes of RAM and a working CPU.<br>
<br>
Use EZ-USB and USB will become almost as simple as the serial port. All<br>
you need is some easy reading. The USB Complete by Jan Axelson is a good<br>
beginning, and then the first few chapters from the FX or FX2 Technical<br>
Reference Manual will put you on a path to success. The FX/FX2 chips will<br>
take care of "extensive negotiation" for you.<br>
<br>
It is very easy. Just a couple books and a couple months and you will<br>
become a proficient USB developer, if you are not one already.<br>
<br>
> Attaching a simple HID device like a keyboard,<br>
> for those who complain about PS/2 ports, is not that easy.<br>
<br>
Use the Cypress chip to handle the complexity and off you go. Also check<br>
the following page: <a href="http://janaxelson.com/index.html" rel="noreferrer" target="_blank">http://janaxelson.com/index.html</a><br>
<br>
You can also use FTDI if you want a canned solutions. I recommend Cypress<br>
because with Cypress you can take the lid off if you want to.<br>
<br>
> Finally, as ubiquitous as USB is, it is not something<br>
> that should be 'taught'.  It is a dumb, bloated and obfuscated<br>
> spec with multiple standsards, connectors and extensions<br>
> that is much like the US tax code.<br>
<br>
I thought this mailing list was for engineers. I am surprised to find a<br>
politician among us.<br>
<br>
Thank you,<br>
Wojtek<br>
<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
</blockquote></div><br></div>