A framing error is declared if an NSP message is incorrectly encapsulated on the communications link. For ASYNC and RS485 links, this would be any time a FESC character is seen that is not immediately followed by TFESC or TFEND. CAN framing errors are TBD.
Runt Packet Count
A runt packet is a NSP message that is less than 5 bytes long. Such a fragment cannot be a properly formed NSP message since it cannot contain a source and destination address, control field, and CRC.
Runts are counted only if the first byte is equal to the star tracker’s address, which would normally indicate that the packet is addressed to this unit. A zero-length NSP message is not considered a runt. For example, on an ASYNC or RS485 link two FEND characters back-to-back is a valid bus condition and not a runt.
Oversize Packet Count
An oversize packet is one that has too many bytes in the data field. Packets that are too long cannot fit into the allocated message buffers and so they must be rejected. See section 5.2 for the length constraints.
Bad CRC Count
This count is incremented every time a properly formatted (in length and framing) NSP message is received where the CRC field does not match with the computed CRC, and where the first byte is equal to the NSP address of the star tracker.
FIFO Overflow Count
The bootloader does not use FIFO buffers, and will never increment this counter.
The application program uses a mix of hardware and software FIFO buffers on its serial inputs. If a FIFO overflows and loses data then this counter will increment. Due to the constraints of the hardware it is not guaranteed that all overflow events will be noticed.
EDAC Memory
The supervisor processor supports 512 bytes of EDAC protected memory. These are implemented using software-based triple-redundant storage into conventional SRAM cells. EDAC memory can be read with READ EDAC and READ FILE commands, and written with WRITE EDAC and WRITE FILE commands. The STORE command will save EDAC memory into non-volatile flash memory.
Sequence of 8-bit characters. May be human-readable.
0x98 – 0x1FB
0x26-0x7E
Control structure
0x1FC - 1FF
0x7F
Realtime clock
32-bit unsigned integer
Asynchronous telemetry is continually recorded using the ADC in the supervisor processor. Synchronous telemetry is recorded in a single snapshot at a time after the functional processor startup as defined by the Sample point value.
The result structure and the control structure lengths are maintained in EDAC memory. If the GO command so-specifies, the control structure will be loaded into the functional processor. The functional processor may return a result structure, and the length of that structure will be recorded. The return of the result structure is not atomic, so the result structure length field will slowly grow as individual result packets are received by the supervisor processor.
The timeout period determines how long the functional processor should be allowed to run before it is turned off. This is ignored if the GO command stated that the functional processor should be allowed to run indefinitely.
The sample point determines when the synchronous telemetry snapshot should be taken. It is measured in seconds after the moment that the /Reset signal on the functional processor is de-asserted. Note that if the sample point value is too long (i.e. longer than the timeout period) the synchronous telemetry may not be sampled.
The sequence state shows the power state of the functional processor.
Table 34: Sequence States
Sequence State
Meaning
0x00
The main power switch has been turned ON
0x01
The DC/DC converter running the 1.8 V I/O rail has been started
0x02
The LDO running the 2.8 V detector power supply has been started
0x03
The DC/DC converter running the core Vdd rail has been started
0x04
The DC/DC converter running the MPU Vdd rail has been started
0x05
The functional processor’s /Reset line has been released
0x06
The functional processor’s ASIC ID message is being received
0x07
The supervisor is commanding the functional processor’s boot mode
0x08
The supervisor is loading the functional processor with a program from its flash memory
0x09
The functional processor is booting
0x0A
The functional processor has sent a message indicating that its software is running
0x0B
The functional processor has been turned off by GO command. This is also the default state upon starting the supervisor processor.
0x0C
The functional processor has been turned off after it has reported successful completion.
0x0D
The functional processor has been turned off following a timeout waiting for the ASIC ID message.
0x0E
The functional processor has been turned off following a timeout while commanding the boot mode.
0x0F
The functional processor has been turned off following a timeout while sending the program.
0x10
The functional processor has been turned off following a timeout while waiting for it to indicate that its software is running.
0x11
The functional processor has been turned off following a timeout while running normally.
0x12
The functional processor has been turned off because the input voltage to the star tracker exceeded the safe limit (Rev 4).
OR
The functional processor has been turned off because the supervisor failed in an attempt to write on the SMBus (Rev 5).
0x13
The functional processor has been turned off because it emitted an emergency terminate message.
0x14
The supervisor processor Vdd regulator has entered low-voltage dropout (at about 2.3 V). The sequencer has been reset so that excessive currents are not drawn at low supply voltages.
0x15
The supervisor processor has detected a parity error in the boot message received from the functional processor. The functional processor has been turned off.
0x16
The supervisor processor UART which connects to the functional processor has experienced a FIFO overflow during the boot process. The functional processor has been turned off.
Note that overflows subsequent to the boot process are handled by the diagnostic counters instead.
0x17
The supervisor processor has detected serial data from the functional processor when it was not expected in the boot process. The functional processor has been turned off.
0x18
The supervisor processor has detected a serial transmit interrupt when it did not think it was trying to transmit. The functional processor has been turned off in the ensuing confusion.
The functional processor can send notification messages to be stored in the EDAC memory. Only one message can be stored at a time, and a newer message replaces an older one. The length of the currently stored message is stored in EDAC, followed by the message itself.
Upon bootup the functional processor will send its ASIC ID sequence, which is a 58 byte structure identifying the chip. At certain points in its program it may send debugging notifications. These are human-readable ASCII strings. They are not NULL terminated, since the message length is stored separately. If the functional processor encounters a serious error it will send an emergency terminate message. This message will be stored in EDAC, and receipt of it will also cause the supervisor to immediately power down the functional processor. Emergency terminate messages are human-readable ASCII.
The upper bits of the realtime clock are stored in the EDAC memory. While they are accessible through this route, the dedicated TIME command is recommended instead. Inconsistent data may be obtained if an attempt is made to read the time via the EDAC functions at the same moment as the clock ticks.
The STORE command will save a copy of the EDAC memory to non-volatile flash memory, or erase the flash memory page. Upon entry to idle mode (by INIT command) the application program will check the CRC of the flash memory page. If it is correct then it will load the page into EDAC memory. The EDAC Load Source parameter will be set to 1 to indicate this. The first two bytes of EDAC memory will contain the CRC read from flash.
If the CRC validation fails it will load default values. The EDAC Load Source parameter will be cleared to 0 to indicate this. The first two bytes of EDAC memory will also be cleared. Erasing the flash page will force the CRC check to fail, causing default values to be loaded.
Result Structure
Received result data from the functional processor is stored in the result structure. It can be read using the READ RESULT command. Before reading it is a good idea to read the result structure length from EDAC memory. READ RESULT will return NACK if an attempt is made to read beyond the valid areas of the result structure.
The format of the result depends on whether the star tracker is being used operationally, or in self-test. In both cases, the structure is made up of sub-structures
Angular velocity of sensor wrt ECI in sensor frame
0x0040
64-bit IEEE floating-point value
Epoch time
0x0048
Hardware Telemetry
0x0080
Statistics Telemetry
0x012C
Unsigned 32-bit integer
Reserved
0x0130
Array of 2 Image Telemetry structures
0x0440
ERS Telemetry
0x04A8
Array of 2 Centroid Telemetry structures
0x07E8
Array of 2 Matching Telemetry structures
0x0948
Reserved
The entire operational result structure is 0x0A38 bytes long.
Self-Test Result
Table 36: Self-Test Result Structure
Offset
Type
Notes
0x0000
Analog Frame
From step 1 in 6.2
0x0020
Analog Frame
From step 2 in 6.2
0x0040
Analog Frame
From step 3 in 6.2
0x0060
Analog Frame
From step 4 in 6.2
0x0080
Analog Frame
From step 5 in 6.2
0x00A0
Analog Frame
From step 6 in 6.2
0x00C0
Analog Frame
From step 7 in 6.2
0x00E0
Analog Frame
From step 8 in 6.2
0x0100
Analog Frame
From step 9 in 6.2
0x0120
Analog Frame
From step 10 in 6.2
0x0140
Analog Frame
From step 11 in 6.2
0x0160
Signed 32-bit int
0 if first test pattern image matches expected value, negative otherwise
0x0164
Signed 32-bit int
0 if second test pattern image matches first image, negative otherwise
0x0168
Analog Frame
From step 12 in 6.2
0x0188
Hardware Telemetry
0x01C0
Analog Frame
From step 13 in 6.2
0x01E0
Statistics Telemetry
0x028C
Analog Frame
From step 14 in 6.2
0x02AC
Analog Frame
From step 15 in 6.2
The complete self-test structure is 0x02CC bytes long. It is possible that the self-test will fail somewhere along the sequence. For example, if the detector is not working the sequence may stall waiting for an image. In this case the structure will be shorter, and the location of the stall may be determined by the missing data. The Combination command will not deal gracefully with a test failure.
Return Code
The return code is a bitfield that allows the success of the operation to be determined at a glance. New in this revision is a revised set of return codes that clarify interpretation of the sensor status for the end user. The original codes are still set, but are labeled ‘Legacy’ codes.
Table 37: Return Code
Bit
Meaning
Status
Bit 0
Image 1 output quality
Legacy
Bit 1
Image 2 output quality
Legacy
Bit 2
Image 1 processing success
Legacy
Bit 3
Image 2 processing success
Legacy
Bit 4
Full processing
Legacy
Bit 5
Detector image
Legacy
Bit 6
Consistent image solutions
Legacy
Bit 7
Reserved
Bit 8
Master Return
Master Return
Bits 9-10
Image 1 Status
Advanced
Bits 11-12
Image 2 Status
Advanced
Master Return
The Master Return bit is an overall indicator of the sensor’s confidence in its result. Generally, when this bit is set, the sensor is confident in its return. If this bit is not set, the quaternion and omega fields in the primary telemetry will be zeroed and should not be used.