In a recent project I need a 3.3V PWM signal generator. Initially I think the fastest way to do it is using an Arduino and write a simple program with analogWrite() function. But I’m too lazy to setup the breadboard… so I tried google.
Soon I come across a free software called “PWM Logic“. Supposedly it will turn Saleae Logic Analyzer into a PWM generator. An original Saleae Logic is somewhat too steep for my pocket right now. But I do have a cheap Chinese clone lying aroung. So I hook it up. Not surprisingly it does not work.
Knowing that Saleae Logic hardware is nothing but a Cypress CY68013A chip (that is why it is so easy to clone), I decide to take a further step to reverse engineer the board and check why.
Some more googling leads me to the schematic of a cloned USBEE AX. USBEE AX is basically the same as Saleae except for two analog channels with limited function. On the schematic there is a 74LCV245 octal bus transceiver in between the testing terminals and CY68013A. The direction pin is connected to “DIR” net, but does not seems to link to anywhere else.
Tracing the board, the culprit is found immediately. On my Saleae clone, the 74245 direction pin is grounded, which means it can only receive signal from the terminals, not output to them. While examine the original Saleae teardown, there is no 74245 at all, the terminals are directly connected to CY68013A (with some schottky barrier, maybe). So the Chinese copycat actually did some “innovation” to include a buffer chip, for protection?
Since the reason is found, the next step is simple: break the 74245 direction pin and install a jumper to select input/output function.
Now I have a dual function Logic Analyzer / PWM Generator 🙂
P.S. CY68013A based logic analyzer is as good as its companion software does. Saleae have put a lot of efforts into its Logic software. Buying a clone and pirate the original software is not legal.
Update 28/09/2013: The PWM Logic homepage seems to be down at the moment. I have a local mirror here: PwmLogicSetup 184.108.40.206