I'm looking at attempting to reverse engineer the communication protocol between a Canon SLR camera and a E-TTL2 speedlight by monitoring the traffic between them.
From what I understand, it's incredibly similar to SPI, and uses a fixed clock speed, but slightly but slightly odd voltages.
I understand I can only get an Arduino in slave or master mode for SPI.... However, what if I get two Arduinos, get one to monitor the MISO line in slave format, and another to monitor the MOSI line in slave format? That along with some comparators to get the voltages right for the Arduino's SPI to correctly detect things.
Surely if I get the arduinos running, and then use the first clock cyclel to "sync" the two (to get the MOSI/MISO data in sync), then have each dump the data via serial for processing, it might work?
The 104khz bus frequency it runs at is probably on the limit for bitbashing, and any extra processing or use of serial print would probably push it over the edge. From what I understand, both blog posters ran into this limitation whilst bit-banging.
Any ideas? Has anyone tried anything like this before with Arduino?
What are the slightly odd voltages? in the pictures of the scope it looks like they are standard TTL level.
The scope output also indicates that the frequency is quite low (about 60kHz), so you might simply connect the clock signal to an interrupt pin and read the two MOSI and MISO in the ISR. Should be quite easy for shorter transfers. Just be sure to print the results after the sniff is complete.
I'm looking at attempting to reverse engineer the communication protocol between a Canon SLR camera and a E-TTL2 speedlight by monitoring the traffic between them.
From what I understand, it's incredibly similar to SPI, and uses a fixed clock speed, but slightly but slightly odd voltages.
I understand I can only get an Arduino in slave or master mode for SPI.... However, what if I get two Arduinos, get one to monitor the MISO line in slave format, and another to monitor the MOSI line in slave format? That along with some comparators to get the voltages right for the Arduino's SPI to correctly detect things.
Surely if I get the arduinos running, and then use the first clock cyclel to "sync" the two (to get the MOSI/MISO data in sync), then have each dump the data via serial for processing, it might work?
The 104khz bus frequency it runs at is probably on the limit for bitbashing, and any extra processing or use of serial print would probably push it over the edge. From what I understand, both blog posters ran into this limitation whilst bit-banging.
Any ideas? Has anyone tried anything like this before with Arduino?
Bevan
Have you made any progress with this?
AND: Are you over thinking the situation?
Adding a second arduino creates the additional complication of trying to get the two data streams back "in sync".
Bill's original bit bashing program is a great starting point for a simple reliable sniffer.