Module atsamd_hal::sercom::pad
source · [−]Expand description
Type-level tools to configure SERCOM pads
This module helps configure Pin
s as SERCOM pads. It provides type-level
tools to convert Pin
s 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 PinId
s.
There are two primary traits defined in this module:
- The
IsPad
trait is implemented onPin
types that are properly configured as SERCOM pads, withPinMode
AlternateC
orAlternateD
. It acts as both a type class for SERCOM pads and as a type-level function to recover the correspondingSercom
andPadNum
types from thePin
. - The
GetPad
trait maps eachPinId
to its corresponding, pad-related types. ThePadMode
alias usesGetPad
to recover the correspondingPinMode
for a given SERCOM pad, while thePad
alias recovers the configuredPin
type.
IOSET
SAMx5x chips do not allow arbitrary combinations of PinId
for a given
SERCOM. Instead, all PinId
s 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
IoSet
representing an undocumented SERCOM
IOSETIoSet
representing an undocumented SERCOM
IOSETTraits
OptionalPinId
s to their corresponding
OptionalPad
sOption<Pad>
Option<PadNum>
Some(Pad)