Driver for the Pinmux peripheral
The Pinmux driver configures electrical characteristics and function routing for physical device pins, including:
- Drive strength, input enable, pull-up/down, slew rate, Schmitt trigger
- Multiplexing of peripheral functions to pads
Configuration Considerations
To initialize and use the Pinmux driver:
Example usage:
Electrical Configuration Structure
This snippet shows how to define a structure to configure all electrical parameters for a pin.
.enable_input = true,
.enable_hold = false,
.enable_slew_rate = true,
.enable_schmitt_trig = false,
};
Combined Configuration Structure
This snippet demonstrates how to define a structure for configuring both electrical parameters and function for a single pin.
{
.elec_config = &elec_cfg,
.function = SPI_MSTR_CS__UART0_TX,
};
Setting All Electrical Parameters
This snippet illustrates how to set all electrical characteristics for a specific pin and then retrieve them for verification.
LOG_INFO(LOG_MOD_PINMUX,"Pinmux set pin electrical characteristics test start\n");
{
LOG_ERROR(LOG_MOD_PINMUX,"pinmux_set_pin_elec_config failed with %d\n",err);
return err;
}
Getting a Single Electrical Parameter
This snippet provides an example of how to retrieve a single electrical parameter, such as drive strength, for a pin.
{
LOG_ERROR(LOG_MOD_PINMUX,"pinmux_get_pin_elec_param for drive strength failed with %d\n",err);
return err;
}
LOG_INFO(LOG_MOD_PINMUX, "Driver strength: %d\n", val);
Setting Pin Function
This snippet shows how to assign a specific peripheral function to a pin and then read back the configured function.
{
LOG_ERROR(LOG_MOD_PINMUX,"pinmux_set_pin_function failed with %d\n",err);
return err;
}
{
LOG_ERROR(LOG_MOD_PINMUX,"pinmux_get_pin_function failed with %d\n",err);
return err;
}
LOG_INFO(LOG_MOD_PINMUX, "Pin function: %d\n", read_func & PINMUX_DECODE_FUNCTION_NUM);
LOG_INFO(LOG_MOD_PINMUX,"Pinmux set pin function test end\n");
Configuring Multiple Pins
This snippet demonstrates how to configure electrical characteristics and functions for multiple pins efficiently using a single API call.
{
LOG_ERROR(LOG_MOD_PINMUX,"pinmux_config_all_mult failed with %d\n",err);
return err;
}
LOG_INFO(LOG_MOD_PINMUX, "Pinmux configuring both electrical characteristics and function for multiple pins is successful\n");