Hi all,
I'm currently working on a project in which I'm trying to communicate with a motor control unit over what appears to be a unique protocol.
I've made a long post on my progress in a thread here: https://openinverter.org/forum/viewtopic.php?f=14&t=205
To summarise, this unit is designed to receive a constant 500KHz clock, and will output a 100-byte packet of information whenever its request pin is pulled low.
The data contains start and stop bits, the format is 0 xxxxxxxx 1.
I've been advised that this is a synchronous UART format.
I've attached some pictures below, showing the waveforms from a logic analyser connected to the unit (clock and request signals provided by a benchtop function generator).
A typical packet looks like below:

Each "byte" has a start bit, 8 data bits, and a stop bit, as below:

An overview of the data received.

A close-up of the start of each packet

A close-up of the middle of each packet, where things are more interesting than "00000000"

Note that this is a differential signal, it is likely inverted, so the 1 11111111 0 you see in the first packet is actually "0 00000000 1". I am not using a differential transceiver right now, although I do have one on the way.
I believe that for USART communication, a pin must be defined to act as a clock generator, and that TX and RX will sync to this pin. I'm not sure how to implement this on Teensy. There are a few forum thread on the Arduino forum where this has been achieved, but I fear that it may be microcontroller specific, and would not apply to the Teensy.
The final goal is to be able to write to this device as well, this is done over a separate pin, and again is a synchronous UART stream in teh same format as the one I'm trying to read.
Any advice would be greatly appreciated!
I'm currently working on a project in which I'm trying to communicate with a motor control unit over what appears to be a unique protocol.
I've made a long post on my progress in a thread here: https://openinverter.org/forum/viewtopic.php?f=14&t=205
To summarise, this unit is designed to receive a constant 500KHz clock, and will output a 100-byte packet of information whenever its request pin is pulled low.
The data contains start and stop bits, the format is 0 xxxxxxxx 1.
I've been advised that this is a synchronous UART format.
I've attached some pictures below, showing the waveforms from a logic analyser connected to the unit (clock and request signals provided by a benchtop function generator).
A typical packet looks like below:

Each "byte" has a start bit, 8 data bits, and a stop bit, as below:

An overview of the data received.

A close-up of the start of each packet

A close-up of the middle of each packet, where things are more interesting than "00000000"

Note that this is a differential signal, it is likely inverted, so the 1 11111111 0 you see in the first packet is actually "0 00000000 1". I am not using a differential transceiver right now, although I do have one on the way.
I believe that for USART communication, a pin must be defined to act as a clock generator, and that TX and RX will sync to this pin. I'm not sure how to implement this on Teensy. There are a few forum thread on the Arduino forum where this has been achieved, but I fear that it may be microcontroller specific, and would not apply to the Teensy.
The final goal is to be able to write to this device as well, this is done over a separate pin, and again is a synchronous UART stream in teh same format as the one I'm trying to read.
Any advice would be greatly appreciated!