Regarding the hardware protocol debugging aids, I've got a Bus Pirate years ago. Ended up not using it as much as I hoped to because I never got to the point of memorizing the idiosyncratic syntax of the commands its CLI uses. Found out (unsurprisingly) that, when in the flow of problem-solving I need to debug something, I want doing it NOW, DAMMIT, not after I re-learn how to use my debug tool first.
What I found working best for me so far is Digilent Analog Discovery 2 and its accompanying WaveForms software. If has rather extensive I2C/UART/SPI/CAN features and it can act as a sender, receiver and "sniffer" (they call it "spy" mode).