Difference between revisions of "Protocol decoder:Iebus"

From sigrok
Jump to navigation Jump to search
(Add scope traces)
m
 
(2 intermediate revisions by the same user not shown)
Line 2: Line 2:
| id              = iebus
| id              = iebus
| name            = IEBus
| name            = IEBus
| description    = A multidrop differential CAN-like bus used in multimedia applications.
| description    = A multi-drop multi-master differential CAN-like bus
| status          = 100%
| status          = 100%
| license        = GPLv3+
| license        = GPLv3+
Line 15: Line 15:
}}
}}


The '''iebus''' protocol decoder...
The '''iebus''' protocol decoder handles decoding of the IEBus, a lower-level layer of the AVC-LAN protocol which is used in
multimedia control applications in Toyota and other brand cars. It's connected with Python output to avclan which is a higher-level
decoder handling the decoding of frame contents, identifying devices on the bus based on their addresses and functions and so on.


== Hardware ==
== Hardware ==
Line 22: Line 24:


[[File:Iebus-sniffer.png|400px]]
[[File:Iebus-sniffer.png|400px]]


'''Photos:'''
'''Photos:'''


TODO.
None


== Protocol ==
== Protocol ==


The protocol itself has been documented pretty extensively on [https://en.wikipedia.org/wiki/IEBus Wikipedia] as well as other more
The scope captures below show an IEBus operating in Mode 2 which means that the time for each bit is 39µs. The example scope trace below provides an overview of the voltages and timings that with which the bus operates:
niche pages:
[http://softservice.com.pl/corolla/avc/avclan.php]
[https://elinux.org/AVC-LAN]
[http://www.interfacebus.com/Design_Connector_IEbus.html]
 
AVC-LAN operates in IEBus Mode 2 which means that the time for each bit is 39µs.
 
The example scope trace below provides an overview of the voltages and timings that with which the bus operates:


[[File:Iebus-mode2-frame.png]]
[[File:Iebus-mode2-frame.png]]
Line 58: Line 51:
== Resources ==
== Resources ==


* TODO.
The protocol itself has been documented pretty extensively on Wikipedia as well as other more
niche pages:
* [https://en.wikipedia.org/wiki/IEBus Wikipedia]
* [http://softservice.com.pl/corolla/avc/avclan.php Softservice]
* [https://elinux.org/AVC-LAN eLinux]
* [https://pop.fsck.pl/hardware/toyota-corolla.html pop.fsck.pl]
* [http://www.interfacebus.com/Design_Connector_IEbus.html Interfacebus]


[[Category:Protocol decoder]]
[[Category:Protocol decoder]]
[[Category:CAN]]
[[Category:CAN]]

Latest revision as of 14:12, 7 June 2023

iebus
Name IEBus
Description A multi-drop multi-master differential CAN-like bus
Status 100%
License GPLv3+
Source code decoders/
Input logic
Output iebus
Probes
Optional probes ?
Options

The iebus protocol decoder handles decoding of the IEBus, a lower-level layer of the AVC-LAN protocol which is used in multimedia control applications in Toyota and other brand cars. It's connected with Python output to avclan which is a higher-level decoder handling the decoding of frame contents, identifying devices on the bus based on their addresses and functions and so on.

Hardware

The protocol capture can be performed with a comparator circuit connected to 4 resistors:

Iebus-sniffer.png

Photos:

None

Protocol

The scope captures below show an IEBus operating in Mode 2 which means that the time for each bit is 39µs. The example scope trace below provides an overview of the voltages and timings that with which the bus operates:

Iebus-mode2-frame.png

Each frame begins with a start bit:

Iebus-mode2-startbit-annotated.png

which is followed by a number of data bits where each bit can be synchronized by a raising edge, a synchronization period and a data period. This is highlighed in the trace below:

Iebus-mode2-sync-annotated.png

In practice the decoder implementation waits for the sync period to expire and then samples the bus to probe which bit is being transmitted. An alternative approach can be also used where a decoder can measure the pulse length between the rising synchronization edge and the falling edge before the next bit is being transmitted. The below traces provide a comparison between what happens on the bus when 0 and 1 are being transmitted:

Iebus-mode2-bit0-annotated.png

Iebus-mode2-bit1-annotated.png

Resources

The protocol itself has been documented pretty extensively on Wikipedia as well as other more niche pages: