This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DLPC350: DLPC350 TRIG_OUT_1 sent intermittently when in Pattern Sequence Mode using Trigger Mode 1

Part Number: DLPC350

We are using the DLP® NIRscan™ Evaluation Module. At power up, the Sitara initializes the DLPC350 to Video Display Mode. At this point the VSYNC, HSYNC, and PCLK signals are active. After initialization all communication and setup to DLPC is then done using USB commands through the USB interface. The module is commanded to Pattern Sequence Mode using Trigger Mode 1. We send the external trigger – TRIG_IN_2 and monitor TRIG_OUT_1.

 

The issue is, when we enter Pattern Sequence Mode, the DLPC350 sends TRIG_OUT_1 intermittently before TRIG_IN_2 is sent . We are monitoring these signals with an oscilloscope. The DLPC350 "locks up" and does not send patterns or TRIG_OUT_1 even after TRIG_IN_2 is sent.

 

Although the DLPC350 is in Pattern Display Mode, the Sitara is still sending the VSYNC, HSYNC, and PCLK signals. Could these signals be causing the issue. 

The following warning in the programming guide seems to indicate that these signals should be inactive.

 

 

 

  • Hi John, 

    Thanks for your post! Can you please indicate the page number of the error you are referencing? I am unable to view the picture you posted. 

    Also, have you modified the EVM's hardware/software, or are you using the EVM in it's out-of-box configuration?

    Thanks, 

    Brandon

  • Hi Brandon

    The warning is on page 42 of the DLCP350 programmers guide. The cut and paste showed in the message box but did not appear once posted. Sorry about that.

    This is the warning.

    When using external hardware trigger mode it is critical that unused trigger, VSYNC and pixel clock lines be properly isolated even if not in use by the mode selected. Any noise or signal present on these lines can cause undesirable behavior.

    We did not modify the hardware and we only use the out of the box init routine  on power up. This put the box in video mode. After that all commands come from our host computer via the USB interface to set up the DLPC350. We know these lines are active even when we change  to pattern mode in the DLPC350. We do not program the sitara to deactivatae these lines. Could not deactivating these lines be causing the issue? Is that what is meant by properly isolating?

    Thanks

    John

  • Hi John, 

    "Isolation" means there should not be any crosstalk between the VSYNC,PCLK, HSYNC lines and the TRIG_IN lines. Otherwise the crosstalk may be interpreted as trigger pulses by the DLPC350. Also, there is a known issue on FW v4.0 that causes unwanted glitches on TRIGOUT1. We are fixing this issue in the next maintenance release. Do you see the same TRIGOUT issue with FW v3.1 aswell? 

    Thanks & Regards,

    Hirak.

  • Hi Hirak

    Thanks for the info. We are using FW v3.1 and we do see the TRIGOUT issue.The VSYNC, PCLK, HSYNC lines are being driven by the Sitara and there is activity on these lines, ie pulses and clock signals. Can this cause unwanted TRIGOUT pulses before a TRIGIN is sent when the DLPC350 is in Pattern Sequence Mode?

    thanks

    John

  • Hi John, 

    Could you kindly let us know the specific steps to reproduce the TRIGOUT1 Glitch problem? This will help us to investigate further.

    Thanks & Regards,
    Hirak.

  • Hi Hirak

    The following is the set of commands we send to the DLPC3250 over USB to set up our 3 pattern sequence. To start a sequence, TRIGIN2 is set hi and the DLPC350 sends back 3 TRIGOUT1 hi pulses, each 1ms long, one for each pattern. Once all 3 are received, TRIGIN2 is set lo. The 3 pattern sequence takes 4ms. The time between patterns is 20ms. The problem is that TRIGOUT1 intermittently sends 1ms pulses even when TRGIN2 is lo.

     

    Stationary trigger:

    1. Get the current frame period (USB: CMD2: 0x1A, CMD3: 0x29)

    2. Stop pattern sequence (USB: CMD2: 0x1A, CMD3: 0x24) with argument b00 (Stop Pattern Display Sequence)

      1. The documentation says valid inputs are 0x00, 0x01, and 0x11 (which implies hex) but states that only the first 2 bits are used so can we assume that 0x actually refers to binary in this case?

    3. Wait two frame periods

    4. Check pattern sequence is stopped (USB: CMD2: 0x1A, CMD3: 0x24)

    5. If not stopped, return to step 2 (up to 5 times)

      1. Note: The original source code continued regardless of the state, after 5 attempts. When we changed this to not continue unless the state was “stopped”, we noticed that the state never went to stopped, but rather it always returned “paused” (b01). Is there a reason why the DLPC350 will not go to “stopped” mode from “pause” mode? If we execute a “start” mode (b10), then execute a “stop” mode, it will transition to “stop” as expected.

    6. Set pattern display mode (USB: CMD2: 0x1A, CMD3: 0x1B) with argument b1

    7. Set pattern display data input source (USB: CMD2: 0x1A, CMD3: 0x22) with argument b11 (Pattern Display Data is fetched from flash memory)

    8. Set pattern display LUT (USB: CMD2: 0x1A, CMD3: 0x31) with argument byte 0 = b10 (3 patterns), byte 1 = b01 (repeat pattern), byte 2 = b10 (3 patterns), byte 3 = b00 (1 image)

    9. Set trigger mode (USB: CMD2: 0x1A, CMD3: 0x23) with argument b01 (Pattern Trigger Mode 1: Internally or externally (through TRIG_IN_1 and TRIG_IN_2) generated trigger)

    10. Set the exposure and frame period (USB: CMD2: 0x1A, CMD3: 0x29) with argument byte 3:0 = b01100100 (1000 us exposure), byte 7:4 = b01100100 (1000 us frame period)

    11. Set trigger out 1 (USB: CMD2: 0x1A, CMD3: 0x1D) with argument byte 0 = b00 (Normal TRIG_OUT_1 polarity, active high signal), byte 1 = 0xD5 (+2.787 us), byte 2 = b00 (-20.05 us)

      1. Question: These settings were originally in the source code. Could these settings be causing issues?

    12. Open LUT mailbox (USB: CMD2: 0x1A, CMD3: 0x33) with argument 0x10 (Open the mailbox for pattern definition)

    13. Set LUT offset (USB: CMD2: 0x1A, CMD3: 0x32) with argument 0x00

    14. Send LUT data (USB: CMD2: 0x1A, CMD3: 0x34)

      1. Byte 2:0 = b1000001000101100000 (Internal Trigger b00, Pattern 24, depth 1, led 1, invert 0, end black 0, swap 1, trigger high 0)

      2. Byte 5:3 = b0000001000100100011 (No Trigger b11, Pattern 8, depth 1, led 1, invert 0, end black 0, swap 0, trigger high 0)

      3. Byte 8:6 = b0000001000100100111 (No Trigger b11, Pattern 9, depth 1, led 1, invert 0, end black 0, swap 0, trigger high 0)

    15. Validate LUT (USB: CMD2: 0x1A, CMD3: 0x1A)

    16. Read bit 7 (status bit) for b1

    17. If not 0x1, return to step 15 (up to 100 times, count was arbitrary)

    18. Start pattern sequence (USB: CMD2: 0x1A, CMD3: 0x24) with argument b10 (Start Pattern Display Sequence)

    19. Stop pattern sequence (USB: CMD2: 0x1A, CMD3: 0x24) with argument b00 (Stop Pattern Display Sequence)

    1. Is the start and stop necessary?

    thanks John

     

  • Hi John, 

    Q> The documentation says valid inputs are 0x00, 0x01, and 0x11 (which implies hex) but states that only the first 2 bits are used so can we assume that 0x actually refers to binary in this case?

    A> In the DLPC350 Programmers Guide Page 47 Sec 2.4.3.4.2 I can see it is mentioned that the 3 valid values for the command (0x1A 0x24) is 0b00, 0b01 and 0b10. 

    The rest of your queries we need to look into more and get back. Kindly note that I will be on vacation for about 1 and a half week starting friday this week. So kindly expect response only after I come back. 

    Sorry for the delay and thanks for your patience.

    Thanks & Regards,

    Hirak. 

  • Still on vacation, will look into this once I get back. Thanks for your patience!

    Thanks & Regards,

    Hirak.

  • Hi, 

    I'll look into this and get back to you shortly. Thanks for your patience. 

    Thanks & Regards,

    Hirak.

  • Hi John,

    Note: The original source code continued regardless of the state, after 5 attempts. When we changed this to not continue unless the state was “stopped”, we noticed that the state never went to stopped, but rather it always returned “paused” (b01). Is there a reason why the DLPC350 will not go to “stopped” mode from “pause” mode? If we execute a “start” mode (b10), then execute a “stop” mode, it will transition to “stop” as expected.

    A> We can confirm this behavior. Currently the embedded software cannot execute the stop command if the controller is in "paused" state. To stop, the controller needs to be in "start" state. 

    Question: These settings were originally in the source code. Could these settings be causing issues?

    A> Could you kindly remove this part of configuration and try again if you can reproduce the glitches? Since this error is reproducible on TI EVM, could you also try to configure the device using the LCR4500 GUI and then check if you still get the glitches on TRIGOUT1? IF you can still reproduce the error, kindly save the GUI settings by clicking "save solution" and provide the saved INI file to us, which we can then use to reproduce at our end. 

    Is the start and stop necessary?

    A> To start and stop the pattern sequence you need to send start and stop commands. Before making any change in the pattern configuration you also need to stop the pattern sequence first. 

    Thanks & Regards,

    Hirak.

  • Hi Hirak

    I forwarded your response to our software engineer but he is on vacation for another week. Once he gets back we will try your suggestions. I have some questions regarding the TRIG_IN2 input. Where does this signal go once in the DLPC350? Does it connect to the internal FPGA and is this signal registered? It seems to be very susceptible to external electrical noise. We can start and stop patterns from the spectrometer by turning a heat gun on and off 10 feet away. I put a.01uF capacitor on the TRIG_IN2 pin and ground on the spectrometer connector J11 which makes it more immune but still triggers occasionally. Any thought.

    thanks

    John

  • Hi John, 

    The TRIG_IN2 signal goes to the internal HW of DLPC350 ASIC. If you're having a problem with noise, you can also try adding a stronger pulldown resistor on the TRIG_IN2 line and see if that improves the noise immunity performance. 

    Thanks & Regards,

    Hirak.

  • Hi Hirak - We will give that a try. Do you know if the internal ASIC registers the TRIG_IN2 signal - thanks John

  • Hi John, 

    This signal is registered once before going into the HW.


    Thanks & Regards,

    Hirak.