Difference between revisions of "SainSmart DDS140"
SamantazFox (talk | contribs) (→Hardware: Fix error made in previous change: the two AD devices in SOIC8 are completely different chips) |
|||
(8 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
[[File:Sainsmart dds140 mugshot.png|thumb|right|SainSmart DDS140]] | |||
The [http://www.sainsmart.com/sainsmart-dds-140-40m-200m-s-virtual-oscilloscope-black.html SainSmart DDS140] is a USB-based, 2-channel oscilloscope with an analog bandwidth of 40MS/s and 200MS/s sampling rate. | The [http://www.sainsmart.com/sainsmart-dds-140-40m-200m-s-virtual-oscilloscope-black.html SainSmart DDS140] is a USB-based, 2-channel oscilloscope with an analog bandwidth of 40MS/s and 200MS/s sampling rate. | ||
Line 7: | Line 9: | ||
== Hardware == | == Hardware == | ||
== Photos == | * Main unit: | ||
** '''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]) | |||
** '''64-kbyte I²C EEPROM''': [http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010831 Microchip 24LC64I] ([http://ww1.microchip.com/downloads/en/DeviceDoc/21189f.pdf datasheet]) | |||
** '''Dual 8bit, 100MSPS ADC''': [https://translate.google.com/translate?hl=en&sl=zh-CN&tl=en&u=http%3A%2F%2Fwww.mxtronics.com%2Fn107%2Fn124%2Fn181%2Fn184%2Fc692%2Fcontent.html MXTronix MXT2088] ([http://www.mxtronics.com/n107/n124/n181/n184/c692/attr/2630.pdf datasheet]) | |||
** 5x '''CMOS differential 4-channel analog mux/demux with logic-level conversion''': [http://www.ti.com/product/cd4052b/description Texas Instruments CD4052BM] ([http://www.ti.com/lit/gpn/cd4052b datasheet]) | |||
** '''CPLD''': [https://www.altera.com/products/cpld/max-series/max-ii/overview.html Altera MAX II EPM240T100CN] ([https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/max2/max2_mii5v1.pdf datasheet]) | |||
** '''64K x 16 CMOS anyc SRAM (8ns)''': [http://www.issi.com/US/product-asynchronous-sram.shtml ISSI IS61LV6416-8TI] ([http://www.issi.com/WW/pdf/61LV6416_L.pdf datasheet]) | |||
** '''Dual voltage comparator''': [http://www.ti.com/product/LM393 TI LM393] ([http://www.ti.com/lit/gpn/lm393 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]) | |||
** '''Crystal''': 24MHz (for Cypres FX2) | |||
** '''Crystal''': 80MHz (for Altera MAX II) | |||
* Logic analyzer: | |||
** '''Octal translating transceiver''' [https://www.nexperia.com/products/analog-logic-ics/asynchronous-interface-logic/voltage-translators-level-shifters/series/74LVC4245A.html NXP (Nexperia) LVC4245A] ([https://assets.nexperia.com/documents/data-sheet/74LVC4245A.pdf datasheet]) | |||
* Signal generator: | |||
** '''CMOS Single 8-Channel Analog Multiplexer/Demultiplexer''' [https://www.ti.com/product/CD4052B Texas Instruments CD4052B] ([https://www.ti.com/lit/ds/symlink/cd4052b.pdf datasheet]) | |||
** '''90 MHz Variable Gain Amplifier''' [https://www.analog.com/en/products/ad603.html Analog Devices AD603AR] ([https://www.analog.com/media/en/technical-documentation/data-sheets/AD603.pdf datasheet]) | |||
** '''Dual Operational Amplifier''' [https://www.analog.com/en/products/ad826.html Analag Devices AD826] ([https://www.analog.com/media/en/technical-documentation/data-sheets/AD826.pdf datasheet]) | |||
== Photos - Oscillocope (main unit) == | |||
<gallery> | |||
File:Saintsmart dds140 package contents.jpg|<small>Package contents</small> | |||
File:Saintsmart dds140 sticker.jpg|<small>Sticker</small> | |||
File:Saintsmart dds140 device top.jpg|<small>Device, top</small> | |||
File:Saintsmart dds140 device bottom.jpg|<small>Device, bottom</small> | |||
File:Saintsmart dds140 usb.jpg|<small>USB</small> | |||
File:Saintsmart dds140 connectors.jpg|<small>Connectors</small> | |||
File:Saintsmart dds140 second connector.jpg|<small>2nd connector</small> | |||
File:Saintsmart dds140 pcb top.jpg|<small>PCB, top</small> | |||
File:Saintsmart dds140 pcb bottom.jpg|<small>PCB, bottom</small> | |||
File:Saintsmart dds140 mxt2088.jpg|<small>MXT2088</small> | |||
File:Saintsmart dds140 fx2.jpg|<small>Cypress FX2</small> | |||
File:Saintsmart dds140 microchip 24lc64i.jpg|<small>Microchip 24LC64I</small> | |||
File:Saintsmart dds140 altera epm240t100c5n.jpg|<small>Altera MAXII EPM240T100CN</small> | |||
File:Saintsmart dds140 issi is61lv6416-8ti.jpg|<small>ISSI IS61LV6416-8TI</small> | |||
File:Saintsmart dds140 80mhz crystal.jpg|<small>80MHz crystal</small> | |||
File:Saintsmart dds140 ams1117.jpg|<small>AMS1117-3.3</small> | |||
File:Saintsmart dds140 ti cd4052bm.jpg|<small>TI CD4502BM</small> | |||
File:Saintsmart dds140 lm393.jpg|<small>LM393</small> | |||
File:Saintsmart dds140 tq2 5v atq209.jpg|<small>?</small> | |||
File:Saintsmart dds140 nais 210eh-219.jpg|<small>?</small> | |||
</gallery> | |||
== Photos - Signal generator extension == | |||
<gallery> | |||
File:Saintsmart dds140 - signal generator - device top.jpg|<small>Device, top</small> | |||
File:Saintsmart dds140 - signal generator - PCB top.jpg|<small>PCB, top</small> | |||
File:Saintsmart dds140 - signal generator - PCB bottom.jpg|<small>PCB, bottom</small> | |||
File:Saintsmart dds140 - signal generator - PCB top (closeup).jpg|<small>PCB, top (closer view)</small> | |||
</gallery> | |||
== Photos - Logic analyzer extension == | |||
<gallery> | |||
File:Saintsmart dds140 - logic analyzer - device top.jpg|<small>Device, top</small> | |||
File:Saintsmart dds140 - logic analyzer - PCB top.jpg|<small>PCB, top</small> | |||
File:Saintsmart dds140 - logic analyzer - PCB top (closeup).jpg|<small>PCB, top (closer view)</small> | |||
</gallery> | |||
== Protocol == | == Protocol == | ||
The protocol used by this device is not based on anything else. | |||
It seems to be based on a raw data exchange using a WinUSB pipe. | |||
=== Sending commands === | |||
The DDS140 uses a simple set of command codes (uint8_t, from 0 to 255) that may take arguments. | |||
The host software uses an helper DLL to send theses commands to the device. | |||
In this DLL, two functions act as a wrapper around ''WinUsb_ControlTransfer()'': | |||
* '''USBCtrlTransSimple()''' is used for simple commands, that does not take arguments | |||
* '''USBCtrlTrans()''' is used for more complex commands, i.e that takes arguments | |||
It has to be noted that both functions can return data. | |||
The list of currently reversed command codes is available here: | |||
* https://gitlab.com/SamantazFox/dds140-reverse-engineering/-/blob/master/program/Commands_summary.rst (main) | |||
* https://github.com/SamantazFox/dds140-reverse-engineering/blob/master/program/Commands_summary.rst (mirror) | |||
=== Getting the data back === | |||
the process that gets the data back from the device is not well understood yet. | |||
It seems that the helper DLL contains a wrapper function around '''WinUsb_ReadPipe()''' (for raw buffer read), | |||
plus a lot of pre-processing (via the '''DataPreDisposal()''' function) which is directly dependant of the GUI | |||
settings (graph zoom and position). | |||
This has yet to be reversed. | |||
== Firmware == | == Firmware == | ||
Line 15: | Line 106: | ||
== Resources == | == Resources == | ||
* [https://www.sainsmart.com/products/dds140-pc-based-usb-oscilloscope-40mhz-bandwidth-200ms-s-black vendors page] | |||
* [http://s3.amazonaws.com/s3.image.smart/download/101-10-144.rar Vendor software + manuals] | |||
* [http://www.eevblog.com/forum/testgear/sainsmart-dds120-usb-oscilloscope-(buudai-bm102)/ EEVBlog forum thread] | * [http://www.eevblog.com/forum/testgear/sainsmart-dds120-usb-oscilloscope-(buudai-bm102)/ EEVBlog forum thread] | ||
* [https://sourceforge.net/projects/logic140/ SourceForge Logic140 project] | |||
[[Category:Device]] | [[Category:Device]] | ||
[[Category:Oscilloscope]] | [[Category:Oscilloscope]] | ||
[[Category:Planned]] | [[Category:Planned]] |
Latest revision as of 21:46, 26 September 2020
The SainSmart DDS140 is a USB-based, 2-channel oscilloscope with an analog bandwidth of 40MS/s and 200MS/s sampling rate.
Optionally, it also supports usage as signal generator or logic analyzer.
See SainSmart DDS140/Info for more details (such as lsusb -v output) about the device.
Hardware
- Main unit:
- USB: Cypress CY7C68013A-100AXC (FX2LP) (datasheet)
- 64-kbyte I²C EEPROM: Microchip 24LC64I (datasheet)
- Dual 8bit, 100MSPS ADC: MXTronix MXT2088 (datasheet)
- 5x CMOS differential 4-channel analog mux/demux with logic-level conversion: Texas Instruments CD4052BM (datasheet)
- CPLD: Altera MAX II EPM240T100CN (datasheet)
- 64K x 16 CMOS anyc SRAM (8ns): ISSI IS61LV6416-8TI (datasheet)
- Dual voltage comparator: TI LM393 (datasheet)
- 1A low-dropout voltage regulator (3.3V): Advanced Monolithic Systems AMS1117-3.3 (datasheet)
- Crystal: 24MHz (for Cypres FX2)
- Crystal: 80MHz (for Altera MAX II)
- Logic analyzer:
- Octal translating transceiver NXP (Nexperia) LVC4245A (datasheet)
- Signal generator:
- CMOS Single 8-Channel Analog Multiplexer/Demultiplexer Texas Instruments CD4052B (datasheet)
- 90 MHz Variable Gain Amplifier Analog Devices AD603AR (datasheet)
- Dual Operational Amplifier Analag Devices AD826 (datasheet)
Photos - Oscillocope (main unit)
Photos - Signal generator extension
Photos - Logic analyzer extension
Protocol
The protocol used by this device is not based on anything else. It seems to be based on a raw data exchange using a WinUSB pipe.
Sending commands
The DDS140 uses a simple set of command codes (uint8_t, from 0 to 255) that may take arguments.
The host software uses an helper DLL to send theses commands to the device. In this DLL, two functions act as a wrapper around WinUsb_ControlTransfer():
- USBCtrlTransSimple() is used for simple commands, that does not take arguments
- USBCtrlTrans() is used for more complex commands, i.e that takes arguments
It has to be noted that both functions can return data.
The list of currently reversed command codes is available here:
- https://gitlab.com/SamantazFox/dds140-reverse-engineering/-/blob/master/program/Commands_summary.rst (main)
- https://github.com/SamantazFox/dds140-reverse-engineering/blob/master/program/Commands_summary.rst (mirror)
Getting the data back
the process that gets the data back from the device is not well understood yet. It seems that the helper DLL contains a wrapper function around WinUsb_ReadPipe() (for raw buffer read), plus a lot of pre-processing (via the DataPreDisposal() function) which is directly dependant of the GUI settings (graph zoom and position).
This has yet to be reversed.