Serial Interface Developers Guide for the ECS-320A Embeddable Camera Electronics System T T T (Document Number 700-00000040-R10) 10503 Timberwood Circle Suite 120 Louisville, KY 40223 (502) 423-7225
SERIAL INTERFACE DEVELOPERS GUIDE Serial Interface Developers Guide Document Number 700-00000040 April 2003 Copyright Lumitron 2003 All Rights Reserved. DISCLAIMER All copyrights in this manual, and the hardware and software described in it, are the exclusive property of Lumitron, Inc. and its licensors. Claim of copyright does not imply waiver of Lumitron’s or its licensor’s other rights in the work. See the following Notice of Proprietary Rights.
SERIAL INTERFACE DEVELOPERS GUIDE Table of Contents T T 1 INTRODUCTION ......................................................................................................... 1 TU UT 2 GENERAL REQUIREMENTS ..................................................................................... 1 TU UT 3 CAMERA BOOT SEQUENCE .................................................................................... 1 TU UT 3.1 Communication Configuration .................................................
SERIAL INTERFACE DEVELOPERS GUIDE 5.3.16 CMD_NUC_FLASH_RAMP ........................................................................................................ 11 5.3.17 CMD_NUC_FLASH_MEMORY .................................................................................................. 11 5.3.18 CMD_NUC_FLASH_TEST_PATTERN ...................................................................................... 12 5.3.19 CMD_TEC_DRV_ENABLE ...............................................................
SERIAL INTERFACE DEVELOPERS GUIDE 6.2.13 CameraConfig.agcLowIntensity .................................................................................................. 23 6.2.14 CameraConfig.agcHighIntensity ................................................................................................. 23 6.2.15 CameraConfig.actOpName[4] .................................................................................................... 23 6.2.16 CameraConfig.actNucName[4] ..............................
SERIAL INTERFACE DEVELOPERS GUIDE 6.9.1 FPA Processor Operational Control Register Low ....................................................................... 37 6.9.2 FPA Processor Operational Control Register High ...................................................................... 37 6.9.3 FPA Processor User Mode Control Register ................................................................................ 37 6.9.4 ATC Offset Coefficient Register ....................................................
SERIAL INTERFACE DEVELOPERS GUIDE 1 Introduction This guide has been written to help the developer become acquainted with and be able to develop around the Serial Interface Protocol requirements for the Embeddable Camera Electronics System hardware. An overview of the system requirements and a detailed description of the protocol are provided. This guide also provides information on how the Lumitron Operational Manager Application software interacts with the ECS-320A hardware during system operation.
SERIAL INTERFACE DEVELOPERS GUIDE used for text/file transfer. The bootloader is JTAG loaded into the DSP boot flash, typically during the production of the camera electronics. After the bootloader has configured the serial port it will output some text messages informing the host of its status and go into a wait state (approximately 5 seconds). During the wait state the host can initiate a file upload.
SERIAL INTERFACE DEVELOPERS GUIDE When the trigger occurs the host application can begin writing the file data to the COM port. The bootloader receives the incoming data stream, converts the text data, and writes the executable to the proper location in DSP program and data flash. Once the file transfer is complete execution is transferred to the embedded application that was just loaded. Lumitron v0003 Bootloader Version: The latest bootloader version no longer uses a ‘Xon/Xoff’ protocol.
SERIAL INTERFACE DEVELOPERS GUIDE possible baud rates (9600, 38400, 115200) and verifying communication status. The remainder of the settings are automatically configured by the communications library. 5 Host Side Interface 5.1 Baud Rate The baud rate of the host side can be fixed to the configuration of the camera electronics or it can be designed to detect the active baud rate. When opening the port on the host application side the function requires a baud rate parameter. See function definition below.
SERIAL INTERFACE DEVELOPERS GUIDE 5.2.5 McbReadDataMem Call this function to read a block of memory from the DSP. At the lower level the call may be broken into several calls to the DSP controller to read the entire block. This function can also be used to read registers or a block of registers that are mapped into the DSP data memory space.
SERIAL INTERFACE DEVELOPERS GUIDE … // Wait until DSP is ready for next command status = GetPCMStatus(m_hComPCM); // Send Focus Motor Far Command retVal = McbSendAppCmd( m_hComPCM, (BYTE)CMD_FOCUS_MOTOR_FAR, 0, NULL ); // If failed we need to break if (FAILED(retVal)) { tStr.Format(IDS_PC_MSTR_ERROR, retVal); DoMessageBox(tStr, MB_OK, 0); } … Notes: • The third argument of the call ‘McbSendAppCmd’ is set to zero and the fourth argument is NULL.
SERIAL INTERFACE DEVELOPERS GUIDE 5.3.2 CMD_PROG_SFLASH_FULL Description: Program a full page to serial flash. The data to be programmed will need to be written to the scratch pad (DSP memory location 0x00C0) before initiating this command. The offset for the write into serial flash will be 0 regardless of the structure value. Command Code: Enumeration for CMD_PROG_SFLASH_FULL Argument Size: size of flash_XFER Argument: See below.
SERIAL INTERFACE DEVELOPERS GUIDE COMP_SER_NUM COMP_SER_NUM COMP_SER_NUM COMP_SER_NUM UWord16 fpaSupportBD; calFlagAssy; peripheral[4]; fpa; ReserveBlk_A[2]; }; /* Size = 32 Words */ typedef struct _PRODUCT_ID PRODUCT_ID, *PTR_PRODUCT_ID; 5.3.5 CMD_READ_PRODUCT_ID Description: Read Product ID from DSP Data flash and place into the scratch pad buffer. Command Code: Enumeration for CMD_READ_PRODUCT_ID Argument Size: 0 Argument: Null Note: Use the McbReadDataMem function to read data from scratch pad.
SERIAL INTERFACE DEVELOPERS GUIDE LENS_CFG lens[4]; }; typedef struct _STATIC_CFG STATIC_CFG, *PTR_STATIC_CFG; 5.3.7 CMD_READ_STATIC_CFG Description: Read Static Configuration from DSP Data flash and place into the scratch pad buffer. Command Code: Enumeration for CMD_READ_STATIC_CFG Argument Size: 0 Argument: Null Note: Use the McbReadDataMem function to read data from scratch pad. See data structures above. 5.3.
SERIAL INTERFACE DEVELOPERS GUIDE Argument: See below. struct _NVM_XFER { UWord16 offset; // Offset from byte 0 UWord16 size; // Size in bytes }; typedef struct _NVM_XFER NVM_XFER, *PTR_NVM_XFER; Note: Use the McbReadDataMem function to read data from scratch pad. The offset term in the data structure determines the offset address relative to the NVM part. This command allows the host to retrieve any portion or all of the current NVM contents.
SERIAL INTERFACE DEVELOPERS GUIDE 5.3.14 CMD_IMAGE_GRAB Description: Perform an image grab into one of the utility memory buffers. Command Code: Enumeration for CMD_IMAGE_GRAB Argument Size: UWord16 Argument: Buffer to be selected (0 – data placed in image grab buffer A, and 1 - data placed in image grab buffer B). Note: This command was included for debug and development and should not be used for normal operation since a write operation takes place.
SERIAL INTERFACE DEVELOPERS GUIDE Argument Size: size of NUC_MEM_XFER Argument: See below. struct _NUC_MEM_XFER{ UWord32 addr; // Address in NUC flash memory to read UWord16 size; // Size in WORDS (Limit to 160) }; typedef struct _NUC_MEM_XFER NUC_MEM_XFER, *PTR_NUC_MEM_XFER; Note: Use the McbReadDataMem function to read data from scratch pad. Multiple calls of this function would allow the host to read an entire set of NUC coefficients. 5.3.
SERIAL INTERFACE DEVELOPERS GUIDE struct _SERVO_MODE { UWord16 mode; UWord16 factor; /* Mode of Servo: Open, Closed, Factor */ /* PWM Factor for user specified setting */ }; typedef struct _SERVO_MODE SERVO_MODE, *PTR_SERVO_MODE; /* Servo Mode Enumeration */ enum { SERVO_OPEN = 0, SERVO_CLOSE, SERVO_FACTOR }; Note: This command is to be used for test purposes. Once configured the servo will be controlled by the embedded application during normal operation 5.3.
SERIAL INTERFACE DEVELOPERS GUIDE 5.3.24 CMD_TWO_PT_NUC Description: Initiates a 2-point calibration. The host is required to check/update the status of a global associated with the calibration process. Command Code: Enumeration for CMD_TWO_PT_NUC Argument Size: UWord16 Argument: 0 – external reference, 1 – internal reference Note: Since the 2 point calibration requires placement of hot and cold sources it is necessary to implement this command in ‘sub-protocol’ form. See paragraph 7.5 for details.
SERIAL INTERFACE DEVELOPERS GUIDE 5.3.29 CMD_GET_ADC_VALUES Description: Command to retrieve the current value of all active ADC values. The data is placed into the scratch pad buffer. Command Code: Enumeration for CMD_GET_ADC_VALUES Argument Size: 0 Argument: Null Note: Use the McbReadDataMem function to read data from scratch pad. This command was added for developmental purposes. The ADC channels read: ADC A Channels – 0 through 7, ADC B Channels 0 – 3, 7. 5.3.
SERIAL INTERFACE DEVELOPERS GUIDE Command Code: Enumeration for CMD_WRITE_VID_ENC_REG Argument Size: size of 2 * UWord16 Argument: 1 st UWord16 – offset, 2 nd UWord16 – data. The offset term is relative to the video encoder mode 0 register. In other words if a value of 0 is supplied as the offset then data will be written to the mode 0 register. P P P P Note: This command is intended for development purposes and should not be used for normal operation. 5.3.
SERIAL INTERFACE DEVELOPERS GUIDE Note: Since the defective pixel requires placement of reference sources it is necessary to implement this command in ‘sub-protocol’ form. See paragraph 7.7 for details. X X 5.3.38 CMD_IRCON_LOAD_LUT Description: Custom LUT table creation for radiometry. Contact Lumitron for specifics. 5.3.39 CMD_LOAD_RAD_PARAMS Description: Custom load radiometric parameters for compile time software. Contact Lumitron for specifics. 5.3.
SERIAL INTERFACE DEVELOPERS GUIDE }; typedef struct _UTIL_MEM_XFER UTIL_MEM_XFER, *PTR_UTIL_MEM_XFER; Note: Use the McbWriteDataMem function to move data into scratch pad. 5.3.44 CMD_ADV_DETECT_BAD_PIXELS Description: Command no longer used. 5.3.45 CMD_UPLOAD_NUC Description: Command to upload a complete NUC table to the desired NUC index. The NUC table will be formatted for the embedded application and will contain pixel replace index values for defective pixels.
SERIAL INTERFACE DEVELOPERS GUIDE Note: Once the command has been sent the embedded application will set the status code to BEGIN_PROCESS. The host can monitor this code until it is returned to HOST_READY which indicates the routine has completed compiling the defects. 5.3.48 CMD_RESTORE_FACTORY_DEFECTS Description: Command to restore the active NUC table to the factory defect state.
SERIAL INTERFACE DEVELOPERS GUIDE Argument: None Note: Use of this command assumes that the host knows the current state of the shadow register in the global configuration structure 6 Camera Electronics Side Interface The communications on the camera side is carried out by a PC Master Device driver that is part of the Motorola SDK targeted for the DSP 56F80X family. After transfer of execution from the bootloader, the software initializes a driver that in effect will ‘take control’ of the serial port.
SERIAL INTERFACE DEVELOPERS GUIDE Any portion up to the entire structure can be read using the ‘McbReadDataMem’ routine. For example, if the host wanted to retrieve the current embedded application version, a read of the data member at address 0x0040 + offset of the ‘swVersion’, member could be performed. The paragraphs below will provide information about each of the data members. 6.2.1 CameraConfig.nvmData Type: NVM_GLOBAL_CFG Size: 40 Words Description: See paragraph TBD 6.2.2 CameraConfig.
SERIAL INTERFACE DEVELOPERS GUIDE 6.2.6 CameraConfig.
SERIAL INTERFACE DEVELOPERS GUIDE Description: Software build ID of the loaded embedded application. Read only data member. 6.2.11 CameraConfig.fpgaVersion[2] Type: UWord16 Size: 2 Words Description: Xilinx FPGA version code of the stored configuration file. Read only data member. 6.2.12 CameraConfig.
SERIAL INTERFACE DEVELOPERS GUIDE Size: 1 Word Description: The member is divided into the following bit fields. Fan Speed Index: (Bits 0 - 2) Current internal fan speed index. Read only data member. Base NUC table: (Bits 3 - 8) Current base NUC index. Read only data member. Limit NUC table: (Bits 9 - 14) Current limit NUC index. Read only data member. No Refresh: (Bit 15) Set to disable automatic NUC refreshes. Only use this bit during specific operations (defective pixel detection). Then clear when done.
SERIAL INTERFACE DEVELOPERS GUIDE FPA Sub-type Identifier: (Bits 4 – 7) Range Reticle Enable: (Bit 8) Reserved: (Bits 9 – 14) Lock Memory Mirror Bit: (Bit 15) The following enumerations are used for the type and subtype codes: /* Fpa Type Enumerations */ enum { FPA_NONE = 0, FPA_DRS_U3000A, FPA_SOFRADIR, FPA_RESERVED, FPA_INDIGO_9705, FPA_INDIGO_9809, FPA_INDIGO_0202, FPA_UNDEFINED /* No FPA */ /* Ulis */ /* x to 15 Reserved */ }; /* Fpa Sub-Type Enumerations */ enum { FPA_9809_INSB = 0, FPA_9809_INGAAS
SERIAL INTERFACE DEVELOPERS GUIDE Index [3]: DSP Channel B3 6.2.24 CameraConfig.btnPanel Type: BTN_PANEL /* Button Panel State Structure */ struct _BTN_PANEL { unsigned menuUpdate:1; /* Set if button was pressed and menu needs update. Should only be set by Host and only cleared by camera.
SERIAL INTERFACE DEVELOPERS GUIDE 6.3.3 nvmData.ActMode Type: UWord16 Size: 1 Word Description: See Appendix E for specifics on this value. X X 6.3.4 nvmData.
SERIAL INTERFACE DEVELOPERS GUIDE 6.3.9 nvmData.RtclXPos Type: NVM_RETICLE_POS /* Reticle Position & Emissivity */ struct _NVM_RETICLE_POS { unsigned RtclHorPos:9; /* Reticle Horizontal Position */ unsigned Reserved:7; /* Reserved */ unsigned RtclVerPos:8; /* Reticle Vertical Position */ unsigned RtclEmiss:8; /* Reticle Emissivity */ }; typedef struct _NVM_RETICLE_POS NVM_RETICLE_POS, *PTR_NVM_RETICLE_POS; Size: 2 Words Description: Same for both A and B reticles.
SERIAL INTERFACE DEVELOPERS GUIDE typedef struct _NVM_AGC_LIMITS NVM_AGC_LIMITS, *PTR_NVM_AGC_LIMITS; Size: 2 Words Description: See Appendix E for specifics on this value. X X 6.3.14 nvmData.LinearMap Type: UWord16 Size: 1 Word Description: See Appendix E for specifics on this value. X X 6.3.15 nvmData.AgcBinLimit Type: UWord16 Size: 1 Word Description: See Appendix E for specifics on this value. X X 6.3.16 nvmData.ActZoneStat Type: UWord16 Size: 1 Word Description: Currently not used. 6.3.
SERIAL INTERFACE DEVELOPERS GUIDE opportunity. In other words if the host intends on changing the current AGC mode and have that mode restored on subsequent boots – then two writes are required. The first to change the global data structure and then a second to force an update of the nonvolatile RAM. 6.4 Process Code Detection (CAMERA_STATUS) During various routines, during normal operation, the embedded software will set a process codes.
SERIAL INTERFACE DEVELOPERS GUIDE It is also recommended that the host check regularly (including the boot sequence) for the UNCONFIGURED_CONTROLLER and the FAULT_DETECTED codes. The FAULT_DETECTED code is set by the embedded application when a built-in test fails or when a mismatch between the configured hardware and detected hardware occurs. The embedded software will jump to an idle loop to give the host a chance to read error data (see paragraph 6.
SERIAL INTERFACE DEVELOPERS GUIDE ERR_CAM_SPRT_BD_MISMATCH, ERR_SUBCODE_UNDEFINED }; ErrorCount: a count of the total number of errors since boot. ErrorData [0] Value stored in configuration flash. ErrorData [1] Value read from the ADC. ErrorData [2] – [4] Not used. 6.6.2 FPGA Load This error is set during the configuration of the Xilinx FPGA. Data from CameraConfig.camErrors: ErrorCode: ERR_FPGA_LOAD define. ErrorSubCode: a more specific description of the error from the following enumeration.
SERIAL INTERFACE DEVELOPERS GUIDE For SubCode ERR_CROSSTALK: ErrorData [0] Address of register being written to. ErrorData [1] Address of register being tested for crosstalk. ErrorData [2] Crosstalk register value. ErrorData [3] Cross talk register test mask. ErrorData [4] Not used. For SubCode ERR_FPGA_MEMORY: ErrorData [0] Value expected. ErrorData [1] Value read from memory. ErrorData [2] Test mask. ErrorData [3] Memory address. ErrorData [4] Not used. 6.6.
SERIAL INTERFACE DEVELOPERS GUIDE ErrorData [1] Value read back. ErrorData [2] Test mask. ErrorData [3] Lower 16 bits of memory address. ErrorData [4] Upper 16 bits of memory address. 6.6.6 Force ‘1’ Test This error is set during operational tests. Data from CameraConfig.camErrors: ErrorCode: ERR_FORCE_ONE define. ErrorSubCode: No subcode. ErrorCount: a count of the total number of errors since boot. ErrorData [0] Value expected (0x2000). ErrorData [1] Value read back. ErrorData [2] Test mask.
SERIAL INTERFACE DEVELOPERS GUIDE ErrorData [4] Upper 16 bits of memory address. 6.6.9 Histogram Data Grab Test This error is set during operational tests. Data from CameraConfig.camErrors: ErrorCode: ERR_HISTO_GRAB define. ErrorSubCode: No subcode. ErrorCount: a count of the total number of errors since boot. ErrorData [0] Value expected. ErrorData [1] Value read back. ErrorData [2] Test mask. ErrorData [3] Lower 16 bits of memory address. ErrorData [4] Upper 16 bits of memory address. 6.6.
SERIAL INTERFACE DEVELOPERS GUIDE 6.7 Command Polling During normal operation of the embedded application, a poll is done to check for user defined commands that have been issued by the host. When a command is detected the appropriate action is taken. Once the action is completed the command status is either reset or set to a status (see list below) to let the host know that it can proceed with the task at hand.
SERIAL INTERFACE DEVELOPERS GUIDE There are only a couple of registers that the host will typically modify. They are listed in the following paragraphs. 6.9.1 FPA Processor Operational Control Register Low Address: 0x4000 Bit 0 (Unit Gain): 0 – Use NUC Coefficient Memory Gain; 1 – Force NUC Gain to Unity (1.
SERIAL INTERFACE DEVELOPERS GUIDE Bits 10-11 (Pfv Src Sel): Processed FPA Video Source Select: 0 – Digital FPA Video; 1 – NUC Corrected Video; 2 – Pixel Replaced Video; 3 – ITT Video 6.9.4 ATC Offset Coefficient Register Address: 0x4007 16-Bit Signed Constant Added to Output of NUC Circuit (Prior to NUC Refresh) -16,384 <= Atc Ofst <= 16,383.5 6.10 Access to Serial Data Flash The Atmel serial data flash chip has 4096 pages of storage each with 264 bytes.
SERIAL INTERFACE DEVELOPERS GUIDE /* Calibration and Defect Communication Status Enumerations */ enum { HOST_READY = 0xFFFF, BEGIN_PROCESS = 0, CAL_PLACE_COLD_REF, CAL_COLD_REF_IN_PLACE, CAL_PLACE_HOT_REF, CAL_HOT_REF_IN_PLACE, CAL_DELTA_TOO_SMALL, CAL_COMPLETED, CAL_CALC_COEFFICIENTS, DEFECT_TOO_MANY, DEFECT_ERASE_FLASH, DEFECT_ERASE_ACK, DEFECT_COMPLETED, UNIFORMITY_TEST_IN_PROGRESS, NUC_FLASH_PROGRAMMED, HOST_UNDEFINED }; 7.
SERIAL INTERFACE DEVELOPERS GUIDE (E) Calibration is complete. 7.4 One Point Update Calibration (External Flag): (A) Send CMD_ONE_PT_UPDATE command with argument for using external calibration flag. (B) Embedded application will set the status code to BEGIN_PROCESS, and then begin execution of the calibration. (C) Host will monitor (periodically read) the status code data member until it is set by the embedded application to CAL_PLACE_COLD_REF.
SERIAL INTERFACE DEVELOPERS GUIDE (O) Host will monitor the status code data member until it is set by the embedded application to CAL_CALC_COEFFICIENTS or CAL_DELTA_TOO_SMALL. If the CAL_DELTA_TOO_SMALL code is received then the embedded application has aborted the calibration. (P) The host/user may now remove the hot reference if desired. (Q) Host will monitor (periodically read) the status code data member until it is set by the embedded application to CAL_COMPLETED. (R) Read the “CameraConfig.camStats.
SERIAL INTERFACE DEVELOPERS GUIDE for each pixel in the entire array. The NUC data will also need to be formatted for use in the hardware (see Appendix F ). It will also be necessary to save NUC mode data to serial data flash that corresponds to the uploaded NUC data (see paragraph 5.3.2 for further details). X X X X (A) Disable the automatic NUC refresh operation by setting BIT-15 of the camera configuration bitFieldIndex member. (B) Set up for the first pass (gain terms only).
SERIAL INTERFACE DEVELOPERS GUIDE (B) Send CMD_DOWNLOAD_NUC command with the arguments set for ‘gain terms’ and desired NUC base. This will instruct the camera to read the NUC flash and store the gain terms in utility memory (at base of MAR_IMAGE_GRAB_B). (C) Host will monitor (periodically read) the status code data member until it is set by the embedded application to HOST_READY.
SERIAL INTERFACE DEVELOPERS GUIDE Appendix A - Camera Configuration Data Structures /* Current Camera Configuration Information Structure: This structure will contain information about the camera that will be useful for standard operation as well as for the remote user to have access. Therefore this data structure is fixed in memory so that the info is always available via PCMaster.
SERIAL INTERFACE DEVELOPERS GUIDE /* Cal-flag Settings data */ UWord16 calFlagRefs; /* 1 Word */ // coldRef:8; /* Cold Ref Setting, (Bits 0 - 7) */ // hotRef:8; /* Hot Ref Setting, (Bits 8 - 15) */ /* FPA Type Information */ UWord16 fpaInfo; // fpaType:4; /* // fpaSubType:4; /* // retRangeEn:1; /* // notUsed:6; /* // lockMemMirror:1; /* /* 1 Word */ FPA Type Identifier (Bits 0 - 3) */ FPA Sub-Type Identifier (Bits 4 - 7) */ Ranging Reticle Enable (Bit 8) */ Currently not used (Bits 9 - 14) */ Set if memor
SERIAL INTERFACE DEVELOPERS GUIDE /* Partial Camera Dynamic Configuration Info Structure – matches what is stored in global memory.
SERIAL INTERFACE DEVELOPERS GUIDE Appendix B - Xilinx Register/Data Structure /* Xilinx FPGA Register Map Structure */ typedef struct { UWord16 OpCtrlRegLo; UWord16 OpCtrlRegHi; UWord16 UserCtrlReg; UWord16 StaticCtrlReg; UWord16 ImgHistoGrabReg; UWord16 InterruptReg; UWord16 Spare0Reg; UWord16 AtcOffsetCoefReg; UWord16 Reserved0[8]; /* /* /* /* /* /* /* /* /* Map Map Map Map Map Map Map Map Map to to to to to to to to to 0x4X00 0x4X01 0x4X02 0x4X03 0x4X04 0x4X05 0x4X06 0x4X07 0x4X08 */ */ */ */ */ */
SERIAL INTERFACE DEVELOPERS GUIDE UWord16 MarAMemAcc; UWord16 MarAMemAccInc; UWord16 MarAMemAccClr; UWord16 MarAMemAccClrInc; UWord16 MarAMemAccMsb; UWord16 MarAMemAccMsbInc; UWord16 MarAMemAccMsbClr; UWord16 MarAMemAccMsbClrInc; /* Utility Memory Access via MAR B */ UWord16 MarBMemAcc; UWord16 MarBMemAccInc; UWord16 MarBMemAccClr; UWord16 MarBMemAccClrInc; UWord16 MarBMemAccMsb; UWord16 MarBMemAccMsbInc; UWord16 MarBMemAccMsbClr; UWord16 MarBMemAccMsbClrInc; /* Utility Memory MAR A */ UWord16 MarAMem_LSW;
SERIAL INTERFACE DEVELOPERS GUIDE Appendix C - Camera Command Enumerations /* PC Master Command Code Enumerations */ enum { CMD_FPGA_UPDATE_AVAILABLE = 1, CMD_COPY_SFLASH_PAGE, /* Copy a page of serial flash memory to DSP */ CMD_PROG_SFLASH_FULL, /* Program a full page to serial flash */ CMD_PROG_SFLASH_PARTIAL, /* Program a partial page to serial flash */ CMD_PROG_PRODUCT_ID, /* Program DSP Data flash with Product ID */ CMD_READ_PRODUCT_ID, /* Read Product ID from DSP Data flash */ CMD_PROG_STATIC_CFG, /*
SERIAL INTERFACE DEVELOPERS GUIDE Appendix D - Mapping of Serial Non-Volatile Memory /* Complete Camera Dynamic Configuration Info Structure */ struct _NVM_DYN_CFG { UWord16 CamMode; /* Cast to/from NVM_CAM_MODE */ UWord16 FpaMode; /* Cast to/from NVM_FPA_PROC_MODE */ UWord16 ReserveA; /* Reserved */ UWord16 ActMode; /* Cast to/from NVM_AUTO_NUC_MODE */ UWord16 ReserveB; /* Reserved */ NVM_AUTO_NUC_MODE AutoNucData; /* See Struct Above */ UWord16 UWord16 AutoRfshTime; AutoRfshTemp; /* Automati
SERIAL INTERFACE DEVELOPERS GUIDE Appendix E - Dynamic Memory Definitions Note: The address (Adr) listed in the tables that follow refer to the RAM offset address inside the Real Time Clock/NVM RAM part.
SERIAL INTERFACE DEVELOPERS GUIDE Rfsh On Boot Rfsh On Sw Zn Stat En Rtcl A En Rtcl B En 1 0 1 0 1 0 1 0 1 0 1 – – – – – – – – – – – Enable Temperature Excursion Based 1-Pt Refresh Disable 1-Pt Refresh on Bootup; Enable 1-Pt Refresh on Bootup (Camera waits until FPA Temperature Stable) Disable 1-Pt Refresh on NUC Switch; Enable 1-Pt Refresh on NUC Switch Disable Zone Statistics Computation; Enable Zone Statistics Computation Disable Reticle A Overlay; Enable Reticle A Overlay Disable Reticle B Overlay;
SERIAL INTERFACE DEVELOPERS GUIDE Factory Initialize Adr Entry Name Mode 50 Auto Refresh Time Period Short R/W 0x0258 Auto Refresh Temperature Delta Threshold Short R/W 0x00EA 54 - Reserved 56 Short R/W 0x0000 58 Active Color Palette Byte R/W 0x00 Active Overlay Palette Byte R/W 0x00 Overlay Control Byte R/W 0xA1 61 Overlay Color Byte R/W 0xD0 62 Reticle A Horizontal Position Short R/W 0x0064 Reticle A Vertical Position Byte R/W 0x78 NTSC 0x80 PAL Reticle A Emissivity Byt
SERIAL INTERFACE DEVELOPERS GUIDE Factory Initialize Adr Entry Name Mode 66 Reticle B Horizontal Position Short R/W 0x00DC Reticle B Vertical Position Byte R/W 0x78 NTSC 0x80 PAL 69 Reticle B Emissivity Byte R/W 0x00 70 Reticle Radiometric Control Short R/W 0x0000 AGC Mode Byte R/W 0x02 Active ROI Index Byte R/W 0x00 Reserved Short R/W 0x0000 Display Video Manual Low Intensity Short R/W 0x0000 Display Video Manual High Intensity Short R/W 0x3FFF AGC High Limit Intensity Sh
SERIAL INTERFACE DEVELOPERS GUIDE Factory Initialize Adr Entry Name Mode 82 AGC High Limit Intensity Short R/W 0x3FFF AGC Ancillary Control Short R/W 0x0000 AGC Bin Limit Short R/W 0x001E 88 - Reserved 94 Short R/W 0x0000 96 Active Zone Stats Table Byte R/W 0x00 Reserved Byte R/W 0x00 Display Video Zero Scale Temperature Short R/W 0x0000 100 Display Video Full Scale Temperature Short R/W 0x0000 102 Camera Background Temperature Byte R/W 0x32 103 Display Video Emissivity Byt
SERIAL INTERFACE DEVELOPERS GUIDE Factory Initialize Adr Entry Name Mode 104 Lens ID Control Byte R/W 0x05 105 Reserved Byte R/W 0x00 106 - Reserved 110 Short R/W 0x0000 112 Operational Elapsed Time (LSBs) Short R/W 0x0000 114 Operational Elapsed Time (MSBs) Short R/W 0x0000 116 Cal Flash Cycle Count Short R/W 0x0000 118 Cal Refresh Cycle Count Short R/W 0x0000 120 Over-Temperature Alarm Count Short R/W 0x0000 122 Power On / Reset Cycle Count Short R/W 0x0000 124- Reserved 126
SERIAL INTERFACE DEVELOPERS GUIDE Appendix F – NUC Coefficient Format NUC Offset Coefficient (Odd Addresses) 15 14 Range: -16,384 to +16,383.5 Resolution: 0.5 NUC Offset Coefficient Becomes Pixel Replace Address Offset if NUC Gain Coefficient Equals Zero Bit Fields 13 12 11 10 9 8 7 6 5 4 3 2 1 0 NUC Offset Coefficient (for Valid Pixel i.e.