Update: the issue has been resolved for now!
It was indeed a power issue, and I figured out what was causing it. I had my 5V hotend fan and 5V tool fan both connected to the toolboard, but they were sharing the 5V input from io_2, since I couldn't get 5V from out1 or out2. Since the part fan turns on after the first couple of layers, I guess it pulled too much current from io2 and caused the toolboard to power cycle. I moved the fan inputs to take 5V from the expansion board instead, and now everything works as intended.
Thanks to everyone who helped!