docs: update Secondary_Serial_IO_interface

This commit is contained in:
dazq 2021-07-09 12:40:02 +00:00 committed by Josh Stewart
parent 499571f17f
commit 816eb8cbb8
1 changed files with 127 additions and 11 deletions

View File

@ -2,7 +2,7 @@
title: Secondary_Serial_IO_interface title: Secondary_Serial_IO_interface
description: description:
published: true published: true
date: 2020-12-16T23:49:26.641Z date: 2021-07-09T12:39:49.314Z
tags: tags:
editor: markdown editor: markdown
dateCreated: 2020-01-06T01:37:19.933Z dateCreated: 2020-01-06T01:37:19.933Z
@ -49,17 +49,17 @@ Depending on if the secondary port is a simple serial port or is a canbus port t
##### A Simple Serial Port ##### A Simple Serial Port
A Serial port offers , A Serial port offers ,
1. Retrieve the current realtime data in full from Speeduino . This is the same data as sent to TunerStudio. 1. Retrieve the current realtime data from Speeduino . This can be a simple or full(enhanced) data set. This is the same realtime data as sent to TunerStudio.
2. Retrieve specific current realtime data from Speeduino. 2. Retrieve specific current realtime data from Speeduino.
3. Read in the Analog data values from 16 remote sensors as requested by Speeduino. 3. Read in the Analog data values from 16 remote sensors as requested by Speeduino.
4. Activate External Outputs(coming soon!) 4. Activate External Outputs(coming soon!)
##### A Canbus Port (COMING SOON!) ##### A Canbus Port
A Canbus port offers , A Canbus port offers ,
1. OBD2 formatted data of current realtime data . 1. OBD2 formatted data of current realtime data .
2. Broadcast selected current realtime data and function status . 2. Broadcast selected current realtime data and function status .(COMING SOON!)
3. Read in Analog and Digital data values from other devices on the BUS including those from OEM devices/ECU. 3. Read in Analog and Digital data values from other devices on the BUS including those from OEM devices/ECU.(COMING SOON!)
Serial Port Functions Serial Port Functions
--------------------- ---------------------
@ -67,23 +67,25 @@ Serial Port Functions
### Retrieve realtime data ### Retrieve realtime data
To get Speeduino to send out the realtime data to your device connected on a Secondary Serial IO port you must send either an "A", an "n" or an "r" to it. To get Speeduino to send out the realtime data to your device connected on a Secondary Serial IO port you must send either an "A", an "n" or an "r" to it.
An 'A' will retreive a simple set of data whereas an 'n' will retreive an enhanced set of realtime data.
An 'r' will retrieve specific data starting at a selected position in the list for x number of bytes.
- **Send an "A"** - **Send an "A"**
If you send an "A" to the port it will reply with , If you send an "A" to the port it will reply with ,
1. A "A" confirming the received instruction (sent as 0x41 in hex), 1. A "A" confirming the received instruction (sent as 0x41 in hex),
2. The port will then transmit the first 75 realtime data values from the list below. 2. The port will then transmit the first 75 realtime data values from the list below(simple data set).
The "A" command data set will not be changed or expanded upon and is maintained for legacy devices. The "A" command data set will not be changed or expanded upon and is maintained for legacy devices.
Designers of new devices are recommended to use the newer "n" command to enable use of any additonal realtime data available beyond the orignal 75 This command supports. Designers of new devices are recommended to use the newer "n" command to enable use of any additonal enhanced realtime data available beyond the orignal 75 This command supports.
- **Send an "n"** - **Send an "n"**
If you send an "n" to the Serial port it will reply with, If you send an "n" to the Serial port it will reply with,
1. A "n" confirming the received instruction (sent as 0x6E in hex (110 in DEC) ). 1. A "n" confirming the received instruction (sent as 0x6E in hex (110 in DEC) ).
2. A single hex byte ,this value is the type of "n" command about to be sent. In this case the value is 0x32 in Hex. 2. A single hex byte ,this value is the type of "n" command about to be sent. In this case the value is 0x32 in Hex.
3. A single hex byte , this value is the number of data bytes the port will be transmitting next as part ofthe command. At the time of writing (23/02/2020) this is 0x4B (75 dec) 3. A single hex byte , this value is the number of data bytes the port will be transmitting next as part ofthe command. At the time of writing (09/07/2021) this is 0x77 (119 dec)
4. The port will now transmit the realtime data. 4. The port will now transmit the realtime data.
- **Send an "r"** - **Send an "r"**
@ -107,13 +109,15 @@ BIT 0 - currentStatus.secl
`     secl is simply a counter that increments each second` `     secl is simply a counter that increments each second`
1 - currentStatus.squirt 1 - currentStatus.status1
`     Squirt Bitfield` `     Status1 Bitfield(was squirt)`
` inj1Status(0), inj2Status(1),inj3Status(2), inj4Status(3), DFCOOn(4), boostCutFuel(5), toothLog1Ready(6), toothLog2Ready(7)`
2 - currentStatus.engine 2 - currentStatus.engine
`     Engine Status Bitfield` `     Engine Status Bitfield`
` running(0), crank(1), ase(2), warmup(3), tpsacden(5), mapaccden(7)`
3 - (byte)(divu100(currentStatus.dwell)) 3 - (byte)(divu100(currentStatus.dwell))
@ -226,6 +230,7 @@ BIT 0 - currentStatus.secl
31 - currentStatus.spark 31 - currentStatus.spark
`     Spark related bitfield` `     Spark related bitfield`
` launchHard(0), launchSoft(1), hardLimitOn(2), softLimitOn(3), boostCutSpark(4), error(5), idleControlOn(6), sync(7) `
32 - lowByte(currentStatus.rpmDOT) 32 - lowByte(currentStatus.rpmDOT)
@ -254,6 +259,7 @@ BIT 0 - currentStatus.secl
38 - currentStatus.testOutputs 38 - currentStatus.testOutputs
`     testoutputs bitfield` `     testoutputs bitfield`
` testEnabled(0), testActive(1)`
39 - currentStatus.O2_2 39 - currentStatus.O2_2
@ -325,7 +331,7 @@ BIT 0 - currentStatus.secl
71 - lowByte(currentStatus.canin\[15\]); 71 - lowByte(currentStatus.canin\[15\]);
72 - highByte(currentStatus.canin\[15\]); 72 - highByte(currentStatus.canin\[15\])
73 - currentStatus.tpsADC 73 - currentStatus.tpsADC
@ -334,6 +340,116 @@ BIT 0 - currentStatus.secl
74 - getNextError() 74 - getNextError()
`     Error codes` `     Error codes`
` errorNum(0:1), currentError(2:7)`
75 - currentStatus.launchCorrection
76 - lowByte(currentStatus.PW2)
` Pulsewidth 2 multiplied by 10 in ms. Have to convert from uS to mS.`
77 - highByte(currentStatus.PW2)
` Pulsewidth 2 multiplied by 10 in ms. Have to convert from uS to mS.`
78 - lowByte(currentStatus.PW3)
` Pulsewidth 3 multiplied by 10 in ms. Have to convert from uS to mS.`
79 - highByte(currentStatus.PW3)
` Pulsewidth 3 multiplied by 10 in ms. Have to convert from uS to mS.`
80 - lowByte(currentStatus.PW4)
` Pulsewidth 4 multiplied by 10 in ms. Have to convert from uS to mS.`
81 - highByte(currentStatus.PW4)
` Pulsewidth 4 multiplied by 10 in ms. Have to convert from uS to mS.`
82 - currentStatus.status3
` resentLockOn(0), nitrousOn(1), fuel2Active(2), vssRefresh(3), halfSync(4), nSquirts(6:7)`
83 - currentStatus.engineProtectStatus
` RPM(0), MAP(1), OIL(2), AFR(3), Unused(4:7)`
84 - lowByte(currentStatus.fuelLoad)
85 - highByte(currentStatus.fuelLoad)
86 - lowByte(currentStatus.ignLoad)
87 - highByte(currentStatus.ignLoad)
88 - lowByte(currentStatus.injAngle)
89 - highByte(currentStatus.injAngle)
90 - currentStatus.idleDuty
91 - currentStatus.CLIdleTarget
` closed loop idle target`
92 - currentStatus.mapDOT
`rate of change of the map`
93 - (int8_t)currentStatus.vvt1Angle
94 - currentStatus.vvt1TargetAngle
95 - currentStatus.vvt1Duty
96 - lowByte(currentStatus.flexBoostCorrection)
97 - highByte(currentStatus.flexBoostCorrection)
98 - currentStatus.baroCorrection
99 - currentStatus.ASEValue
`Current ASE (%)`
100 - lowByte(currentStatus.vss)
` lowByte of speed reading from the speed sensor`
101 - highByte(currentStatus.vss)
` highByte of speed reading from the speed sensor`
102 - currentStatus.gear
103 - currentStatus.fuelPressure
104 - currentStatus.oilPressure
105 - currentStatus.wmiPW
106 - currentStatus.status4
` wmiEmptyBit(0), vvt1Error(1), vvt2Error(2), UnusedBits(3:7)`
107 - (int8_t)currentStatus.vvt2Angle
108 - currentStatus.vvt2TargetAngle
109 - currentStatus.vvt2Duty
110 - currentStatus.outputsStatus
111 - (byte)(currentStatus.fuelTemp + CALIBRATION_TEMPERATURE_OFFSET)
` Fuel temperature from flex sensor`
112 - currentStatus.fuelTempCorrection
` Fuel temperature Correction (%)`
113 - currentStatus.VE1
` VE 1 (%)`
114 - currentStatus.VE2
` VE 2 (%)`
115 - currentStatus.advance1
` advance 1`
116 - currentStatus.advance2
` advance 2`
117 - currentStatus.nitrous_status
118 - currentStatus.TS_SD_Status
` SD card status`
### Read external analog data from a remote device ### Read external analog data from a remote device