From MiniPro Community Wiki
Jump to: navigation, search

Hardware design

The MiniPro is designed around a Microchip PIC18F87J50 micro-controller.

  • It uses eight 74HC373 latches and one 74HC164 shift register
  • Pin drivers are realized with discrete components. Thus we have 16VPP voltage switches, 24VDD voltage switches and 25GND switches
  • DC to DC converters which generate the VPP programming voltage and VDD supply voltage is realized with two MC34063 circuits.

More information (that needs to be transferred here) available in TL866_design.pdf by Radioman.

For anyone making the change that wants to add the 6 pin header check out Digikey part # S9493-ND It is a perfect fit/match and looks exactly the same as the factory part from what I can see and costs 48 cents. Thread Link

See also Design/Schematic

Software design

TL866 has three major layers here:

  1. PC software application
  2. Device firmware
  3. Hardware

The PC software application do not talk directly with the hardware but with the device firmware instead. The device firmware is implemented as a collection of programming algorithms; for example the 24C (i2c) series have a dedicated algorithm in firmware, 25 spi series have another dedicated algorithm and so on. Currently the 3.2.62 firmware version have exactly 41 programming algorithms. All of those >13000 supported chips belongs to one of the 41 programming algorithms (more informations about supported chips), so if we want to add a new chip, then that chip must have the programming algorithm implemented in firmware, if no we are out of luck :(

The PC software is nothing more than a chip database manager which sends simple programming primitives to the device firmware which in turn do all the dirty job! So programming a chip is like this:

  1. PC software sends a simple command to the firmware like "Select protocol nr. X", the device firmware will then switch to that programming algorithm
  2. PC software sends/receive data blocks to/from firmware, the firmware will do the dirty job of manipulating pin drivers and talking with the chip

Source (Radioman)

TL866 has implemented programming primitives, they use these primitives for device self check and logic ic verify. The reason of why these primitives are not used in normal device programming is that it will be very slow to program a device in a such manner. Remember that the PIC18F87J50 is a full speed (12Mbps) device and the transfer type is of type 'bulk'; this means that the bandwidth is not guaranteed and maximum packet size is 64 bytes. Depending on the usb host and OS the minimum packet latency will be somewhere between 3 and 10ms. So even if the data length is 1 byte or 64 bytes the transfer time will be the same, but will be more efficient for large amount of data. Let's say we want to program a device with 64K bytes in this manner, normally with the existing firmware primitives we can set all of those 40pins in one USB transfer and let's suppose that the USB latency is 5ms. Now with this setup we transfer one data byte in 5ms and one address increment command in another 5ms! the total amount of time will be ~10 minutes for a 64K device not counting the verify time. This is why the programming algorithms are implemented in firmware, because is more efficient to transfer large amounts of data over the usb and let the firmware to do the job much faster.

Actually the TL866 have only 39 control primitives and these primitives are grouped in categories like get device info, reset, start session, end session, erase chip, get chip Id, read data block, write data block and several pin and pin driver manipulation primitives.

Source (Radioman)

More information (that needs to be transferred here) available in TL866_design.pdf by Radioman.

Personal tools