DLPU082C August   2021  – March 2024 DLPC7540

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. Scope
  5. References
  6. Acronyms
  7. System Boot
    1. 4.1 Data In flash
    2. 4.2 Bootloader Application
    3. 4.3 Main Application
    4. 4.4 Commands Supported by Bootloader and Main Applications
    5. 4.5 Debug Terminal
    6. 4.6 HOST_IRQ/SYSTEM_BUSY
    7. 4.7 Heartbeat
    8. 4.8 Low-Level Fault
  8. System Status
  9. Version
  10. Power Modes
  11. Display Modes
  12. Source Detection and Configuration
  13. 10Internal Sources
    1. 10.1 Test Patterns (TPG)
    2. 10.2 Solid Field (SFG) Color
    3. 10.3 Curtain
  14. 11Display Formatting
  15. 12Image Processing
  16. 13Warping
    1. 13.1 Control Point Table
    2. 13.2 Manual Warp Table
    3. 13.3 Table Constraints
    4. 13.4 Example Warp Table
    5. 13.5 Manual Warping Commands
      1. 13.5.1 CMD_SetManualWarpControlPoints [Command ID: 0x35, Destination: 4]
      2. 13.5.2 CMD_GetManualWarpControlPoints [Command ID: 0x35, Destination: 4]
      3. 13.5.3 CMD_WriteManualWarpTable [Opcode: 0x34, Destination: 4]
      4. 13.5.4 CMD_ReadManualWarpTable [Opcode: 0x34, Destination: 4]
      5. 13.5.5 CMD_ConfigureSmoothWarp [Command ID: 0x38, Destination: 4]
      6. 13.5.6 CMD_ApplyManualWarping [Command ID: 0x36, Destination: 4]
    6. 13.6 Optical (Lens) Distortion Correction
  17. 14Introduction to Blending
    1. 14.1  Blend Map Control Points
    2. 14.2  Blend Map Gain Values
    3. 14.3  Blend Map Offset Value
    4. 14.4  Constraints
    5. 14.5  Manual Blending Commands
      1. 14.5.1 CMD_EnableEdgeBlending [Command ID: 0x2F]
      2. 14.5.2 CMD_SetBlendMapControlPoints [Opcode: 0x2E]
      3. 14.5.3 CMD_ GetBlendMapControlPoints [Command ID: 0x2E]
      4. 14.5.4 CMD_SetBlendMapGainValues [Command ID: 0x2B]
      5. 14.5.5 CMD_ GetBlendMapGainValues [Command ID: 0x2B]
      6. 14.5.6 CMD_ SetBlendMapOffsetValues [Command ID: 0x2D]
      7. 14.5.7 CMD_ GetBlendMapOffsetValues [Command ID: 0x2D]
      8. 14.5.8 CMD_ApplyBlendMap [Command ID: 0x2C]
    6. 14.6  Manual Blending Application Commands
      1. 14.6.1 CMD_SetEdgeBlendingSystemParams [Command ID: 0x3D]
      2. 14.6.2 CMD_GetEdgeBlendingSystemParams [Command ID: 0x3D]
      3. 14.6.3 CMD_SetEdgeBlendingConfiguration [Command ID: 0x3E]
      4. 14.6.4 CMD_GetEdgeBlendingConfiguration [Command ID: 0x3E]
    7. 14.7  Cropping of Input Image for Blending Setup
    8. 14.8  Storing Edge Blend Configuration in EEPROM
    9. 14.9  Storing in EEPROM or Secondary Flash
    10. 14.10 Manual Blending GUI in Control Program
  18. 15Illumination Control
  19. 16Peripherals
    1. 16.1 GPIO
    2. 16.2 PWM
  20. 17Interface Protocol
    1. 17.1 Supported Interfaces
    2. 17.2 I2C Target
    3. 17.3 USB
  21. 18Command Protocol
    1. 18.1 Command Packet
    2. 18.2 Response Packet
    3. 18.3 Destination Details
    4. 18.4 Error Handling and Recovery
    5. 18.5 System Busy - I2C scenarios
      1. 18.5.1 GPIO Implementation
      2. 18.5.2 Short Status Response
    6. 18.6 Support for Variable Data Size
  22. 19Auto-Initialization Batch File
  23. 20Command Descriptions
  24. 21System Commands
    1. 21.1  3D
    2. 21.2  Administrative
    3. 21.3  Autolock
    4. 21.4  Bootloader
    5. 21.5  Calibration
    6. 21.6  Blending
    7. 21.7  Debug Internal
    8. 21.8  Debug
    9. 21.9  General Operation
    10. 21.10 Illumination
    11. 21.11 Image Processing
    12. 21.12 Manual WPC
    13. 21.13 Peripherals
    14. 21.14 Vision
    15. 21.15 Warping
  25.   Revision History

CMD_WriteManualWarpTable [Opcode: 0x34, Destination: 4]

This command loads the manual warp table into the system. It has the start index and an arbitrary number of points as parameters. The start index is a 16-bit number that represents the linear index into the 2D warp table. The warp table is always assumed have the same number of warp points as the control points set up using SetManualWarpControlPoints command.

Each point is passed as two 13.3 fixed point numbers that represents X and Y coordinates. Because the total command packet size cannot exceed 512 bytes, the table is loaded by invoking the command multiple times with different start indexes. If the total number of points passed in the manual warp table is less than 62×32 then software generates the warp map for all 62×32 control points from the warp map of input even spaced control points. For each 62×32 control points it finds the four closest control points in even spaced warp map and then using bilinear interpolation calculate the output position.

Note:

Manual warp map is applied after any scaling and keystone correction performed by the warp engine.

Manual warp control points just be set before using this command.

GUID-20230112-SS0I-WX8G-PWRQ-PHD7PFT3FKCG-low.jpg Figure 13-5 Example Output
Table 13-4 Example Command Packet
Byte Index Value Description
0 0x54 Command packet header (destination 4, length present, response required)
1 0x34 Command opcode
2-3 0x0031 Number of bytes in payload (49)
4-5 0x0000 Start index in the table (0)
6-7 0x0000 X1 = 0.0
8-9 0x0000 Y1 = 0.0
10-11 0x2800 X2 = 1280.0
12-13 0x0640 Y2 = 200.0
14-15 0x5000 X3 = 2560.0
16-17 0x0640 Y3 = 200.0
18-19 0x77F8 X4 = 3839.0
20-21 0x0640 Y4 = 200.0
22-23 0x0000 X5 = 0.0
24-25 0x21C0 Y5 = 1080.0
26-27 0x2800 X6 = 1280.0
28-29 0x21C0 Y6 = 1080.0
30-31 0x5000 X7 = 2560.0
32-33 0x21C0 Y7 = 1080.0
34-35 0x71C0 X8 = 3640.0
36-37 0x21C0 Y8 = 1080.0
38-39 0x0000 X9 = 0.0
40-41 0x4378 Y9 = 2159.0
42-43 0x2800 X10 = 1280.0
44-45 0x3D40 Y10 = 1960.0
46-47 0x5000 X11 = 2560.0
48-49 0x3D40 X11 = 1960.0
50-51 0x77F8 X12 = 3839.0
51-52 0x4378 Y12 = 2159.0

Method for sending large number of warp points

As previously mentioned, the number of bytes in one command cannot exceed 512. To send a large number of warp points, send multiple packets. An example method for sending 62×32 warp points is shown here:

Command 1: index = 0, followed by 124 pairs of X, Y (124×2×2 = 496 bytes)

Command 2: index = 124, followed by the next 124 pairs of X, Y

Command 3: index = 248, followed by the next 124 pairs of X, Y

and so on through:

Command 16: index = 930, followed by the last 124 pairs of X, Y

Optimization to reduce the data sent by the command interface

Consider the case where out of 62×32 warp points, only some have changed (say the 10th, 11th, 12th and 45th point), then the following method can be used.

Command 1: index= 0, followed by (X10, Y10, X11, Y11, X12, Y12)

Command 2: index = 45, followed by (X45, Y45)

Command 3: ApplyManualWarping command with Enable = 0

Command 4" ApplyManualWarping command with Enable = 1

This optimization can be used instead of sending all of the 62×32 warp points when any point changes.