Difference between revisions of "Hantek PSO2020"

From sigrok
Jump to navigation Jump to search
(Created page with "{{Infobox oscilloscope | image = 180px | name = Hantek PSO2020 | channels = 1 | samplerate...")
 
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Infobox oscilloscope
{{Infobox oscilloscope
| image              = [[File:Hantek PSO2020 mugshot.png|180px]]
| image              = [[File:Hantek_PSO2020_0.JPG|180px]]
| name                = Hantek PSO2020
| name                = Hantek PSO2020
| channels            = 1
| channels            = 1
| samplerate          = 96MHz
| samplerate          = 96MHz
| samplerate_equiv    =
| bandwidth          = 20MHz
| bandwidth          = 20MHz
| vertical_resolution = 8bit
| vertical_resolution = 8bit
Line 12: Line 11:
| display            = none
| display            = none
| connectivity        = USB
| connectivity        = USB
| features            =
| website            = [http://www.hantek.com/en/ProductDetail_2_5163.html hantek.com]
| website            = [http://www.hantek.com/en/ProductDetail_2_31.html hantek.com]
}}
}}


The '''Hantek PSO2020''' is a USB-based, 1-channel oscilloscope with an analog bandwidth of 20MS/s and 96MS/s sampling rate.
The '''Hantek PSO2020''' is a USB-based, 1-channel oscilloscope with an analog bandwidth of 20MS/s and 96MS/s sampling rate. Wide input rage, from ±100mV to ±50V.


See [[Hantek PSO2020/Info]] for more details (such as '''lsusb -v''' output) about the device.
See [[Hantek PSO2020/Info]] for more details (such as '''lsusb -v''' output) about the device.
Line 24: Line 22:
* '''USB''': [http://www.cypress.com/documentation/datasheets/cy7c68013a-cy7c68014a-cy7c68015a-cy7c68016a-ez-usb-fx2lp-usb Cypress CY7C68013A-100AXC] (FX2LP) ([http://www.cypress.com/file/138911/download datasheet])
* '''USB''': [http://www.cypress.com/documentation/datasheets/cy7c68013a-cy7c68014a-cy7c68015a-cy7c68016a-ez-usb-fx2lp-usb Cypress CY7C68013A-100AXC] (FX2LP) ([http://www.cypress.com/file/138911/download datasheet])
* '''256-byte I²C EEPROM''': [http://www.microchip.com/wwwproducts/en/24LC02B Microchip 24LC02BI] ([http://ww1.microchip.com/downloads/en/DeviceDoc/21709J.pdf datasheet])
* '''256-byte I²C EEPROM''': [http://www.microchip.com/wwwproducts/en/24LC02B Microchip 24LC02BI] ([http://ww1.microchip.com/downloads/en/DeviceDoc/21709J.pdf datasheet])
* 2x '''8-channel analog multiplexer/demultiplexer''': [http://www.nexperia.com/products/logic/switches-multiplexers-de-multiplexers/digital-switches/74HC4051D.html NXP 74HC4051D] ([http://assets.nexperia.com/documents/data-sheet/74HC_HCT4051.pdf datasheet])
* 1x '''8-channel analog multiplexer/demultiplexer''' (U6): [http://www.nexperia.com/products/logic/switches-multiplexers-de-multiplexers/digital-switches/74HC4051D.html NXP 74HC4051D] ([http://assets.nexperia.com/documents/data-sheet/74HC_HCT4051.pdf datasheet])
* '''1A low-dropout voltage regulator (3.3V):''' [http://www.advanced-monolithic.com/products/voltreg.html#1117 Advanced Monolithic Systems AMS1117-3.3] ([http://www.advanced-monolithic.com/pdf/ds1117.pdf datasheet])
* '''1A low-dropout voltage regulator (3.3V):''' [http://www.advanced-monolithic.com/products/voltreg.html#1117 Advanced Monolithic Systems AMS1117-3.3] ([http://www.advanced-monolithic.com/pdf/ds1117.pdf datasheet])
* '''2W, fixed input, isolated & unregulated dual/single output DC/DC converter''': [http://www.mornsun.cn/html/product/content/A_S-2WR2.html Mornsun A_S-2WR2 (A0505S-2WR2)] ([http://www.mornsun.cn/uploads/pdf/A_S-2WR2.pdf datasheet])
* ?? '''2W, fixed input, isolated & unregulated dual/single output DC/DC converter''': [http://www.mornsun.cn/html/product/content/A_S-2WR2.html Mornsun A_S-2WR2 (A0505S-2WR2)] ([http://www.mornsun.cn/uploads/pdf/A_S-2WR2.pdf datasheet])
* '''8-bit, 40/80/100MHz, dual ADC''': [http://www.analog.com/en/products/analog-to-digital-converters/ad-converters/ad9288.html Analog Devices AD9288] ([http://www.analog.com/media/en/technical-documentation/data-sheets/AD9288.pdf datasheet])
* '''8-bit, 40/80/100MHz, dual ADC''': [http://www.analog.com/en/products/analog-to-digital-converters/ad-converters/ad9288.html Analog Devices AD9288] ([http://www.analog.com/media/en/technical-documentation/data-sheets/AD9288.pdf datasheet])
* 4x '''145 MHz FastFET Op Amp''': [http://www.analog.com/en/products/amplifiers/operational-amplifiers/jfet-input-amplifiers/ad8065.html Analog Devices AD8065] ([http://www.analog.com/media/en/technical-documentation/data-sheets/AD8065-KGD-CHIP.pdf datasheet])
* ?? 4x '''145 MHz FastFET Op Amp''': [http://www.analog.com/en/products/amplifiers/operational-amplifiers/jfet-input-amplifiers/ad8065.html Analog Devices AD8065] ([http://www.analog.com/media/en/technical-documentation/data-sheets/AD8065-KGD-CHIP.pdf datasheet])
* '''Crystal''': 24MHz
* '''Crystal''': 24MHz
* 1x '''Photocoupler''' (U100): Toshiba TPL280 ([https://toshiba.semicon-storage.com/info/docget.jsp?did=16751&prodName=TLP280 datasheet])
* 1x '''4.5V Relay''' (used for High Voltage selection - U10): NEC UD2-4.5NU ([http://www.mouser.com/ds/2/212/KEM_R7005_UC2_UD2-541010.pdf datasheet])
* 1x '''±5V DC/DC Coverter''' (U13): INOUT A0505S ([https://www.mornsun-power.com/uploads/pdf/B_LS-1WR2.pdf datasheet])


'''NXP 74HC4051D (upper/lower, CH1/CH2) pinout''':
<small>
<table><tr><td>
{{chip_16pin
|1=<span style="color:orange">(GND)</span> Y4
|2=<span style="color:orange">(GND)</span> Y6
|3=Z
|4=<span style="color:orange">(GND)</span> Y7
|5=<span style="color:orange">(GND)</span> Y5
|6=<span style="color:orange">(GND)</span> E#
|7=VEE
|8=GND
|9=S2 <span style="color:green">(FX2 PC4)</span>
|10=S1 <span style="color:green">(FX2 PC3)</span>
|11=S0 <span style="color:green">(FX2 PC2)</span>
|12=Y3
|13=Y0
|14=Y1
|15=Y2
|16=VCC
}}
</td><td>
{{chip_16pin
|1=<span style="color:orange">(GND)</span> Y4
|2=<span style="color:orange">(GND)</span> Y6
|3=Z
|4=<span style="color:orange">(GND)</span> Y7
|5=<span style="color:orange">(GND)</span> Y5
|6=<span style="color:orange">(GND)</span> E#
|7=VEE
|8=GND
|9=S2 <span style="color:darkcyan">(FX2 PC7)</span>
|10=S1 <span style="color:darkcyan">(FX2 PC6)</span>
|11=S0 <span style="color:darkcyan">(FX2 PC5)</span>
|12=Y3
|13=Y0
|14=Y1
|15=Y2
|16=VCC
}}
</td></tr></table>
</small>
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable"
|-
!S2
!S1
!S0
!74HC4051D Mux
!VDIVs (vendor software)
|-
| 0 || 0 || 0 || Y0 to Z || 200mV
|-
| 0 || 0 || 1 || Y1 to Z || 500mV
|-
| 0 || 1 || 0 || Y2 to Z || 5V, 2V, 1V
|-
| 0 || 1 || 1 || Y3 to Z || 100mV, 50mV, 20mV
|}


'''Microchip 24LC02BI pinout''':
'''Microchip 24LC02BI pinout''':
Line 113: Line 55:
|-
|-
| S1, S2
| S1, S2
| S1=VCC, S2=GND. "Normal operation, data align disabled".
| Tied to VCC. "Data Align Enabled (data from both channels available on rising edge of Clock A. Channel B data is delayed a 1/2 clock cycle).".
|-
|-
| DFS
| DFS
| Tied to GND. Data format select = "offset binary" (not "twos complement").
| Tied to GND. Data format select = "offset binary" (not "twos complement").
|-
| REF_IN_A, REF_IN_B
| Tied to REF_OUT.
|-
|-
| A<sub>IN</sub>A, A<sub>IN</sub>B
| A<sub>IN</sub>A, A<sub>IN</sub>B
Line 130: Line 75:


|-
|-
| CTL2
| CTL0
| Connected to AD9288 ENC<sub>A</sub> and ENC<sub>B</sub> and FX2 IFCLK.
| Connected to AD9288 ENC<sub>A</sub>, to ENC<sub>B</sub> with an inverter. and to FX2 IFCLK.
|-
|-
| PB0-PB7
| PB0-PB7
| Connected to AD9288 D0<sub>A</sub>-D7<sub>A</sub>.
| Connected to AD9288 D7<sub>A</sub>-D0<sub>A</sub>. '''Bit reversed!''' Must be reversed back in software.
|-
|-
| PD0-PD7
| PD0-PD7
| Connected to AD9288 D0<sub>B</sub>-D7<sub>B</sub>.
| Connected to AD9288 D0<sub>B</sub>-D7<sub>B</sub>.
|-
|-
| PA7
| PA0, PA1, PA5 (Inputs)
| 1kHz probe calibration pin.
| Connected to the 3 buttons
|-
| PC0, PC3, PE?, PE? (Inputs)
| Connected to the front selector
|-
| PC1
| Connected to S1 of the 74HC4051D mux
|-
|-
| PC0/PC1
| PC2
| Dual-color (red/green) LED.
| Connected to S0 of the 74HC4051D mux
 
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable"
|-
|-
!PC1
| PC4
!PC0
| AC/DC Selector
!LED
|-
|-
| 0 || 0 || ?
| PA7
| Voltage Selection Relay
|-
|-
| 0 || 1 || green
| PA6
| Green LED
|-
|-
| 1 || 0 || red
| PE1
| Front light
|-
|-
| 1 || 1 || off
| PE2
|}
| Red LED
 
|}
|}


Line 165: Line 115:


<gallery>
<gallery>
File:Hantek 6022be box.jpg|<small>Box</small>
File:Hantek_PSO2020_box1.JPG|<small>Box Front</small>
File:Hantek 6022be accessories.jpg|<small>Accessories</small>
File:Hantek_PSO2020_box2.JPG|<small>Box Back</small>
File:Hantek_PSO2020_0.JPG|<small>Device</small>
File:Hantek_PSO2020_1.JPG|<small>Inside Front</small>
File:Hantek_PSO2020_2.JPG|<small>Inside Back</small>
File:Hantek_PSO2020_3.JPG|<small>Inside Detail</small>
File:Pso2020_analog_input.jpg|<small>Analog input section</small>
</gallery>
</gallery>


'''Another teardown''':
== Protocol ==
 
== Firmware ==
 
'''Note''': The firmware is '''not''' flashed into the device permanently! It will be automatically "uploaded" to the Cypress FX2's SRAM every time you attach the device to a USB port.
 
=== EEPROM layout ===
 
The device has a 256-byte I²C EEPROM with the following layout:


<gallery>
<span style="background-color: orange">c0</span> <span style="background-color: lime">b4 04</span> <span style="background-color: green">23 60</span> <span style="background-color: lightgreen">00 00</span> <span style="background-color: brown">00</span> <span style="background-color: yellow">91 91 91 91 8a 8a 85 85</span>
File:Hantek 6022be.jpg|<small>Device, top</small>
<span style="background-color: yellow">81 81 91 91 8a 8a 85 81 81 81 81 81 91 91 91 91</span>
File:Hantek 6022be 1.jpg|<small>PCB, top</small>
<span style="background-color: yellow">8a 8a 85 85 81 81 91 91 8a 8a 85 81 81 81 81 81</span>
File:Hantek 6022be 2.jpg|<small>PCB, bottom</small>
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Hantek 6022be zoomed 1.jpg|<small>Feedback resistor selector</small>
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Hantek 6022be zoomed 2.jpg|<small>Cypress FX2LP</small>
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
</gallery>
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff


== Protocol ==
Description:


{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable"
{| border="0" style="font-size: smaller;" class="alternategrey sigroktable"
!Bytes
!Description
|-
|-
!Oscilloscope command
| style="background-color: orange" | 0
!bRequest value
| '''0xc0''': FX2 "c0 load" mode, i.e. VID/PID/DID are loaded from EEPROM (but not firmware).
!Notes
|-
|-
|Set CH0 voltage range || 0xE0 || Possible values: 1, 2, 5, 10 (5V, 2.5V, 1V, 500mV).
| style="background-color: lime" | 1-2
| '''0x04b4''': USB vendor ID (VID).
|-
|-
|Set CH1 voltage range || 0xE1 || Possible values: 1, 2, 5, 10 (5V, 2.5V, 1V, 500mV).
| style="background-color: green" | 3-4
| '''0x6023''': USB product ID (PID).
|-
|-
|Set sampling rate || 0xE2 || Possible values: 48, 30, 24, 16, 8, 4, 1 (MHz) and 50, 20, 10 (*10kHz).
| style="background-color: lightgreen" | 5-6
| '''0x0000''': USB device ID (DID).
|-
|-
|Trigger oscilloscope || 0xE3 || Possible values: 1 == start sampling. 0 == ignored currently.
| style="background-color: brown" | 7
| '''0x00''': FX2 configuration byte (see FX2 TRM for details).
|-
|-
|Set number of channels || 0xE4 || Possible values: 1, 2.
| style="background-color: yellow" | 8-47
| Unknown. Possibly calibration data?
|-
|-
| 48-255
| All-0xff.
|}
|}
== Firmware ==
'''Note''': The firmware is '''not''' flashed into the device permanently! It will be automatically "uploaded" to the Cypress FX2's SRAM every time you attach the device to a USB port.


== Resources ==
== Resources ==

Latest revision as of 22:41, 22 January 2024

Hantek PSO2020
Hantek PSO2020 0.JPG
Status
Source code [1]
Channels 1
Samplerate 96MHz
Analog bandwidth 20MHz
Vertical resolution 8bit
Triggers none (SW-only)
Input impedance 1MΩ‖25pF
Memory none
Display none
Connectivity USB
Website hantek.com

The Hantek PSO2020 is a USB-based, 1-channel oscilloscope with an analog bandwidth of 20MS/s and 96MS/s sampling rate. Wide input rage, from ±100mV to ±50V.

See Hantek PSO2020/Info for more details (such as lsusb -v output) about the device.

Hardware


Microchip 24LC02BI pinout:

(Low, but not GND) A0 1-   O -8 VCC
(GND) A1 2- -7 WP (GND)
(GND) A2 3- -6 SCL (FX2 SCL)
VSS 4- -5 SDA (FX2 SDA)

Analog Devices ADS9288 pinout:

AD9288 pins Description
S1, S2 Tied to VCC. "Data Align Enabled (data from both channels available on rising edge of Clock A. Channel B data is delayed a 1/2 clock cycle).".
DFS Tied to GND. Data format select = "offset binary" (not "twos complement").
REF_IN_A, REF_IN_B Tied to REF_OUT.
AINA, AINB Analog input channels.

Cypress FX2 pinout:

FX2 pins Description
CTL0 Connected to AD9288 ENCA, to ENCB with an inverter. and to FX2 IFCLK.
PB0-PB7 Connected to AD9288 D7A-D0A. Bit reversed! Must be reversed back in software.
PD0-PD7 Connected to AD9288 D0B-D7B.
PA0, PA1, PA5 (Inputs) Connected to the 3 buttons
PC0, PC3, PE?, PE? (Inputs) Connected to the front selector
PC1 Connected to S1 of the 74HC4051D mux
PC2 Connected to S0 of the 74HC4051D mux
PC4 AC/DC Selector
PA7 Voltage Selection Relay
PA6 Green LED
PE1 Front light
PE2 Red LED

Photos

Protocol

Firmware

Note: The firmware is not flashed into the device permanently! It will be automatically "uploaded" to the Cypress FX2's SRAM every time you attach the device to a USB port.

EEPROM layout

The device has a 256-byte I²C EEPROM with the following layout:

c0 b4 04 23 60 00 00 00 91 91 91 91 8a 8a 85 85
81 81 91 91 8a 8a 85 81 81 81 81 81 91 91 91 91
8a 8a 85 85 81 81 91 91 8a 8a 85 81 81 81 81 81
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

Description:

Bytes Description
0 0xc0: FX2 "c0 load" mode, i.e. VID/PID/DID are loaded from EEPROM (but not firmware).
1-2 0x04b4: USB vendor ID (VID).
3-4 0x6023: USB product ID (PID).
5-6 0x0000: USB device ID (DID).
7 0x00: FX2 configuration byte (see FX2 TRM for details).
8-47 Unknown. Possibly calibration data?
48-255 All-0xff.

Resources