bpm:wwavusbepp
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
bpm:wwavusbepp [2015/10/04 23:33] – mcmaster | bpm:wwavusbepp [2019/08/14 23:20] (current) – removed mcmaster | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Background ====== | ||
- | |||
- | At one point they sold an upgrade board to convert older programmers to USB. Basically what it boils down to is: | ||
- | |||
- | * The adapter should work for BP-1400, BP-1600, BP-1700, and (some?) EPP series programmers | ||
- | * You can swap it from one unit to another (ex: swap from BP-1410 to BP-1600 to upgrade an old unit) | ||
- | * Units known to ship with this adapter | ||
- | * BP-1410 (probably BP-1610 and BP-1710 as well) | ||
- | * Silicon Sculptor 3 | ||
- | * The adapter is no longer offered as an upgrade for the BP-1×00 models | ||
- | |||
- | [[http:// | ||
- | |||
- | [[http:// | ||
- | |||
- | * 2.4 Mb/s to 9.0 Mb/s potential speed upgrade | ||
- | * 14. What programming site models will this work with? | ||
- | * All EPP programmers. | ||
- | * This may be a different adapter board | ||
- | * 17. About how much will these adapters cost to make? | ||
- | * About $20 in materials | ||
- | * 21. Why can’t I just buy an off-the-shelf USB-Parallel port adapter and use that? | ||
- | * There is no formal specification as to what you must do with these signals. | ||
- | * Even if the vendor-defined signals didn’t get in the way, the performance of any off-the-shelf adapter would be horrible (much worse than parallel port) | ||
- | * 20. What are the Macola part numbers of the site adapter and the hub? | ||
- | * Site Adapter: | ||
- | * Hub: WWAVUSBHUB | ||
- | |||
- | [[https:// | ||
- | |||
- | < | ||
- | >> All I have is an Actel Silicon Sculptor 3, also made by BP Micro,>> | ||
- | </ | ||
- | |||
- | Other: | ||
- | |||
- | * It's part number is WWAVUSBEPP | ||
- | |||
- | From another doc: | ||
- | |||
- | '' | ||
- | |||
- | ====== Programmer compatibility ====== | ||
- | |||
- | Trying a 1600 with the adapter under 5.33.0 (last version to support parallel) worked fine. However, under 5.47.0 (newest release version as of today): | ||
- | |||
- | {{: | ||
- | |||
- | I analyzed the USB packet traces for kicks to see what was happening. | ||
- | |||
- | ====== PCB overview ====== | ||
- | |||
- | {{: | ||
- | |||
- | Above: | ||
- | |||
- | * ASSY No. WWAVUSBEPP | ||
- | * EPCBD03181 Rev C | ||
- | |||
- | {{: | ||
- | |||
- | Where | ||
- | |||
- | {{: | ||
- | |||
- | NOTE: a number of the component values above are best guesses. | ||
- | |||
- | * R6/R7 divider | ||
- | * Most small capacitors. | ||
- | * U3 is best guess | ||
- | |||
- | More info here: [[https:// | ||
- | |||
- | 2015-04-24: tried plugging the adapter from my BP-1410 into my BP-1600 and it worked! | ||
- | |||
- | U1 ([[http:// | ||
- | |||
- | < | ||
- | CY7C68013- | ||
- | 56LFC 0421 | ||
- | E 04 | ||
- | CYP 626381 | ||
- | KOR | ||
- | </ | ||
- | |||
- | U2 (?): | ||
- | |||
- | < | ||
- | LT 515 | ||
- | 176333 | ||
- | </ | ||
- | |||
- | U3 (?): | ||
- | |||
- | < | ||
- | </ | ||
- | |||
- | U4 (8KB I2C EEPROM): | ||
- | |||
- | < | ||
- | 24C64W6 | ||
- | ST K414B | ||
- | </ | ||
- | |||
- | ====== Pinout ====== | ||
- | |||
- | ^Pin ^Dbg color ^MCU pin ^Function ^PU/PD ^Note | | ||
- | |1 |Black |30: CTL1/FLAGB | | | | | ||
- | |2 |Black |29: CTL0/FLAGA | | | | | ||
- | |3 |Brown |18: PB0/FD0 | | | | | ||
- | |4 |Brown |34: PA1/INT1# | |PU | | | ||
- | |5 |Red |19: FB1/FD1 | | | | | ||
- | |6 |Red |38: PA5/ | ||
- | |7 |Orange |20: FB2/FD2 | | | | | ||
- | |8 |Orange |31: CTL2/FLAGC | | | | | ||
- | |9 |Yellow |21: PB3/FD3 | | | | | ||
- | |10 |Yellow |N/A |GND | | | | ||
- | |11 |Green |22: PB4/FD4 | | | | | ||
- | |12 |Green |N/A |GND | | | | ||
- | |13 |Blue |23: PB5:FD5 | | | | | ||
- | |14 |Blue |N/A |GND | | | | ||
- | |15 |Violet |24: PB6/FD6 | | | | | ||
- | |16 |Violet |N/A |GND | | | | ||
- | |17 |Black |25: PB7/FD7 | | | | | ||
- | |18 |N/C |N/A |GND | | | | ||
- | |19 |Brown |33: PA0/INT0# | |PU | | | ||
- | |20 |N/C |N/A |GND | | | | ||
- | |21 |Red |1: RDY0/SLRD | |PU | | | ||
- | |22 |N/C |N/A |GND | | | | ||
- | |23 |Orange |2: RDY1/SLWR | | | | | ||
- | |24 |N/C |N/A |GND | | | | ||
- | |25 |Yellow |35: AP2/SLOE | | | | | ||
- | |26 |N/C |N/A |GND | | | | ||
- | |||
- | Resistor placed sub-optimially. | ||
- | |||
- | 17 signal pins, 16 LA channels. | ||
- | |||
- | |||
- | ====== 2015-09-27 ====== | ||
- | |||
- | Project goal: understand how voltages/ | ||
- | |||
- | |||
- | ===== Phase 1: LA ===== | ||
- | |||
- | Ran into some signal integrity issues setting up capture. | ||
- | * Final setup | ||
- | * https:// | ||
- | * https:// | ||
- | * Flaky: flying leads | ||
- | * https:// | ||
- | * Complete failure: ribbon cable | ||
- | * https:// | ||
- | |||
- | Setup to trigger on J2.1. Triggered during startup sequence reading serial number etc | ||
- | |||
- | Discovered Saleae only support 8/16 channels with USB 2. Ordered USB3 expresscard adapter. | ||
- | |||
- | SN: | ||
- | |||
- | {{: | ||
- | |||
- | Above: 1-8 at startup | ||
- | |||
- | {{: | ||
- | |||
- | Above: after hitting don't register. | ||
- | |||
- | {{: | ||
- | |||
- | Above: after hitting okay that's in unsupported mode | ||
- | |||
- | {{: | ||
- | |||
- | Above: software started but idle | ||
- | |||
- | {{: | ||
- | |||
- | {{: | ||
- | |||
- | Above: voltage monitoring. | ||
- | |||
- | Above also shows that signals are at least in the 1-1.25 MHz range. | ||
- | |||
- | |||
- | ===== Phase 2: USB cap/replay ===== | ||
- | |||
- | Continue above project by toying with USB driver. | ||
- | |||
- | |||
- | ====== 2015-09-29 ====== | ||
- | |||
- | Rewire Saleae cleaner. | ||
- | |||
- | USB | ||
- | * VID: 14b9 | ||
- | * PID: 0001 | ||
- | |||
- | Looks like bp1410_sn.py (bfb0464a) demonstrates the issue I was having: | ||
- | < | ||
- | uvscada/ | ||
- | Scanning for devices... | ||
- | Found device | ||
- | Bus 001 Device 006: ID 14b9:0001 | ||
- | val 157: 08160100 | ||
- | val 165: 000000 | ||
- | bulk read 167 | ||
- | Traceback (most recent call last): | ||
- | File " | ||
- | replay(dev) | ||
- | File " | ||
- | buff = bulkRead(0x86, | ||
- | File " | ||
- | return dev.bulkRead(endpoint, | ||
- | File "/ | ||
- | transferred = self._bulkTransfer(endpoint, | ||
- | File "/ | ||
- | raise libusb1.USBError(result) | ||
- | libusb1.USBError: | ||
- | </ | ||
- | |||
- | Step through code with LA to better understand whats going on | ||
- | |||
- | Open question: should I be renumerating? | ||
- | |||
- | test file: la_sn.py (based on bp1410_sn.py) | ||
- | |||
- | ===== packet 147/148 ===== | ||
- | |||
- | {{: | ||
- | |||
- | LA: seeing some small transients. | ||
- | |||
- | < | ||
- | # Generated from packet 147/148 | ||
- | buff = controlRead(0xC0, | ||
- | validate_read(" | ||
- | </ | ||
- | |||
- | |||
- | ===== packet 157/158 ===== | ||
- | |||
- | Was not able to get any LA activity from this (CH0, 4 random channels): | ||
- | |||
- | < | ||
- | # Generated from packet 157/158 | ||
- | buff = bulkRead(0x86, | ||
- | # NOTE:: req max 512 but got 4 | ||
- | validate_read(" | ||
- | </ | ||
- | |||
- | |||
- | ===== packet 149-154 ===== | ||
- | |||
- | Endpoint reset (packet 149-154) did not trigger CH0 | ||
- | |||
- | |||
- | ===== packet 165/166 ===== | ||
- | |||
- | {{: | ||
- | |||
- | < | ||
- | # Generated from packet 165/166 | ||
- | buff = controlRead(0xC0, | ||
- | print 'val 165: %s' % binascii.hexlify(buff) | ||
- | # NOTE:: req max 4096 but got 3 | ||
- | validate_read(" | ||
- | </ | ||
- | |||
- | Looks exactly like earlier but USB data is different | ||
- | |||
- | |||
- | ===== packet 167/168 ===== | ||
- | |||
- | < | ||
- | # Generated from packet 167/168 | ||
- | buff = bulkRead(0x86, | ||
- | # NOTE:: req max 512 but got 4 | ||
- | validate_read(" | ||
- | </ | ||
- | |||
- | No LA traffic observed. | ||
- | |||
- | |||
- | ===== S/N capture ===== | ||
- | |||
- | From win SW | ||
- | |||
- | {{: | ||
- | |||
- | 01_sn.logicdata | ||
- | |||
- | My S/N: 34346 | ||
- | * 0x862a | ||
- | * 0b_1000_0110_0010_1010 | ||
- | |||
- | This trace provides the first real insight: | ||
- | * CH1-8 appear to be 8 bit data bus | ||
- | * CH9: semi clock like or crosstalk | ||
- | * CH10: semi clock like or crosstalk | ||
- | * CH 13: clock like | ||
- | |||
- | |||
- | ===== Next steps ===== | ||
- | |||
- | Generate C version and double check data flow. Consider getting LA trace from Windows SW working correctly to better understand whats going on | ||
- | |||
- | |||
- | ====== 2015-10-04 ====== | ||
- | |||
- | ===== S/N extraction ===== | ||
- | |||
- | Given | ||
- | < | ||
- | dev.bulkWrite(0x02, | ||
- | buff = dev.bulkRead(0x86, | ||
- | </ | ||
- | |||
- | Generates a bus transaction (ex: getting serial number). | ||
- | * 1 bytes: unknown | ||
- | * \x08 | ||
- | * 4 bytes: bus transaction | ||
- | * \x3A\x00\x90\x32 | ||
- | * 2 bytes: unknown | ||
- | * \x00\x00 | ||
- | * 8 bytes: bus transaction | ||
- | * \x2A\x86\x01\x95\x3C\x36\x90\x00 | ||
- | * Byte order: little endian | ||
- | * 2 bytes: unknown | ||
- | * \x20\x00 | ||
- | * 14 bytes: bus transaction | ||
- | * \x01\x00\xD6\x05\x01\x00\x72\x24\x22\x39\x00\x00\x00\x00 | ||
- | * Are the last 4 bytes actually part of this? | ||
- | * 4 bytes: unknown | ||
- | * \xBF\x1D\x20\x00 | ||
- | |||
- | Note: the USB trace is not the same trace as used on the LA | ||
- | |||
- | S/N details: | ||
- | |||
- | < | ||
- | # Generated from packet 181/182 | ||
- | dev.bulkWrite(0x02, | ||
- | # Generated from packet 183/184 | ||
- | buff = dev.bulkRead(0x86, | ||
- | # NOTE:: req max 512 but got 35 | ||
- | validate_read(" | ||
- | " | ||
- | " | ||
- | |||
- | Assuming negative clock on D13 | ||
- | |||
- | Unmatched | ||
- | 0.2932924 0.0033224 0x0E | ||
- | 0.2932952 0.0000028 0x00 | ||
- | 0.2973270 0.0040318 0x00 | ||
- | First | ||
- | 0.2973350 0.0000080 0x3A | ||
- | 0.2973430 0.0000080 0x00 | ||
- | 0.2973510 0.0000080 0x90 | ||
- | 0.2973590 0.0000080 0x32 | ||
- | Unmatched | ||
- | 0.2973670 0.0000080 0xA7 | ||
- | These bytes look to be a CRC, checksum etc but haven' | ||
- | 0.2973750 0.0000080 0x02 | ||
- | Second | ||
- | 0.2973830 0.0000080 0x2A | ||
- | 0.2973910 0.0000080 0x86 | ||
- | 0.2973990 0.0000080 0x01 | ||
- | 0.2974070 0.0000080 0x95 | ||
- | 0.2974150 0.0000080 0x3C | ||
- | 0.2974230 0.0000080 0x36 | ||
- | 0.2974310 0.0000080 0x90 | ||
- | 0.2974390 0.0000080 0x00 | ||
- | Unmatched | ||
- | 0.2974470 0.0000080 0x1F | ||
- | 0.2974550 0.0000080 0x00 | ||
- | Third | ||
- | 0.2974630 0.0000080 0x01 | ||
- | 0.2974710 0.0000080 0x00 | ||
- | 0.2974790 0.0000080 0xD6 | ||
- | 0.2974870 0.0000080 0x05 | ||
- | 0.2974950 0.0000080 0x01 | ||
- | 0.2975030 0.0000080 0x00 | ||
- | 0.2975110 0.0000080 0x72 | ||
- | 0.2975190 0.0000080 0x24 | ||
- | 0.2975270 0.0000080 0x22 | ||
- | 0.2975350 0.0000080 0x39 | ||
- | 0.2975430 0.0000080 0x00 | ||
- | 0.2975510 0.0000080 0x00 | ||
- | 0.2975590 0.0000080 0x00 | ||
- | 0.2975670 0.0000080 0x00 | ||
- | end matches | ||
- | 0.2975750 0.0000080 0x27 | ||
- | 0.2988804 0.0013054 0x14 | ||
- | 0.2988832 0.0000028 0x38 | ||
- | |||
- | </ | ||
bpm/wwavusbepp.1444001616.txt.gz · Last modified: 2015/10/04 23:33 by mcmaster