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.
Last Update: 2002-09-04: Contents, missing bytes in input data, experiences
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 |
TTL-signal direct connection, 4800 Bd asynchronous, 1start bit, 8data bits, 2stop bits, no parity.
Output interval: 1s
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: 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, Bit 1: 2D fixing flag, Bit 2: 3D fixing flag, Bit 3: All in view fix flag Bit 4: 2 Sats fixing flag, Bit 6: Cold start fix flag, |
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 |
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 Bit 2: Input-of-Lat/Lon flag Bit 3: Input-of-Time flag Bit 4: Input-of-Latitude flag Bit 5: Master reset flag Bit 6: Type flag |
||
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 |
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.