tg44
New Member
Posts: 5
|
Post by tg44 on Aug 15, 2023 10:32:08 GMT
Looking at the schematic for the ChryslerCCDSCIScanner I see that SCI-BUS is connected through 74HC4066 chip which to my understanding is just an on/off switch. So would it be safe to just connect the TX/RX from Arduino to the OBD pins to communicate to PCM OBD7 > RXD2 OBD12 > TXD2
|
|
|
Post by admin on Aug 15, 2023 12:59:07 GMT
Yes, it's safe. Don't forget the 1k pullup resistor.
|
|
tg44
New Member
Posts: 5
|
Post by tg44 on Aug 16, 2023 12:00:03 GMT
Like this?
|
|
|
Post by admin on Aug 16, 2023 13:21:16 GMT
Yes, exactly.
|
|
tg44
New Member
Posts: 5
|
Post by tg44 on Sept 14, 2023 9:06:09 GMT
I made two of this circuit to try to spy on what my Autel scanner was doing. I did see what Autel was sending but got no response from my Dodge Caravan 2005, and the scanner did not have communications on sci-bus.
Any idea??
This is what Autel sent: autel: E0 autel: C1 autel: F8 autel: E0 autel: C2
---Arduino code--- int peek; void setup() { Serial.begin(115200); Serial1.begin(7812.5); //dodge Serial2.begin(7812.5); //autel }
void loop() { //dodge if (Serial1.available() > 0) { peek = Serial1.peek(); Serial.print("dodge: "); Serial.println(peek, HEX); Serial2.write(Serial1.read()); } //autel if (Serial2.available() > 0) { peek = Serial2.peek(); Serial.print("autel: "); Serial.println(peek, HEX); Serial1.write(Serial2.read()); } }
|
|
|
Post by admin on Sept 14, 2023 12:47:40 GMT
Did you insert the Arduino Mega between the PCM and the Autel tool? Your code resembles of an UART repeater. Serial.peek() does not remove data from buffer, so the loop keeps repeating something, which is not good. The received bytes look gibberish to me.
We tried to spy on SCI-bus traffic like this before but never succeeded.
It's better to use a logic analyzer for this purpose. I recommend Muse Lab's nanoDLA and the PulseView app.
Or, if you want to get on with it right now, I recommend connecting the Autel tool directly to the PCM, and use Arduino Mega's Serial1 RX pin and Serial2 RX pin to sniff on the RX/TX wires. Again, only the RX pins are used, since they are input pins and don't interfere with SCI-bus.
void setup() { Serial.begin(115200); Serial1.begin(7812); // rx Serial2.begin(7812); // tx }
void loop() { if (Serial1.available()) { uint8_t data = Serial1.read(); Serial.print("RX: "); Serial.println(data, HEX); }
if (Serial2.available()) { uint8_t data = Serial2.read(); Serial.print("TX: "); Serial.println(data, HEX); } }
|
|
tg44
New Member
Posts: 5
|
Post by tg44 on Sept 15, 2023 10:06:06 GMT
Thank you for that, a quick update. I did a quick test with this and I can see the messages from Autel on pin 12, had it on showing "AC HI-SIDE PRESSURE" RX: 22 RX: 3 RX: 29 RX: 4E < checksum This is correct according to DRB-DB-READER AC HI-SIDE PRESSURE: J2190?; xmit: 22-03-29; sc: Engine; 0x80005d32 But not seeing anything from the car on the TX on pin 7. Maybe I am looking at wrong pin, I will check this with a osciloscopio. Though according to diagram it should be 7.
|
|
tg44
New Member
Posts: 5
|
Post by tg44 on Sept 16, 2023 11:49:09 GMT
Admin I would like to thank you for your help, this is working now.
This is not in any way what I have read about the SCI-BUS that the pull-up should be on the receiving end. OBD-7 pin is 12V with nothing connected and signals to ground for messages.
I connected the Arduino RX pin with voltage divider. OBD-7 > 10kΩ ---- 6.2kΩ -- GND | | RX1
OBD-12 is 5v so I connected that straight to RX2 Let Autel show me AC HI-SIDE PRESSURE GOT--- TX: 22 TX: 3 TX: 29 TX: 4E RX: 62 RX: 27 <<<< RX: 0 RX: 0 RX: 0 RX: 89
Second bit changes with psi. It should be multiplied by 2 according to DRB DB Reader. AC HI-SIDE PRESSURE: J2190?; xmit: 22-03-29; sc: Engine; 0x80008646 UNIT (DFLT/MTRC): PSI/KPa SLOPE: 2 OFFSET: 0
27 hex-to-int = 39 39*2 = 78 psi << that matches Autel
I then disconnected autel and moved OBD-12 pin to TX1 and then I could send messages and listen to response.
byte message[] = {0x22, 0x03, 0x29, 0x4E}; Serial1.write(message, sizeof(message));
|
|
|
Post by admin on Sept 18, 2023 6:58:31 GMT
Great! NGC PCMs work more conveniently when it comes to SCI-bus: it's full duplex (no echoes and response, only responses). The 12V on pin 7 is for ISO 9141 protocol. PCM can switch between ISO and SCI. Looks like it defaults to ISO. In any case it should sense 5V pullup on this pin. Regardless, putting a voltage divider there is good practice. TCM RX is labeled as "Flash Program Enable" on pin 9. It looks like that's where NGC expects bootstrap/programming voltage. Good to know! Perhaps this paper is outdated for NGC.
|
|