¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io

USB interface for the DPO / P7001


 

Hi everybody!

I'm currently in the process of developing a USB interface for the Tektronix DPO (aka P7001). And I'm very happy to tell that my first prototype is now working. I've added some images to the pictures section of the group:

/g/TekScopes/album?id=270172

Picture 001 shows the partial assembled prototype board. The interface can be plugged directly into any free slot of the DPO - no hardware modifications are required.

The interface is designed around a Teensy - a very fast Arduino-like single-board microcontroller. The big advantage of having such a fast processor is that I can implement the entire communication handshake in software.

Picture 003 shows the board in action. The DPO displays an image drawn in software controlled X/Y mode - nothing has to be connected to the plugins for this mode. The readout shows the total number of vectors I was able to draw within the displayed time slot of 1000 ms (1 second).

Picture 004 shows the block diagram of the whole system. This might help to understand how I implemented the interface.

What do you think about the project?

Holger


 

Looks very nice Holger. For the user it's likely far more convenient than your GPIB interface for the DPO.
Success,
Albert


 

Hi Holger,

Nice work, I'm always pleased to see new gadgets bridge the gap between the
modern and the vintage. I invested effort into writing software that lets
you connect the 7854 to the modern PC using USB-GPIB adapters, I posted it
on the group some time ago.

I don't have the P7001 and know very little about it. I suppose the 7854 is
more versatile. I'm interested in what your plan is for the software
support? What will be running "on the other end" of the USB cable?

Best regards, Nenad F.


 

Hi Nenad!

You can find many information about the P7001 (and other Tektronix gear) on Tekwiki:



The USB interface of a Teensy can behave like a very fast COM port / serial device. My plan is that most of the functionality should be accessible with the help of a simple terminal program. So it will be open to almost any type of program.
I am writing my own program that can communicate with some of the Tektronix digitizers from the 1970s / 1980s. It's called Oscar. Here is a screenshot:




Holger


 

Holger,
Well done; especially the wizard!
This might be the world¡¯s first time that USB has connected to magnetic core memory.


 

Very impressive work, Holger - well done!

And I am now aware that the abbreviation DPO once stood for "Digital Processing Oscilloscope" in Tektronix speech - but my TDS5054 D igital P hosphor O scilloscope strongly disagrees with this :-) I was just loooking at it over my shoulder. Youngsters these days...

Cheers,

Magnus


 

This is fantastic work, Holger!

I have a disembodied P7001 that I keep meaning to add to a 7704 so I can play with it. Or, finally accept that I will never get to it and pass the p7001 to a new owner.
Your project tilts my internal debate toward "keep it". :)

Quick question on Teensy: Can it be configured as a USB HID host?
I have many homebrew projects that would benefit from a USB keyboard-to-TTL converter but I'm honestly intimidated by USB complexity so I haven't done much research on USB hosts.


 

Hi Chris!

Yes, at least the Teensy 4.1 supports that mode. You can even use one of the USB ports as an HID host for incoming data and the other USB port can emulate a keybord for sending data to another HID host.

Holger


 

Couple things on USB that might help.

You can easily buy a TTL to USB converter.? Takes TTL level (as from uart/usart) signals, either 3.3 or 5.0 volts, and translates them to a USB signal.? That USB signal, when plugged into a PC, enumerates as a serial port.? You set the baudrate at the terminal to match the TTL baudrate.

In a number of microprocessor boards (my experience is with the ST-MICRO boards), the USB chip on the board used for programming also has a virtual terminal function (at the same time as debugging).? The USB chip is hardwired to a USART output on the processor.? If you don't use those pins for something else, and don't disconnect them, you can initialize that particular USART on the processor and use it to communicate through the debugging cable.? Your debugging system runs an instance of a terminal program.

In addition, if you enable the fprint functions in your system and direct them to the USB usart channel, you can get ongoing outputs from the processor to the computer for monitoring a process.? You could also use the console in and out functions, but those may need to be redirected in your program.

Really easier than you might think.

As to emulating a true HID device, I haven't tried that, haven't needed to, but I suspect with the right drivers, emulating an HID device (mouse, etc) might be easy enough.

Harvey

On 12/2/2021 12:07 PM, Chris Wilkson via groups.io wrote:
This is fantastic work, Holger!

I have a disembodied P7001 that I keep meaning to add to a 7704 so I can play with it. Or, finally accept that I will never get to it and pass the p7001 to a new owner.
Your project tilts my internal debate toward "keep it". :)

Quick question on Teensy: Can it be configured as a USB HID host?
I have many homebrew projects that would benefit from a USB keyboard-to-TTL converter but I'm honestly intimidated by USB complexity so I haven't done much research on USB hosts.





 

On Thu, Dec 2, 2021 at 10:56 AM, Harvey White wrote:


Couple things on USB that might help.

You can easily buy a TTL to USB converter.? Takes TTL level (as from
uart/usart) signals, either 3.3 or 5.0 volts, and translates them to a
USB signal.? That USB signal, when plugged into a PC, enumerates as a
serial port.? You set the baudrate at the terminal to match the TTL
baudrate.

In a number of microprocessor boards (my experience is with the ST-MICRO
boards), the USB chip on the board used for programming also has a
virtual terminal function (at the same time as debugging).? The USB chip
is hardwired to a USART output on the processor.? If you don't use those
pins for something else, and don't disconnect them, you can initialize
that particular USART on the processor and use it to communicate through
the debugging cable.? Your debugging system runs an instance of a
terminal program.

In addition, if you enable the fprint functions in your system and
direct them to the USB usart channel, you can get ongoing outputs from
the processor to the computer for monitoring a process.? You could also
use the console in and out functions, but those may need to be
redirected in your program.

Really easier than you might think.

As to emulating a true HID device, I haven't tried that, haven't needed
to, but I suspect with the right drivers, emulating an HID device
(mouse, etc) might be easy enough.

Harvey


On 12/2/2021 12:07 PM, Chris Wilkson via groups.io wrote:
This is fantastic work, Holger!

I have a disembodied P7001 that I keep meaning to add to a 7704 so I can
play with it. Or, finally accept that I will never get to it and pass the
p7001 to a new owner.
Your project tilts my internal debate toward "keep it". :)

Quick question on Teensy: Can it be configured as a USB HID host?
I have many homebrew projects that would benefit from a USB keyboard-to-TTL
converter but I'm honestly intimidated by USB complexity so I haven't done
much research on USB hosts.





Hi Harvey,

My need is actually in the other direction. There is no PC involved anywhere.

There are a million ways to connect a random electronics project to a PC through USB, typically using an FTDI IC with a virtual com port in Windows. Which is the way you described. Or using a development board from an MCU manufacturer or something in the Arduino ecosystem. But cursory searches turn up little info on preexisting solutions for connecting commercial USB devices (keyboard, mouse, usb stick, whatever) to a random electronics project.

Here's an example of what I want to do. I have a working USB keyboard (standard COTS device) that I want to interface to a vintage CPU. Say a 6502 for example. Or even to a discrete TTL design. So I need a USB *host* that can talk to the keyboard and spit out raw data on the other side in serial or preferably parallel format. I went down the PS2 -> TTL route years and years ago. It was fairly trivial. But USB host implementation is a whole different animal.

Best,
Chris


 

On Thu, Dec 2, 2021 at 10:31 AM, Holger L¨¹bben wrote:


Hi Chris!

Yes, at least the Teensy 4.1 supports that mode. You can even use one of the
USB ports as an HID host for incoming data and the other USB port can emulate
a keybord for sending data to another HID host.

Holger
Hi Holger,

I looked briefly at Teensy 2.x and maybe 3.x a few years back. It seemed promising. But that's as far as I got. IIRC, my understanding was that the Teensy board comes preprogrammed with the Teesny firmware?
How easy is it to customize, and what tools are needed? Anyway, thank you for the feedback. I will look into it again.

Maybe it's best to take this Teensy discussion offline. I will reach out to you through email.

Best,
Chris


 

Ah, misunderstood.

I've looked a bit at the ST Nucleo boards, and there are some with a good CPU that have a separate USB input and output which should support the functions you want.? How to do the software, etc, I don't know since I've not tried that nor looked into the problem.

Done parallel keyboards, and that part would be easy once the USB data came in.

I think that the Nucleo-64 boards *may* have that USB input in addition to the programming inputs, and the Nucleo 144 boards definitely do.

Harvey

On 12/2/2021 2:41 PM, Chris Wilkson via groups.io wrote:
On Thu, Dec 2, 2021 at 10:56 AM, Harvey White wrote:

Couple things on USB that might help.

You can easily buy a TTL to USB converter.? Takes TTL level (as from
uart/usart) signals, either 3.3 or 5.0 volts, and translates them to a
USB signal.? That USB signal, when plugged into a PC, enumerates as a
serial port.? You set the baudrate at the terminal to match the TTL
baudrate.

In a number of microprocessor boards (my experience is with the ST-MICRO
boards), the USB chip on the board used for programming also has a
virtual terminal function (at the same time as debugging).? The USB chip
is hardwired to a USART output on the processor.? If you don't use those
pins for something else, and don't disconnect them, you can initialize
that particular USART on the processor and use it to communicate through
the debugging cable.? Your debugging system runs an instance of a
terminal program.

In addition, if you enable the fprint functions in your system and
direct them to the USB usart channel, you can get ongoing outputs from
the processor to the computer for monitoring a process.? You could also
use the console in and out functions, but those may need to be
redirected in your program.

Really easier than you might think.

As to emulating a true HID device, I haven't tried that, haven't needed
to, but I suspect with the right drivers, emulating an HID device
(mouse, etc) might be easy enough.

Harvey


On 12/2/2021 12:07 PM, Chris Wilkson via groups.io wrote:
This is fantastic work, Holger!

I have a disembodied P7001 that I keep meaning to add to a 7704 so I can
play with it. Or, finally accept that I will never get to it and pass the
p7001 to a new owner.
Your project tilts my internal debate toward "keep it". :)

Quick question on Teensy: Can it be configured as a USB HID host?
I have many homebrew projects that would benefit from a USB keyboard-to-TTL
converter but I'm honestly intimidated by USB complexity so I haven't done
much research on USB hosts.




Hi Harvey,

My need is actually in the other direction. There is no PC involved anywhere.

There are a million ways to connect a random electronics project to a PC through USB, typically using an FTDI IC with a virtual com port in Windows. Which is the way you described. Or using a development board from an MCU manufacturer or something in the Arduino ecosystem. But cursory searches turn up little info on preexisting solutions for connecting commercial USB devices (keyboard, mouse, usb stick, whatever) to a random electronics project.

Here's an example of what I want to do. I have a working USB keyboard (standard COTS device) that I want to interface to a vintage CPU. Say a 6502 for example. Or even to a discrete TTL design. So I need a USB *host* that can talk to the keyboard and spit out raw data on the other side in serial or preferably parallel format. I went down the PS2 -> TTL route years and years ago. It was fairly trivial. But USB host implementation is a whole different animal.

Best,
Chris







 

A little update to my project

I've added some pictures of the current progress:
/g/TekScopes/album?id=270172

Since the Teensy is so powerful, I decided to add controller functionality to it. So beside providing a USB interface, the new board can simulate a connected computer.

One of the first programs which were released for the DPO was "pulse parameter analysis". It's explained in the operator's manual of the scope. I'm currently in the progress to port this program onto the Teensy.

Holger


 

Hello Holger,

let me just repeat that your project is a fascinating upgrade for this vintage instrument and an inspiring work. Well done.

Please let us know how things are progressing.

Servus,

Magnus


A little update to my project

I've added some pictures of the current
progress:
/g/TekScopes/album?id=270172

Since the Teensy is so
powerful, I decided to add controller functionality to it. So beside
providing a USB interface, the new board can simulate a connected
computer.

One of the first programs which were released for the DPO was
"pulse parameter analysis". It's explained in the operator's manual of the
scope. I'm currently in the progress to port this program onto the Teensy.
Holger






 

You hand routed that.? Nice job, too.

Harvey

On 12/2/2021 1:31 PM, Holger L¨¹bben wrote:
Hi Chris!

Yes, at least the Teensy 4.1 supports that mode. You can even use one of the USB ports as an HID host for incoming data and the other USB port can emulate a keybord for sending data to another HID host.

Holger