Astra MCU SDK Peripheral Driver Library
 
Loading...
Searching...
No Matches

Topics

 Enumerated Types
 Enumerated types for Pinmux driver.
 
 Data Structures
 Data structures for Pinmux driver.
 
 General Functions
 General functions for Pinmux driver.
 

Detailed Description

Driver for the Pinmux peripheral

The Pinmux driver configures electrical characteristics and function routing for physical device pins, including:

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.

static pinmux_elec_config_t elec_cfg = {
.enable_input = true,
.enable_hold = false,
.pull_type = PINMUX_PULL_DISABLED,
.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.

static pinmux_config_all_t cfg_all=
{
.pin_name = SPI_MSTR_CS,
.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.

/* Set all electrical parameters for a single pin */
LOG_INFO(LOG_MOD_PINMUX,"Pinmux set pin electrical characteristics test start\n");
if (err != PINMUX_OK)
{
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.

if (err != PINMUX_OK)
{
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.

err = pinmux_set_pin_function(I2S_BCLK, I2S_BCLK__I2S_BCLK);
if (err != PINMUX_OK)
{
LOG_ERROR(LOG_MOD_PINMUX,"pinmux_set_pin_function failed with %d\n",err);
return err;
}
err = pinmux_get_pin_function(I2S_BCLK, &read_func);
if (err != PINMUX_OK)
{
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.

/* Configure both the electrical parameters and function for multiple pins*/
err = pinmux_config_all_mult(test_specific_pins,sizeof(test_specific_pins)/sizeof(test_specific_pins[0]));
if(err != PINMUX_OK)
{
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");