I need to read a noisy 10 V Hall sensor square wave signal using an STM32 (3.3 V logic). To reduce the voltage I can use a simple resistor voltage divider, however, I'm not certain how to protect the STM32 from voltage spikes in case the signal source goes over 10 V (or possibly below 0 V?). I put together this scheme using a 3.3 V Zener diode which seems to work in the simulation, but I'm concerned because other voltage protection circuits involve multiple Zener diodes: [link][1] Also, I fail to understand why one would use Zener diodes over 'regular' diodes. Can't we just use a 'regular' diode from noisy 3.3 V to 3.3 V so that any excess voltage will flow to the 3.3 V voltage source, instead of a Zener diode from 0 V to noisy 3.3 V? [![enter image description here][2]][2] [1]: https://www.eevblog.com/forum/beginners/0-10vdc-signal-into-3-3v-mcu-adc/ [2]: https://i.sstatic.net/txGES.png