Diagram showing the difference between an ideal signal (the red waveform) and the actual signal affected by slew rate (green waveform)
Slew rate is influenced by two primary factors. When a microcontroller attempts to change the value of a GPIO pin, it switches the pin to either its I/O voltage or 0 V. However, if the current voltage on the pin differs from the new voltage, continuity of charge dictates that the voltage cannot change instantaneously. Rather, the voltage changes through an exponential curve, the rate of change depending on the resistance of the switch (MOSFET) and the capacitance of the output.
GPIO pins with high Output Drive generally have low switch resistances and therefore a faster slew rate. However, the capacitance of the output depends both on the attached load and the parasitic capacitance inside the microcontroller. Load capacitance mainly comes from long wires or high-impedance inputs.
Typical slew rates range from 10 ns to 125 ns. These correspond to maximum signal change rates of 100 MHz and 8 MHz respectively. Generally, communication using a slow protocol such as UART or I2C has few issues with slew rate, but faster protocols such as USB and SPI may have data corruption if the slew rate is insufficient. Just because a signal can be generated quickly does not mean that the destination can understand it; observe maximum frequency limitations carefully.
The highest slew rates are found among high-speed purpose-built microcontrollers such as the V5 Brain and Leaflabs Maple. A 16 MHz Arduino cannot obtain a 100 MHz slew rate, and the very low drive strength of high-speed processors such as the Pandaboard leads to slower slew rates.
BLRS (Purdue SIGBots)