As I sit here waiting for a Proteus and BMW GDI box for testing I came to the realization that the engine I intend to test this on uses SENT protocol for the throttle body position. I haven't seen anything in any menu that I can remember about enabling this protocol for throttle position.
There is no plan so far. Is there a way for you to migrate to legacy ETB?
I see an expensive CAN to SENT adapter, do not see a cheap CAN to SEND adapter so far.
Should we do dedicated stm32f103 SENT to CAN adapter?
Re: SENT Protocol
Posted: Fri Apr 15, 2022 7:25 pm
by mtmotorsport
Legacy TB will bolt up directly, no issue there. I suppose I could make a short jumper harness from the throttle body to the ECU, bypassing the current harness.
SENT is normally handled in other ECUs by a fast analog input, or digital input. Some ECUs have dedicated SENT inputs. SENT to CAN could be an option if it is not possible to use the extra crank/cam inputs on Proteus
if it is not possible to use the extra crank/cam inputs on Proteus
It's not a hardware issue, it's a software issue. We have 2.5 software developers. I can only speak for myself and I know that I have a zero chance of working on code in the next three months.
Re: SENT Protocol
Posted: Fri Apr 15, 2022 8:05 pm
by mck1117
It's sort of a hardware issue too. SENT is a real pain in the butt to try and decode in software.
Legacy TB will bolt up directly, no issue there. I suppose I could make a short jumper harness from the throttle body to the ECU, bypassing the current harness.
Do this.
Re: SENT Protocol
Posted: Tue May 17, 2022 12:12 am
by AndreyB
Several new control modules on 2016 GM models use new sensor technology. The SAE J2716 SENT (Single Edge Nibble Transmission) protocol allows for high resolution data transmission from
a sensor to a control module, such as readings for temperature, pressure, throttle position and mass airflow.
Beginning in 2016, fuel systems on some GM vehicles featured a digital S.E.N.T. (Single Edge Nibble Transmission) fuel rail pressure sensor and SENT technology has become more prevalent in GM models launched after 2016.
ATS (LGX, LF4), XTS (LF3), CTS
(LF3, LGX), Encore (LE2), Camaro (LGX), Malibu (LFV), CT6
(LGX, LGW) and Cruze (LE2,
LFV)
This purpose of this bulletin is to introduce the completely new 2020 Chevrolet Silverado and GMC
Sierra 2500HD-3500HD pickup trucks. This bulletin will help the Service Department Personnel become
familiar with the all-new 6.6L V8 — RPO L8T gasoline engine.
The fuel rail assembly attaches to each cylinder head. The fuel rail distributes high pressure fuel to the fuel
injectors. The fuel rail assembly consists of the direct fuel injectors and the fuel rail pressure sensor. The fuel
rail pressure sensor transmits fuel pressure and temperature information by serial data using the
Society of Automotive Engineers (SAE) J2716 Single Edge Nibble Transmission (SENT) protocol.
I pulled one apart to try and determine the pinout. There was a 16pin surface mount chip
image.png (80.62 KiB) Viewed 33903 times
Also ETB 12678223
Re: SENT Protocol
Posted: Tue May 17, 2022 12:19 am
by AndreyB
The Variable Geometry Turbine (VGT) body assembly contains a contact-less inductive VGT position sensing element that is managed by a
customized integrated circuit. The customized integrated circuit translates the voltage based position information into serial data using Single
Edge Nibble Transmission (SENT) protocol. The VGT position sensor information is transmitted between the VGT body and the ECM on the signal/serial data circuit.
image.png (158.41 KiB) Viewed 33902 times
Re: SENT Protocol
Posted: Tue May 17, 2022 1:48 am
by AndreyB
Porsche Panamera S looks like they have used SENT before GM?
0261232003?
0261232002 0261232011 0261232012 0261232022 0261232023
06E906051AA 06E906051AB 06E906051L 06E906051N 06E906051Q
image.png (677.18 KiB) Viewed 33898 times
Re: SENT J2716 Protocol
Posted: Tue May 17, 2022 7:58 pm
by AndreyB
Fun fact: all this reminds Toyota BEAN from back 1990is!
BEAN is based on a protocol developed in 1992 (SAE920231)
Re: SENT J2716 Protocol
Posted: Sat Jun 04, 2022 2:17 am
by AndreyB
12617792
2014-2019 Chevrolet Silverado 1500 Throttle Body
Just to add to this a bit, seems some other more mainstream manufacturers are now using sent for the throttle body, I can only assume it is Bosch driving this as that seems to be the common denominator.
Re: SENT J2716 Protocol
Posted: Sun Aug 07, 2022 3:06 am
by AndreyB
I've commissioned a blue pill SENT decoder and it works at least somewhat - in ICU mode it claims 83% of damaged packets on my desk but at least there is 17% of successful CRC validation and position value follows throttle movement.
Fun thing - it's _very_ not linear: linear interpolation between force-open and force-closed position puts typical idle gap at 27%?!
first three nibbles, second three nibbles, linear interpolation of first first three nibble from 435 to 3665
(also looks like 12705503 / 12672582 is NOT SENT - that one is used on other modern GM DI vehicles)
Re: SENT J2716 Protocol
Posted: Wed Aug 10, 2022 5:36 pm
by nmstec
That is noisy as fuck. There 100% must be some filtering/pull on the circuit to make this work properly.
Re: SENT J2716 Protocol
Posted: Sun Aug 14, 2022 10:42 pm
by Dron_Gus
12684286 Setup
20220815_011334.jpg (1.67 MiB) Viewed 32247 times
Blue Pill with original STM32F103.
Powered from micro USB.
Connected to JTAG adapter with 4 wires.
Connected to USB-uart with one pin (PA9) - Rx to PC.
GM fuel pressure/temperature sensor from junkyard.
Powered from lab power supply (as per Andrey request). Powering from separate power supply increases error rate to +1 Short Pulse error per 2..3 sec (sometimes, WTF?!).
SENT signal connected to STM32's PA7 through recommended RC filter: 51R + 1nF:
Screenshot from 2022-08-15 01-24-06.png (26.67 KiB) Viewed 32247 times
No pull-down transistor, as we do not need to speak on SEND bus from STM32 side.
Pull-up: both configuration were tested. With and without 2.2K pull-up to Blue Pull's +5V.
with pull-up
20220815_011615.jpg (870.68 KiB) Viewed 32247 times
with NO pull-up
20220815_011807.jpg (920.74 KiB) Viewed 32247 times
With pull-up you can see that sensor is able to pull low only to 1V. Without pull-up it reaches 0.3V.
"+1 Short Pulse error per 2..3 seconds" I mentioned before is observed only with pull-up enabled.
Some test results:
1. When sensor supply voltage is lowered to about 3.5 it starts sending 0xF in main SENT frames, but still sends correct (?) temperature in slow channels:
to pressure
2. Temperature is converted with simple divide by 32. What about temperature below zero?
3. What is purpose of 4.7nF capacitor directly connected to bus? Looks like this is emulation of long bus "The overall resistance of all connectors is limited to 1 Ω, the bus wiring to 0.1nF/m capacitance and the maximum cable length is limited to 5 m." Should we add this cap for table tests?
Screenshot from 2022-08-15 01-24-06.png (26.67 KiB) Viewed 32243 times
function onCanRx(bus, id, dlc, data)
-- print('got CAN id=' ..id ..' dlc=' ..dlc)
if id == IDRIVE_BUTTONS then
-- print('got buttons @4=' ..data[4] ..' @6=' ..data[6])
if data[4] == 1 or data[4] == 2 then
print('got hold or release @4=' ..data[4] ..' @6=' ..data[6])
if data[6] == 2 and brighness > 0 then
brighness = brighness - 1
print('brighness ' ..brighness)
end
if data[6] == 4 and brighness < 15 then
brighness = brighness + 1
print('brighness ' ..brighness)
end
end
end
if id == IDRIVE_ROTARY then
if data[5] == 0x80 then
clicks = data[4]
print('rotary turned right ' ..data[4] ..' clicks')
end
if data[5] == 0x7f then
print('rotary turned left ' ..255 - data[4] ..' clicks')
end
end
end
function onTick()
-- wake up, need to send once every 1.5 second but we can send more often because why not
txCan(1, IDRIVE_HEARBEAT, 0, { 3 })
txCan(1, IDRIVE_BRIGHTNESS, 0, { brighness * 16 + 0xd })
rpm = getSensor("RPM")
if i == 3 then
print('Postponed restart')
restartEtb()
-- i = 0
end
-- print('Period ' ..i)
i = i + 1
setTwoBytes(data, 2, rpm * 6.39)
txCan(1, R52_RPM, 0, data)
-- 1 ABS and warm-up light but no tach
-- 3 blinker and alive
-- 4 ABS and alive
--
status2 = 2
-- status3 = 0xC0
status3 = 0x0
status4 = 0x0
-- status4 = 0xC0
-- with ABS with blinker with warm-up light
-- status4 = 0xFF