Module pad

Source
Expand description

Type-level tools to configure SERCOM pads

This module helps configure Pins as SERCOM pads. It provides type-level tools to convert Pins to the correct PinMode and to enforce type-level constraints at compile-time.

§Overview

A SERCOM pad is defined by two types, its corresponding Sercom instance and its PadNum, from Pad0 to Pad3. However, a given SERCOM pad can usually be mapped to several possible PinIds.

There are two primary traits defined in this module:

  • The IsPad trait is implemented on Pin types that are properly configured as SERCOM pads, with PinMode AlternateC or AlternateD. It acts as both a type class for SERCOM pads and as a type-level function to recover the corresponding Sercom and PadNum types from the Pin.
  • The GetPad trait maps each PinId to its corresponding, pad-related types. The PadMode alias uses GetPad to recover the corresponding PinMode for a given SERCOM pad, while the Pad alias recovers the configured Pin type.

§IOSET (SAMD51/SAME5x only)

SAMx5x chips do not allow arbitrary combinations of PinId for a given SERCOM. Instead, all PinIds must belong to the same IOSET. This module defines a [type-level enum], IoSet, to enforce this restriction, and the InIoSet type class is responsible for labeling each IsPad type with its corresponding, valid IoSet(s).

Enums§

Pad0
Type-level variant of PadNum representing SERCOM pad 0
Pad1
Type-level variant of PadNum representing SERCOM pad 1
Pad2
Type-level variant of PadNum representing SERCOM pad 2
Pad3
Type-level variant of PadNum representing SERCOM pad 3
UndocIoSet1
This type is not present with the selected feature set, defined for documentation only
UndocIoSet2
This type is not present with the selected feature set, defined for documentation only

Traits§

GetPad
Type-level function mapping PinIds to SERCOM-pad-related types
InIoSet
This trait is not present with the selected feature set, defined for documentation only
IoSet
This trait is not present with the selected feature set, defined for documentation only
IsI2cPad
Type class for Pins which can be used as I2C pads
IsPad
Type class for Pins configured as SERCOM pads
OptionalPad
Type-level equivalent of Option<Pad>
OptionalPadNum
Type-level equivalent of Option<PadNum>
PadNum
Type-level enum representing a SERCOM pad number
SomePad
Type-level equivalent of Some(Pad)

Type Aliases§

Pad
Type alias to recover a Pin configured as a SERCOM pad in the correct PadMode
PadMode
Type alias using GetPad to recover the PinMode for a given SERCOM pad