Data formatThe protocol coming out of the rx: JRC GPS-Rx protocol Ver 3.0B
After getting some requests for the protocol of the JRC-GPS-Rx, I started to
type in the information I got in form of paper copies. If you find this
information useful, please give me a hint in my guestbook. Please concern that I
did not understand everything in this description, in this case I wrote it down
as printed, but in slanted letters. In other cases I changed something a
little bit to make it more clear.
The used JRC-format is Ver 3.0B, the type of the rx is CCA-191P used in car
navigation systems. Contents
- The I/O pin layout
- Interface at TX1 and RX1
- Data format
Output data format at TX1
no extend mode
extend mode
extend2 mode
Input data format at RX1
type = 0
type = 1 - my experiences
The I/O pin layout
Pins are numbered from 1 to 10, 1 is the pin nearer to the board edge.
Attention, there are different boxes around the PCB, with antenna connector on
different sides.
Pin |
Signal |
1 |
GND |
2 |
TX0 (data output from the unit) |
3 |
NC - should be left open on motherboard |
4 |
RX1 (for DGPS correction data) |
5 |
RX0 (for initial set to the unit) |
6 |
NC - should be left open on motherboard |
7 |
Vcc (main, +5V) |
8 |
NC - should be left open on motherboard |
9 |
Vbat (back up, +2.2 to 3.6V) |
10 |
GND |
Interface at TX1 and RX1
TTL-signal direct connection, 4800 Bd asynchronous, 1start bit, 8data bits,
2stop bits, no parity.
Output interval: 1s
Data format
Output data format at TX1
If a value is represented by more than one byte, most significant byte is the
first, LSB is last.
In case of no extend output (default, switched to extended by input data):
Byte
No. |
MSB LSB
76543210 |
Contents |
Example: |
Contents value |
data value
(hex) |
1 |
11000110 |
Header (ASCII 'F' + 80H) |
- |
C6 |
2
3
4
5 |
0XXXXXXX
0XXXXXXX
0XXXXXXX
0XXXXXXX |
measured latitude,
28 bit binary data,
resolution: 0.001 min,
South: 2's complement,
Datum depends on format set by input, default is WGS-84 |
N 35°41.286' |
01
02
58
66 |
6
7
8
9 |
0XXXXXXX
0XXXXXXX
0XXXXXXX
0XXXXXXX |
measured longitude,
28 bit binary data,
resolution: 0.001 min,
West: 2's complement,
Datum depends on format set by input, default is WGS-84 |
W139°34.286' |
7C
00
6F
72 |
10
11
12 |
0XXXXXXX
0XXXXXXX
0XXXXXXX |
measured sea level,
21 bit binary data,
resolution 1m,
neg. altitude:
2's complement |
1234m |
00
09
52 |
13
14 |
0XXXXXXX
0XXXXXXX |
measured speed,
14 bit binary data,
resolution: 0.1 m/s |
12.3 m/s |
00
7B |
15
16 |
0XXXXXXX
0XXXXXXX |
measured course,
14 bit binary data,
resolution: 0.1° (0..359.9°) |
123.4 |
09
52 |
17
18 |
0XXXXXXX
0XXXXXXX |
PDOP value,
14 bit binary data,
resolution: 0.1 |
12.3 |
00
7B |
19
20
21
22
23
24 |
0XXXXXXX
0000XXXX
000XXXXX
000XXXXX
00XXXXXX
00XXXXXX |
Year
Month
Day
Time
Minutes
Second |
90
01
25
12
34
56 |
5A
01
19
0C
22
38 |
25 |
00XXXXXX |
Number of healthy sats |
15 |
0F |
26 |
00XXXXXX |
Number of visible sats |
8 |
08 |
27
28
29
30 |
00XXXXXX
00XXXXXX
00XXXXXX
00XXXXXX |
Satellites name (PRN) in use
for fix (1..4), valid 0..32, 0:invalid sat PRN.
Used fix satellites exists except these 4
sats. note 4
Invalid satellite is not filled from
satellite name 4. |
14
0
23
20 |
0E
00
17
14 |
Next 6 bytes 31-36
are values for selected satellite 1 |
31 |
00XXXXXX |
PRN of selected sat
valid 0..32, 0:not sel. |
14 |
0E |
32
33 |
0XXXXXXX
0XXXXXXX |
azimuth angle,
14 bits binary data,
resolution: 1° |
123° |
00
7B |
34 |
0XXXXXXX |
elevation angle,
resolution: 1°,
valid 0..90° |
23° |
17 |
35 |
0FAAAASS |
Status satellite SS:
00: search,
01: tracking,
10: tracking & collection
Used for fix F:
0: not used
1: used
SV acuracy AAAA: see note 2 |
2 |
02 |
36 |
0XXXXXXX |
Signal level,
resolution: 1, valid 1..127 |
65 |
41 |
Bytes 37-42 are
values for selected satellite 2, format as 31-36 |
Bytes 43-48 are
values for selected satellite 3, format as 31-36 |
Bytes 49-54 are
values for selected satellite 4, format as 31-36 |
Bytes 55-60 are
values for selected satellite 5, format as 31-36 |
Bytes 61-66 are
values for selected satellite 6, format as 31-36 |
Bytes 67-72 are
values for selected satellite 7, format as 31-36 |
Bytes 73-78 are
values for selected satellite 8, format as 31-36 |
79 |
0XXX1XXX |
Bit 0: fixing flag,
0: fixing, 1: non fixing
Bit 1: 2D fixing flag,
0: not 2D fixing,
1: 2D fixing
Bit 2: 3D fixing flag,
0: not 3D fixing,
1: 3D fixing
Bit 3: All in view fix flag
(always 1: all in view fix)
Bit 4: 2 Sats fixing flag,
0: not fixing, 1: fixing
Bit 6: Cold start fix flag,
0: not cold start fix,
1: cold start fix |
|
06 |
80 |
000000PP |
Preamp Check PP:
00: normal
01: open
10: short
Receiver without preamp check function output always 00 |
0 |
00 |
81 |
11000110 |
Terminator (ASCII 'Z' + 80H) |
- |
DA |
In case of extend mode, byte 1..80 are the same (see note 2 for an
exception), bytes 81 to 119 are as follows:
Byte
No. |
MSB LSB
76543210 |
Contents |
Example: |
Contents value |
data value
(hex) |
81 |
0XXXXXXX |
satellite health information for
PRN 1 to PRN 7,
Bit 0: PRN 1 .. Bit 6: PRN 7
0: unhealth,
1: health |
|
01 |
82 |
0XXXXXXX |
satellite health information for
PRN 8 to PRN 14,
Bit 0: PRN 8 .. Bit 6: PRN 14
0: unhealth,
1: health |
|
01 |
83 |
0XXXXXXX |
satellite health information for
PRN 15 to PRN 21,
Bit 0: PRN 15..Bit 6: PRN 21
0: unhealth,
1: health |
|
01 |
84 |
0XXXXXXX |
satellite health information for
PRN 22 to PRN 28,
Bit 0: PRN 22..Bit 6: PRN 28
0: unhealth,
1: health |
|
01 |
85 |
0000XXXX |
satellite health information for
PRN 29 to PRN 32,
Bit 0: PRN 29..Bit 3: PRN 32
0: unhealth,
1: health |
|
01 |
86
87
88
89
90 |
0XXXXXXX
0XXXXXXX
0XXXXXXX
0XXXXXXX
0XXXXXXX |
Version no. (ASCII) |
1
.
0
0
A |
31
2E
30
30
41 |
91 |
0XXXXXXX |
measured speed extended data,
resolution: 0.1/128 m/s |
0.046 m/s |
3B |
92 |
0XXXXXXX |
measured delay time,
resolution 0.1s |
1.5s |
0F |
93
94 |
0XXXXXXX
0XXXXXXX |
long axis error,
14 bit binary data,
resolution: 2m (0..510m) |
100m |
00
32 |
95
96 |
0XXXXXXX
0XXXXXXX |
short axis error,
14 bit binary data,
resolution: 2m (0..510m) |
100m |
00
32 |
97
98 |
0XXXXXXX
0XXXXXXX |
slope of long axis error,
14 bit binary data,
resolution: 1° (0°..179°) |
90° |
00
5A |
99
100 |
0XXXXXXX
0XXXXXXX |
VDOP value,
14 bit binary data,
resolution: 0.1 (resolution of calculation is 0.2) |
12.3 |
00
7B |
101 |
0000000D |
DGPS fix status D:
0: non DGPS fix,
1: DGPS fix |
1 |
01 |
102
103 |
00000XXX
0XXXXXXX |
Differential reference station
ID, 10 bit binary data |
1023 |
03
7F |
104 |
0XXXXXXX |
Age of differential GPS data, in
seconds since last sentense of SC104 type 1, valid 0..30°. see note 1 |
15 |
0F |
26 |
00XXXXXX |
Number of visible sats |
8 |
08 |
105
-
118 |
|
spare |
|
|
119 |
11000110 |
Terminator (ASCII 'Z' + 80H) |
- |
DA |
note 1: if corrections cease to be received, the value in use will continue
to be treated as valid for a further 30 seconds. Age of differential data is
used the maximum value from among fixed satellites.
note 2: in byte 35 (and in the other 7 bytes 41, 47,... for satellites 2..8)
is an additional information in extend mode: Bits 5..2 containing the SV
acuracy.
note 4: perhaps it means: satellites used for fix exist except these for 4
sats
In case of extend2 mode, bytes 105..122 carry additional information:
Byte
No. |
MSB LSB
76543210 |
Contents |
Example: |
Contents value |
data value
(hex) |
Next 4 bytes 105-108
are values for visible satellite 1 |
105 |
00XXXXXX |
PRN of visible sat
valid 0..32, 0: not sel. |
14 |
0E |
106
107 |
0XXXXXXX
0XXXXXXX |
azimuth angle,
14 bits binary data,
resolution: 1° (0..359°) |
123° |
00
7B |
108 |
0XXXXXXX |
elevation angle,
resolution: 1° (0..90°) |
23° |
17 |
Bytes 109-112 are
values for visible satellite 2, format see 105-108 |
Bytes 113-116 are
values for visible satellite 3, format see 105-108 |
Bytes 117-120 are
values for visible satellite 4, format see 105-108 |
121 |
0XXXXXXX |
spare |
|
|
122 |
11000110 |
Terminator (ASCII 'Z' + 80H) |
- |
DA |
Input data format at RX1
If a value is represented by more than one byte, most significant byte is the
first, LSB is last. After Cold start fix is done, all setting values will be
set default value and data output format is set to no extend mode.
There are two different input data formats, the type flag (bit 6 in byte 20)
controls which of them is used.
In case of type flag = 0:
Byte
No. |
MSB LSB
76543210 |
Contents |
Example: |
Contents value |
data value
(hex) |
1 |
11000110 |
Header (ASCII 'F' + 80H) |
- |
C6 |
2
3
4
5 |
0XXXXXXX
0XXXXXXX
0XXXXXXX
0XXXXXXX |
estimated latitude,
28 bit binary data,
resolution: 0.001 min,
South: 2's complement,
Datum depends on format set by input |
N 35°41.286' |
01
02
58
66 |
6
7
8
9 |
0XXXXXXX
0XXXXXXX
0XXXXXXX
0XXXXXXX |
estimated longitude,
28 bit binary data,
resolution: 0.001 min,
West: 2's complement,
Datum depends on format set by input |
W139°34.286' |
7C
00
6F
72 |
10
11
12
13
14
15 |
0XXXXXXX
0000XXXX
000XXXXX
000XXXXX
00XXXXXX
00XXXXXX |
Year
Month
Day
Time
Minutes
Second |
90
01
25
12
34
56 |
5A
01
19
0C
22
38 |
16
17 |
0XXXXXXX
0XXXXXXX |
estimated sea level,
14 bit binary data,
resolution; 1m,
neg. altitude:
2's complement |
1234m |
09
52 |
18
19 |
0XXXXXXX
0XXXXXXX |
spare |
|
|
20 |
00XXXXXX |
Bit 0: Cold start fix
0: no, 1: start
Bit 1: Initialized flag
0: no, 1: initialize
Bit 2: Input-of-Lat/Lon flag
0: no, 1: use
Bit 3: Input-of-Time flag
0: no, 1: use
Bit 4: Input-of-Latitude flag
0: no, 1: use (see note 3)
Bit 5: Master reset flag
0: no, 1: master reset
Bit 6: Type flag
0 |
|
|
21 |
11000110 |
Terminator (ASCII 'Z' + 80H) |
- |
DA |
note 3: Input-of-altitude flag? Makes more sense...
in case of type flag = 1:
Byte
No. |
MSB LSB
76543210 |
Contents |
Example: |
Contents value |
data value
(hex) |
1 |
11000110 |
Header (ASCII 'F' + 80H) |
- |
C6 |
2 |
000000RR |
receiving mode RR:
00: 2D
01: 3D
10: Auto (default) |
0 |
00 |
3 |
0XXXXXXX |
masked angle of elevation,
7 bit binary data,
resolution: 1° (1..89°),
default: 5° |
5 |
05 |
4 |
0XXXXXXX |
spare |
|
|
5 |
000000PP |
PDOP switch 2D/3D PP:
00: <5 / <=3
01: <10 / <=5 (default)
10: <20 / <=10 |
1 |
01 |
6 |
000000SS |
smoothing level SS:
00: high
01: medium (default)
10: low |
1 |
01 |
7 |
00XXXXXX |
datum (binary
data):
0: WGS-84 (default)
1: WGS-72
2: Japan (Tokyo Bessel)
3: America (NAD-27)
4: Canada, Alaska (NAD-27)
5: Europe (European 1950)
6: Australia (Australian Geodetic
1966)
7: England (Ordance Survey of Great 1966)
8: America (NAD-83)
9, 10: spare
11: Ethopia and Sudan
12: Botswana (Arc 1950)
13: Australia (A. Geodetic 1984)
14: Bermuda Islands (Bermuda 1957)
15: Colombia (Bagoda Obs.)
16: Argentina (campo Inchauspe)
17: Chatham Island (Chatham 1971)
18: Paraguay (Chua Astro)
19: Brasil (Corrego Alegre)
20: Sumatra (Djakarta: Vatavia)
21: Europe (European 1979)
22: New Zealand (1949)
23: Guam (Guam 1963)
24: Finland (Hayford 1910)
25: Iceland (Hjorsey 1955)
26: India and Nepal (Indian)
27: Ireland (Ireland 1965)
28: West Malaysia, Singapore (1948)
29: Cayman Brac Island (L.C.5 Astro)
30: Liberia (Liberia 1964)
31: Phillipines (Luzon)
32: Morocco (Merchich)
33: Cameroon (Minna)
34: Oman (Nahrwan)
35: Trinidad, Tobago (Naparima, Bwi)
36: Egypt (Old Egyptian)
37: Hawaiian Islands (Old Hawaiian)
38: Canary Islands (Pico d L Nieves)
39: South American (1956)
40: Southern Chile (1963)
41: Puerto Rico and Virgin Islands
42: South Greenland (Qornoq)
43: Sweden (RT90)
44: Sao Maguel, Santa Maria Islands
45: South American (1969)
46: Faial, Graciosa, Pico, Sao Jorge, Terceira Island (Southwest base)
47: Bronei and East Malaysia (1948) |
|
|
8
9
10
11
12
13
|
00XXXXXX
00XXXXXX
00XXXXXX
00XXXXXX
00XXXXXX
00XXXXXX
|
Inhibit Sat No. (PRN) 1..6,
0: no meaning, 1..32 PRN,
if the number of inhibited sats is <6, fill lower bytes first.
default: all 0 |
6
9
0
0
0
0
|
06
09
00
00
00
00 |
14 |
000000DD |
Set output data format DD:
00: no expand mode (81 bytes)
01: expand mode (119 bytes)
02: expand2 mode (122 bytes) |
1 |
01 |
15 |
|
spare |
|
|
16 |
0000000C |
Cold start fix
0: no
1: cold start fix |
1 |
01 |
17 |
0000000D |
DGPS mode flag
0: disable (default)
1: enable |
0 |
00 |
18
19
|
|
spare |
|
|
20 |
01000000 |
type flag bit 6 = 1 |
- |
40 |
21 |
11000110 |
Terminator (ASCII 'Z' + 80H) |
- |
DA |
my experiences
It was not a big deal to start with this rx. After connecting antenna and
power (backup is required!) the RX1 pin shows the no extend format with 81
bytes. And some minutes later, the output changes, sat by sat is found and
tracked. The information contained in the no extended data only is enough to
convert it to the NMEA-formats for position ($GPGGA) and speed/course ($GPVTG)
looking like this:
$GPGGA,190655.00,4929.410,N,00949.221,E,1,05,3.60,224,M,46,M,,*52
$GPVTG,345.0,T,345.0,M,0.0,N,0.0,K*4E
Only the last distance (46m) is faked, I can't remember it's meaning, but it
wasn't important. The satellite data in this data format is interesting too -
and it can be displayed in a text display:
picture...
But I also tried to switch to the extended formats. I worked, but I never
wrote a program to interpret the contents of the additional bytes.
|