Products > Test Equipment

SainSmart DDS120 & DDS140 USB Oscilloscope

<< < (7/84) > >>

donut6:
For the DDS140 I had to send around 40 control transfer requests (currently magic numbers!) before getting bulk transfer data.
The bulk transfer also depends on repeated requests and waiting for the correct response (Request type 0x33 & 0x50 and waiting for response 0x2c followed by 0x21).

Seems a bit more complex than the DDS120 trace, but may also depends on the state of the scope.

BTW ganzuul , the probes are P6060. Similar/identical to -> http://www.aliexpress.com/item/Freeshipping-P6060-X1-X10-60-MHZ-oscilloscope-probe/1751563389.html

psynapse:
In great haste, copying the eeprom contents from a DDS140 (largely following the example of others here)

- disconnect (open) jumper J1 from pcb
- connect scope to PC
- wait for USB recognition (CYPRESS default VID/PID)
- connect (close) jumper J1 on pcb
- start Cypress USB Console
- start EZ-USB Interface (Options -> EZ-USB)
- "Cypress EZ-USB ..." should be shown next do Device
- download vend_ax.zip to the scope controller, with download button
-issue Vendor request A9 , Value= start address, length (limited to 4096), direction "1 in"
- (so to get all the DDS140 eeprom need two commands , one with value 0x0000, next with 0x1000, both length 4096
- Done

Here is the result:


Not a huge amount of code.  Will get to it at the end of the weekend

ganzuul:
The attached binary appears to be correct for the DDS 140.

It has some large differences from the DDS120's! The JTAG header has obviously been put to use. I turned psynapse's hex dump into binary with the following command on Linux:


--- Code: ---xxd -r eeprom\ dump.txt dds140.bin
--- End code ---

I wonder if the CPLD on the DDS140 could not be used to interleave the ADC, so that time-resolution is doubled. - That is the method by which the Rigol gets to 1GS/s.


Meanwhile, the FX2 has built-in UART. The pins are RXD1, TXD1, RXD0 and TXD0. They don't appear to be shorted to ground and from visual inspection they are not even soldered on the DDS140. =)

I'll need to fabricate some really small probes, and see if the pins are talking.

donut6:

--- Quote ---I wonder if the CPLD on the DDS140 could not be used to interleave the ADC, so that time-resolution is doubled. - That is the method by which the Rigol gets to 1GS/s.
--- End quote ---

Haven't had much free time this weekend. Think you're right! The 2 ADC channels are byte interleaved. There's also a "200Mhz" mode that shuts off probe 2 and only sends probe 1 data presumably from both ADCs .

doctormord:

--- Quote from: psynapse on October 10, 2014, 12:35:14 pm ---Has anybody had the courage to cross load firmware? (Since these devices are largely boot loaded from the host PC ????????). 

--- End quote ---

Their actualy aren't in case of those DDS120/140 where the eeprom holds the firmware. I know those little logic-analyzers where only the PID/VID is stored in a (very smaller) eeprom. For sure, the DDS120 could boot up from host-side firmware injection in the CY RAM. Problem could be, that the acutally firmware does not enumerate after rebooting the 8051 core, so the software will likely fail.

To get around this, the .inf files could be altered to accept the CY standard PID/VID as a valid scope but i guess the software will check for correct (original) PID/VID.

(Edit: This seems to be all known for good, i guess)

Beside this, i had a deeper view in the provided DLL files to access the scope. Extracting the methods is on ease, but the the method-calls are not documented. As i don't have an IDA enviroment, i can't dig any deeper into this.

DDS120:

--- Code: ---AiReadBulkData 0x10001080 0x00001080 1 (0x1) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
AutoMeasurement 0x10001ff0 0x00001ff0 2 (0x2) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
BufferInit 0x100012c0 0x000012c0 3 (0x3) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
DataPreDisposal 0x100012d0 0x000012d0 4 (0x4) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
DeviceClose 0x10003460 0x00003460 5 (0x5) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
DeviceOpen 0x10003410 0x00003410 6 (0x6) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
DllMain 0x10001000 0x00001000 24 (0x18) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
EventCheck 0x100031a0 0x000031a0 7 (0x7) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
GetBuffer4Read 0x10001220 0x00001220 8 (0x8) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
GetBuffer4Wr 0x100012b0 0x000012b0 9 (0x9) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
GetData 0x10001c90 0x00001c90 10 (0xa) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
GetHWbufferSize 0x10001160 0x00001160 11 (0xb) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
GetInfoByte 0x10001190 0x00001190 12 (0xc) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
GetInfodouble 0x100011c0 0x000011c0 13 (0xd) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
GetRawData4Read 0x10001200 0x00001200 14 (0xe) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
ResetPipe 0x100032e0 0x000032e0 15 (0xf) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
SetData 0x10001e20 0x00001e20 16 (0x10) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
SetInfo 0x10001120 0x00001120 17 (0x11) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
SetReadEnableOrNot 0x10001100 0x00001100 18 (0x12) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
SetStableEnableOrNot 0x10001110 0x00001110 19 (0x13) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
SetTrigInfo 0x10001170 0x00001170 20 (0x14) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
TrigDataPrepare 0x10002c70 0x00002c70 21 (0x15) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
USBCtrlTrans 0x100030e0 0x000030e0 22 (0x16) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function
USBCtrlTransSimple 0x10003080 0x00003080 23 (0x17) USBInterFace.dll E:\DDS120\USBInterFace.dll Exported Function

--- End code ---


--- Code: ---DllMain 0x10001000 0x00001000 3 (0x3) publicDLL.dll E:\DDS120\publicDLL.dll Exported Function
GetData 0x10001030 0x00001030 1 (0x1) publicDLL.dll E:\DDS120\publicDLL.dll Exported Function
SetData 0x100010e0 0x000010e0 2 (0x2) publicDLL.dll E:\DDS120\publicDLL.dll Exported Function

--- End code ---

DDS140:

--- Code: ---AiReadBulkData 0x10001080 0x00001080 1 (0x1) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
AutoMeasurement 0x10002340 0x00002340 2 (0x2) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
BufferInit 0x100012c0 0x000012c0 3 (0x3) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
DataPreDisposal 0x100012d0 0x000012d0 4 (0x4) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
DeviceClose 0x100037c0 0x000037c0 5 (0x5) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
DeviceOpen 0x10003770 0x00003770 6 (0x6) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
DllMain 0x10001000 0x00001000 24 (0x18) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
EventCheck 0x100034f0 0x000034f0 7 (0x7) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
GetBuffer4Read 0x10001220 0x00001220 8 (0x8) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
GetBuffer4Wr 0x100012b0 0x000012b0 9 (0x9) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
GetData 0x10001fe0 0x00001fe0 10 (0xa) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
GetHWbufferSize 0x10001160 0x00001160 11 (0xb) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
GetInfoByte 0x10001190 0x00001190 12 (0xc) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
GetInfodouble 0x100011c0 0x000011c0 13 (0xd) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
GetRawData4Read 0x10001200 0x00001200 14 (0xe) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
ResetPipe 0x10003630 0x00003630 15 (0xf) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
SetData 0x10002170 0x00002170 16 (0x10) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
SetInfo 0x10001120 0x00001120 17 (0x11) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
SetReadEnableOrNot 0x10001100 0x00001100 18 (0x12) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
SetStableEnableOrNot 0x10001110 0x00001110 19 (0x13) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
SetTrigInfo 0x10001170 0x00001170 20 (0x14) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
TrigDataPrepare 0x10002fc0 0x00002fc0 21 (0x15) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
USBCtrlTrans 0x10003430 0x00003430 22 (0x16) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function
USBCtrlTransSimple 0x100033d0 0x000033d0 23 (0x17) USBInterFace.dll E:\DDS140\USBInterFace.dll Exported Function

--- End code ---


--- Code: ---DllMain 0x10001000 0x00001000 3 (0x3) publicDLL.dll E:\DDS140\publicDLL.dll Exported Function
GetData 0x10001030 0x00001030 1 (0x1) publicDLL.dll E:\DDS140\publicDLL.dll Exported Function
SetData 0x100010e0 0x000010e0 2 (0x2) publicDLL.dll E:\DDS140\publicDLL.dll Exported Function

--- End code ---

Comparing the DLLs from DDS120/140 shows that the basic method-names are the same.

For the FX2 i would guess, i just bulk dumps the ADC-data on one controll-point -> IN, adjusts some GPIO to switch the analog-frontend (CD4052 8ch. multiplexer) -> OUT. I would also guess, that the HRA (SOT23-5 AD8065 FET Opamp) are gain-switched regarding to the selected input-amplitude.

http://www.analog.com/static/imported-files/data_sheets/AD8065_8066.pdf

Mainly, nothing more is going on here.  ::)

Edit:

Checking TXD0/1, nothin to be seen here on both pins (dead silent).

For the AD8065, one will be used as a SGA (switchable gain amplifier), the second seems to be the buffer stage.

Looking at the pictures DDS120/140, i'd say, the FPGA is only used for the expansion port. Will try a crossflash with DDS140 on my DDS120.

Edit: Crossflash works, drivers get installed, app is starting, BUT it seems that ho valid data is coming in. Despite this, the app is lagging alot. -> Wont work. :)

Cheers, doc

Navigation

[0] Message Index

[#] Next page

[*] Previous page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod