Crate teensy4_pins

Source
Expand description

Hardware pins for the Teensy 4.0, 4.1 and MicroMod boards

teensy4-pins is designed to the imxrt-iomuxc crate. The pins API constrains the processor pads to the ones that are available on the Teensy 4.0, 4.1 and MicroMod. It also exposes type aliases that simplify pin identification in the type system.

Note that this pin API is optional. You are free to configure the pins using the pad identifiers, instead of the physical pin identifiers. Pads are available directly from the imxrt-iomuxc crate.

§Teensy 4.0

To acquire Teensy 4.0 pins, call t40::from_pads and provide all of the processor pads:

use teensy4_pins::t40;

let pads = // Handle to all processor pads
let pins = t40::from_pads(pads);

§Teensy 4.1

The approach is the same as the Teensy 4.0, replacing t40 with t41:

use teensy4_pins::t41;

let pads = // Handle to all processor pads
let pins = t41::from_pads(pads);

§Teensy MicroMod

The approach is the same as the Teensy 4.0, replacing t40 with tmm:

use teensy4_pins::tmm;

let pads = // Handle to all processor pads
let pins = tmm::from_pads(pads);

§Pin configuration

Once you have your pad resources, you can configure pull ups, pull downs, and other pad characteristics. See the Config documentation for all supported features. Use configure to apply the settings.

For example, here’s a pull down on pin 7 and an pull up, open drain on pin 9:

use teensy4_pins::{t40, Config, configure, PullKeeper, OpenDrain};

const P7_CONFIG: Config = Config::zero()
    .set_pull_keeper(Some(PullKeeper::Pulldown100k));

const P9_CONFIG: Config = Config::zero()
    .set_pull_keeper(Some(PullKeeper::Pullup22k))
    .set_open_drain(OpenDrain::Enabled);

let pads = // Handle to all processor pads
let mut pins = t40::from_pads(pads);

configure(&mut pins.p7, P7_CONFIG);
configure(&mut pins.p9, P9_CONFIG);

§Safety

The safe APIs expect to work on the only instance of the processor pads. If you don’t have that available, or you need more flexibility, use the unsafe t40::Pin::new, t41::Pins::new, or tmm::Pins::new constructor methods to create an instance that may be aliasing another handle to the pads or pins.

Re-exports§

pub use imxrt_iomuxc;

Modules§

common
Common pinout
t40
Teensy 4.0 specific APIs
t41
Teensy 4.1 specific APIs
tmm
Teensy MicroMod specific APIs

Structs§

Config
A configuration capable of compile-time, const configuration:

Enums§

DriveStrength
Drive strength
Hysteresis
The hysteresis (HYS) bit controls whether a pin acts as a Schmitt trigger, which is a comparator remembering its last input state (hysteresis).
OpenDrain
Open Drain Enable Field
PullKeeper
The pull up, pull down, or keeper configuration.
SlewRate
Slew Rate
Speed
Sets electrical characteristics of a pin in a given frequency range

Functions§

configure
Applies the configuration config for the supplied pad