Trace is varied even no code between trigger_high and trigger_low

I wrote a code as following
trigger_high();
trigger_low();
pt[0] = 0xFF;
simpleserial_put(‘r’, 8, pt);

then I capture the trace with 22400 samples setting. The trace I got is as below:

Interesting, once the trigger_high() starts, it captures everything but trigger_low() does not stop the capturing immediately. It seems like the trigger_low() stop the scope to be trigger continuously. Also, the time of scope to restart capturing is fixed.

My questions are:

  1. What is the time that the chipwhisperer will restart the capture ? I’m using Chipwhisperer Lite.
  2. Once I start the trigger_high(), it starts to record the trace from the first signal to the signal 22400 and these are the samples I get when I call get_last_trace(), correct?

Correct. How many samples are captured depends purely on scope.adc.samples and not any feedback from the target.

Next capture will take place after you call scope.arm() and another rising edge trigger event occurs.

Yup, that’s correct.

So what is the functionality of trigger_low() exactly ? Is it used to stop the scope to trigger itself continuously ?

Continue to the previous question, aftertrigger_low()is called, the trigger_high() after the trigger_low() will not be activated unless scope.arm() activates the scope. Am I right?

By default, the scope triggers on a rising edge of the trigger pin. It needs to be set low after an encryption so it can be set high again for the next encryption.

Correct