//! Drivers for iMXRT1040 MCUs. #![no_std] pub use ral_registers::{Instance, modify_reg, read_reg, write_reg}; mod rt; pub use rt::*; pub mod iomuxc; pub mod iomuxc_gpr { pub type RegisterBlock = imxrt_drivers_iomuxc_10xx::iomuxc_gpr::RegisterBlock<35>; pub use imxrt_drivers_iomuxc_10xx::iomuxc_gpr::GPR; } /// Clock control module. pub mod ccm { pub use imxrt_drivers_ccm_10xx::ahb::pll1::*; pub use imxrt_drivers_ccm_10xx::ccm::{ CCM, LowPowerMode, ahb_clk, clock_gate, flexspi1_clk_axi_semc as flexspi1_clk, ipg_clk, low_power_mode, lpi2c_clk, lpspi_clk, perclk_clk, set_low_power_mode, uart_clk, }; pub use imxrt_drivers_ccm_10xx::ccm_analog::{CCM_ANALOG, pll2, pll3}; pub use imxrt_drivers_ccm_10xx::ccm::{ arm_divider, periph_clk2, pre_periph_clk_pll1 as pre_periph_clk, }; pub use imxrt_drivers_ccm_10xx::ccm_analog::{pll1, pll6}; pub mod gates { use super::clock_gate::Locator::{self, *}; pub const LPSPI1: Locator = Ccgr1Cg00; pub const DMA: Locator = Ccgr5Cg03; pub const PIT: Locator = Ccgr1Cg06; pub const FLEXSPI1: Locator = Ccgr6Cg05; } pub use imxrt_drivers_ccm_10xx::ral; } pub mod dma { pub use imxrt_drivers_edma::dma::edma as controller; pub use imxrt_drivers_edma::dmamux as mux; pub use imxrt_drivers_edma::edma as channel; pub use imxrt_drivers_edma::element; pub mod events { use core::num::NonZero; pub const LPSPI_RX: NonZero = NonZero::new(13).unwrap(); pub const LPSPI_TX: NonZero = NonZero::new(14).unwrap(); } } pub use imxrt_drivers_dcdc as dcdc; pub use imxrt_drivers_enet as enet; pub use imxrt_drivers_flexspi as flexspi; pub use imxrt_drivers_gpio as gpio; pub use imxrt_drivers_lpspi as lpspi; pub use imxrt_drivers_pit as pit; pub use imxrt_drivers_rtwdog as rtwdog; /// Peripheral instances. pub mod instances { ral_registers::instances! { // Safety: The reference manual confirms there are register // blocks at this address matching this shape. unsafe { /// Access CCM registers. pub ccm = 0x400F_C000; /// Access CCM\_ANALOG registers. pub ccm_analog = 0x400D_8000; pub dcdc = 0x4008_0000; pub gpio1 = 0x401b_8000; pub gpio2 = 0x401b_c000; pub gpio3 = 0x401C_0000; pub gpio4 = 0x401C_4000; pub gpio5 = 0x400C_0000; pub iomuxc = 0x401F_8000; pub iomuxc_gpr = 0x400A_C000; pub enet = 0x402D_8000; pub flexspi1 = 0x402A_8000; pub flexspi2 = 0x402A_4000; pub pit = 0x4008_4000; pub lpspi1 = 0x4039_4000; pub lpspi2 = 0x4039_8000; pub lpspi3 = 0x403A_0000; pub dma = 0x400E_8000; pub dmamux = 0x400E_C000; pub wdog3 = 0x400B_C000; } } }