I recently upgraded to a ChipWhisperer Husky from a ChipWhisperer Lite. Things have been proceeding smoothly so far, up until this point when I ran into some confusing behavior with the 3.3V target power line.
According to the documentation, when scope.io.target_pwr is set to True, 3.3V @ up to 200ma are output onto this line. When it is set to False, the line outputs 0V and TIO pins are set to high-z to avoid back-powering.
This behavior is matched on my CW Lite. But on my Husky, the behavior is somewhat inverted-- when scope.io.target_pwr is True, 0 volts are output, and when False, 3.3V are output while the TIOs are still disabled.
This seems wrong. What can I do to troubleshoot the issue?
import chipwhisperer as cw
if __name__ == "__main__":
scope = cw.scope()
# target_pwr is on by default
print(scope.io.target_pwr)
print(scope.fpga_buildtime)
# Power line is 0V here
input()
scope.io.target_pwr = False
print(scope.io.target_pwr)
# Power line is 3.3V here
input()
Testing using a multimeter. Also, experimentally, my target is only powered when target_pwr is set to False (though of course then I can’t communicate with it as the TIOs are off.)
Have you checked the behaviour with no target attached? If it’s the same, then some damage may have occurred to the power-on circuitry (Q2/Q3 on the schematic); email sales@newae.com referencing this post and we’ll see what we can do.
If it does work as expected with no target, then there must be some cause on the target side. Be aware that turning off target_pwr tristates a bunch of outputs (docstrings lists them), but this behaviour is identical to CW-lite.