Difference between revisions of "PoLabs PoScope Basic2"
Uwe Hermann (talk | contribs) m (→Sample rates) |
Uwe Hermann (talk | contribs) m |
||
(13 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
[[File: | [[File:Polabs_poscope_basic2.png|thumb|right|PoLabs PoScope Basic2]] | ||
The [ | The [https://www.poscope.com/product/poscope-basic-2/ PoLabs PoScope Basic2] is a 16-channel, 8MHz, USB-based logic analyzer (plus oscilloscope, signal/pattern generator, and more). | ||
See [[PoLabs PoScope Basic2/Info]] for some more details (such as '''lsusb - | See [[PoLabs PoScope Basic2/Info]] for some more details (such as '''lsusb -v''' output) on the device. | ||
== | == Hardware == | ||
* [http://www.silabs.com/products/mcu/usb/Pages/C8051F32x-34x.aspx Silicon Labs C8051F32x]: 8051-based microcontroller with USB and 10bit ADC ([http://www.silabs.com/pages/DownloadDoc.aspx?FILEURL=Support%20Documents/TechnicalDocs/C8051F32x.pdf&src=DocumentationWebPart datasheet]) | * [http://www.silabs.com/products/mcu/usb/Pages/C8051F32x-34x.aspx Silicon Labs C8051F32x]: 8051-based microcontroller with USB and 10bit ADC ([http://www.silabs.com/pages/DownloadDoc.aspx?FILEURL=Support%20Documents/TechnicalDocs/C8051F32x.pdf&src=DocumentationWebPart datasheet]) | ||
Line 27: | Line 27: | ||
File:Polabs poscope basic2 omron 401g.jpg|<small>Omron G3VM-401G</small> | File:Polabs poscope basic2 omron 401g.jpg|<small>Omron G3VM-401G</small> | ||
File:Polabs poscope basic2 ti hc74.jpg|<small>TI HC74</small> | File:Polabs poscope basic2 ti hc74.jpg|<small>TI HC74</small> | ||
</gallery> | |||
'''Teardown of another device''': | |||
<gallery> | |||
File:Polabs poscope basic2 otherdevice pcb top.jpg|<small>PCB, top</small> | |||
File:Polabs poscope basic2 otherdevice pcb bottom.jpg|<small>PCB, bottom</small> | |||
File:Polabs poscope basic2 otherdevice chips.jpg|<small>Chips</small> | |||
</gallery> | </gallery> | ||
Line 33: | Line 41: | ||
=== Starting a sampling run === | === Starting a sampling run === | ||
The command for starting an acquisition | The command for starting an acquisition is a USB control transfer (request type: vendor-specific, request: 0x07, value: 0xffa0, index: 0x0000, length: 9). | ||
The 9 bytes of data: | |||
{| border="0" style="font-size: smaller" | {| border="0" style="font-size: smaller" | ||
Line 81: | Line 91: | ||
=== Sample rates === | === Sample rates === | ||
<table><tr valign="top"><td> | |||
'''8MHz - 4MHz''': | '''8MHz - 4MHz''': | ||
Line 90: | Line 102: | ||
!Samplerate | !Samplerate | ||
!Divider | !Divider | ||
!Request value | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 8 MHz | | 8 MHz | ||
| 0x00 | | 0x00 | ||
| 0xfffd | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 6 MHz | | 6 MHz | ||
| 0x01 | | 0x01 | ||
| 0xfffc | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 4 MHz | | 4 MHz | ||
| 0x02 | | 0x02 | ||
| 0xfffa | |||
|} | |} | ||
Line 109: | Line 125: | ||
!Samplerate | !Samplerate | ||
!Divider | !Divider | ||
!Request value | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 2.6 MHz | | 2.6 MHz | ||
| 0x03 | | 0x03 | ||
| 0xfff7 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 2 MHz | | 2 MHz | ||
| 0x04 | | 0x04 | ||
| 0xfff4 | |||
|} | |} | ||
Line 125: | Line 144: | ||
!Samplerate | !Samplerate | ||
!Divider | !Divider | ||
!Request value | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 1 MHz | | 1 MHz | ||
| 0x05 | | 0x05 | ||
| 0xffe8 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 900 kHz | | 900 kHz | ||
| 0x05 | | 0x05 | ||
| 0xffe6 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 800 kHz | | 800 kHz | ||
| 0x05 | | 0x05 | ||
| 0xffe2 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 700 kHz | | 700 kHz | ||
| 0x05 | | 0x05 | ||
| 0xffde | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 600 kHz | | 600 kHz | ||
| 0x05 | | 0x05 | ||
| 0xffd8 | |||
|} | |} | ||
</td><td> | |||
'''500kHz and lower''': | '''500kHz and lower''': | ||
Line 150: | Line 177: | ||
!Samplerate | !Samplerate | ||
!Divider | !Divider | ||
!Request value | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 500 kHz | | 500 kHz | ||
| 0x05 | | 0x05 | ||
| 0xffd0 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 400 kHz | | 400 kHz | ||
| 0x05 | | 0x05 | ||
| 0xffc4 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 300 kHz | | 300 kHz | ||
| 0x05 | | 0x05 | ||
| 0xffb0 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 250 kHz | | 250 kHz | ||
| 0x06 | | 0x06 | ||
| 0xffa0 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 200 kHz | | 200 kHz | ||
| | | 0x06 | ||
| 0xff88 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 150 kHz | | 150 kHz | ||
| | | 0x06 | ||
| 0xff60 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 100 kHz | | 100 kHz | ||
| | | 0x06 | ||
| 0xff10 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 90 kHz | | 90 kHz | ||
| | | 0x06 | ||
| 0xfef6 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 80 kHz | | 80 kHz | ||
| | | 0x06 | ||
| 0xfed4 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 70 kHz | | 70 kHz | ||
| | | 0x06 | ||
| 0xfeaa | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 60 kHz | | 60 kHz | ||
| | | 0x06 | ||
| 0xfe70 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 50 kHz | | 50 kHz | ||
| | | 0x06 | ||
| 0xfe20 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 40 kHz | | 40 kHz | ||
| | | 0x06 | ||
| 0xfda8 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 30 kHz | | 30 kHz | ||
| | | 0x06 | ||
| 0xfce0 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 25 kHz | | 25 kHz | ||
| | | 0x06 | ||
| 0xfc40 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 20 kHz | | 20 kHz | ||
| | | 0x06 | ||
| 0xfb50 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 10 kHz | | 10 kHz | ||
| | | 0x06 | ||
| 0xf6a0 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 9 kHz | | 9 kHz | ||
| | | 0x06 | ||
| 0xf596 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 8 kHz | | 8 kHz | ||
| | | 0x06 | ||
| 0xf448 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 7 kHz | | 7 kHz | ||
| | | 0x06 | ||
| 0xf29c | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 6 kHz | | 6 kHz | ||
| | | 0x06 | ||
| 0xf060 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 5 kHz | | 5 kHz | ||
| | | 0x06 | ||
| 0xed40 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 4 kHz | | 4 kHz | ||
| | | 0x06 | ||
| 0xe890 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 3 kHz | | 3 kHz | ||
| | | 0x06 | ||
| 0xe0c0 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 2.5 kHz | | 2.5 kHz | ||
| | | 0x06 | ||
| 0xda80 | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| 2 kHz | | 2 kHz | ||
| | | 0x06 | ||
| 0xd120 | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| 1 kHz | | 1 kHz | ||
| | | 0x06 | ||
| 0xa240 | |||
|} | |} | ||
</td></tr></table> | |||
=== Sample format === | === Sample format === | ||
* 8-bit sampling: One sample is one byte. Bit 0 is the value of probe A.7 (or B.7), bit 7 is the value of probe A.0 (or B.0). | |||
* 16-bit sampling: One sample consists of two bytes. Byte 0 corresponds to bus A, byte 1 corresponds to bus B. The bit assignment is the same as above. | |||
=== Buffer size === | === Buffer size === | ||
Line 240: | Line 300: | ||
=== Trigger settings === | === Trigger settings === | ||
=== Get current firmware version === | |||
There is a command to request the current firmware version (and date) from the device. The device returns 5 bytes as response: | |||
{| border="0" style="font-size: smaller" | |||
|- bgcolor="#6699ff" | |||
!Byte | |||
!Description | |||
!Comments | |||
|- bgcolor="#eeeeee" | |||
| 0 | |||
| Major firmware version | |||
| Example: 0x03 means major version 3 (example version: 3.5). | |||
|- bgcolor="#dddddd" | |||
| 1 | |||
| Minor firmware version | |||
| Example: 0x05 means minor version 5 (example version: 3.5). | |||
|- bgcolor="#eeeeee" | |||
| 2 | |||
| Firmware date (day) | |||
| Example: 0x1c means 28 (example date: 28/12/07). | |||
|- bgcolor="#dddddd" | |||
| 3 | |||
| Firmware date (month) | |||
| Example: 0x0c means 12 (example date: 28/12/07). | |||
|- bgcolor="#eeeeee" | |||
| 4 | |||
| Firmware date (year, two digits) | |||
| Example: 0x07 means 2007 (example date: 28/12/07). | |||
|} | |||
So in the example of '''0x03 0x05 0x1c 0x0c 0x07''' the resulting firmware version/date is '''3.5 (28/12/07)'''. | |||
== Resources == | |||
* [https://www.poscope.com/product/poscope-basic-2/ Product page] | |||
[[Category:Device]] | |||
[[Category:Logic analyzer]] | |||
[[Category:Oscilloscope]] | |||
[[Category:Mixed-signal oscilloscope]] | |||
[[Category:Planned]] |
Latest revision as of 00:03, 6 January 2020
The PoLabs PoScope Basic2 is a 16-channel, 8MHz, USB-based logic analyzer (plus oscilloscope, signal/pattern generator, and more).
See PoLabs PoScope Basic2/Info for some more details (such as lsusb -v output) on the device.
Hardware
- Silicon Labs C8051F32x: 8051-based microcontroller with USB and 10bit ADC (datasheet)
- Omron G3VM-401G: Analog switching MOS FET relay (datasheet)
- Analog Devices AD8544: CMOS RRIO quad general-purpose opamp (datasheet)
- Texas Instruments HC74 87K G4 A6EK (TODO)
Photos
Teardown of another device:
Protocol
Starting a sampling run
The command for starting an acquisition is a USB control transfer (request type: vendor-specific, request: 0x07, value: 0xffa0, index: 0x0000, length: 9).
The 9 bytes of data:
Byte | Description | Comments |
---|---|---|
0 | Samplerate divider | (see table below) |
1 | ||
2 | ||
3 | ||
4 | ||
5 | Trigger mask | Bit 0 is the mask for probe 0, bit 7 is the mask for probe 7. The same byte is used as trigger mask byte for bus A or bus B (only one at a time is possible). |
6 | ||
7 | ||
8 |
Stopping a sampling run
Sample rates
8MHz - 4MHz: Buffer size is 128 bytes, only bus A is available, ...
2.6MHz - 2MHz: Buffer size is 1160 bytes, only bus A is available, ...
1MHz - 600kHz: Buffer size is 1544 bytes, ...
|
500kHz and lower: Buffer size is only limited by the PC memory, ...
|
Sample format
- 8-bit sampling: One sample is one byte. Bit 0 is the value of probe A.7 (or B.7), bit 7 is the value of probe A.0 (or B.0).
- 16-bit sampling: One sample consists of two bytes. Byte 0 corresponds to bus A, byte 1 corresponds to bus B. The bit assignment is the same as above.
Buffer size
Pre-Trigger
Trigger settings
Get current firmware version
There is a command to request the current firmware version (and date) from the device. The device returns 5 bytes as response:
Byte | Description | Comments |
---|---|---|
0 | Major firmware version | Example: 0x03 means major version 3 (example version: 3.5). |
1 | Minor firmware version | Example: 0x05 means minor version 5 (example version: 3.5). |
2 | Firmware date (day) | Example: 0x1c means 28 (example date: 28/12/07). |
3 | Firmware date (month) | Example: 0x0c means 12 (example date: 28/12/07). |
4 | Firmware date (year, two digits) | Example: 0x07 means 2007 (example date: 28/12/07). |
So in the example of 0x03 0x05 0x1c 0x0c 0x07 the resulting firmware version/date is 3.5 (28/12/07).