Differentiate between different triggers

Hi everybody,

I designed some custom target for a MCU and currently having the problem, that I can’t use the predefined U(S)ART pins to go into the CW.
So, I guess there is no chance to use the simpleserial.

The goal is to glitch some complex computation, so I was thinking about doing the following in abstract:


  1. set trigger high
  2. to some computation
  3. set trigger low
  4. check if computation is erroneous
    4.1) if it is, set GPIO3 high


  1. Waits for glitching trigger
    1.1) Glitch on trigger high
    1.2) Afterwards checks gpio3 (attempt to glitch successful / failed)

Well, I just found out the hard way you cant use the GPIOs as inputs to the CW.
So, I was searching around and found, that there may be a workaround in using the scope.trigger.triggers() to combine gpio4 (real trigger) and gpio3 (success indicator) with some logical combination:

How would you then at the CW side differentiate between both these events, as both simple trigger the CW-Lite.
Is it somehow necessary to disarm the CW in between?

I hope someone finds the time for a short reply.

Cheers mates!

Hi Bemifo,

You should be able to read the GPIO inputs (only 1-4) via scope.io.tio_states, as per the documentation: https://chipwhisperer.readthedocs.io/en/latest/api.html#chipwhisperer.capture.scopes.cwhardware.ChipWhispererExtra.GPIOSettings.OpenADC.tio_states.

You can read the state of the trigger by scope.adc.state. You don’t have to worry about disarming the ChipWhisperer after the first glitch.