pub struct Ethernet<'d, T: Instance, P: Phy> { /* private fields */ }Expand description
Ethernet driver.
Implementations§
Source§impl<'d, T: Instance, SMA: Instance> Ethernet<'d, T, GenericPhy<Sma<'d, SMA>>>
impl<'d, T: Instance, SMA: Instance> Ethernet<'d, T, GenericPhy<Sma<'d, SMA>>>
Sourcepub fn new_rgmii<const TX: usize, const RX: usize>(
queue: &'d mut PacketQueue<TX, RX>,
peri: Peri<'d, T>,
irq: impl Binding<ETH1, InterruptHandler> + 'd,
gtx_clk: Peri<'d, impl RGMIIGTXClkPin<T>>,
tx_ctl: Peri<'d, impl RGMIITXCtlPin<T>>,
tx_d0: Peri<'d, impl RGMIITXD0Pin<T>>,
tx_d1: Peri<'d, impl RGMIITXD1Pin<T>>,
tx_d2: Peri<'d, impl RGMIITXD2Pin<T>>,
tx_d3: Peri<'d, impl RGMIITXD3Pin<T>>,
rx_clk: Peri<'d, impl RGMIIRXClkPin<T>>,
rx_ctl: Peri<'d, impl RGMIIRXCtlPin<T>>,
rx_d0: Peri<'d, impl RGMIIRXD0Pin<T>>,
rx_d1: Peri<'d, impl RGMIIRXD1Pin<T>>,
rx_d2: Peri<'d, impl RGMIIRXD2Pin<T>>,
rx_d3: Peri<'d, impl RGMIIRXD3Pin<T>>,
clk125: Peri<'d, impl RGMIICLK125Pin<T>>,
mac_addr: [u8; 6],
sma: Peri<'d, SMA>,
mdio: Peri<'d, impl MDIOPin<SMA>>,
mdc: Peri<'d, impl MDCPin<SMA>>,
) -> Self
pub fn new_rgmii<const TX: usize, const RX: usize>( queue: &'d mut PacketQueue<TX, RX>, peri: Peri<'d, T>, irq: impl Binding<ETH1, InterruptHandler> + 'd, gtx_clk: Peri<'d, impl RGMIIGTXClkPin<T>>, tx_ctl: Peri<'d, impl RGMIITXCtlPin<T>>, tx_d0: Peri<'d, impl RGMIITXD0Pin<T>>, tx_d1: Peri<'d, impl RGMIITXD1Pin<T>>, tx_d2: Peri<'d, impl RGMIITXD2Pin<T>>, tx_d3: Peri<'d, impl RGMIITXD3Pin<T>>, rx_clk: Peri<'d, impl RGMIIRXClkPin<T>>, rx_ctl: Peri<'d, impl RGMIIRXCtlPin<T>>, rx_d0: Peri<'d, impl RGMIIRXD0Pin<T>>, rx_d1: Peri<'d, impl RGMIIRXD1Pin<T>>, rx_d2: Peri<'d, impl RGMIIRXD2Pin<T>>, rx_d3: Peri<'d, impl RGMIIRXD3Pin<T>>, clk125: Peri<'d, impl RGMIICLK125Pin<T>>, mac_addr: [u8; 6], sma: Peri<'d, SMA>, mdio: Peri<'d, impl MDIOPin<SMA>>, mdc: Peri<'d, impl MDCPin<SMA>>, ) -> Self
Create a new RGMII ethernet driver using 13 pins.
The MAC and PHY are fixed at 100 Mbit/s full duplex, so the link partner must support it.
This function uses a GenericPhy::new_auto as PHY, created using the
provided SMA, and MDIO and MDC pins.
See Ethernet::new_rgmii_with_phy for creating an RGMII ethernet
driver with a non-standard PHY.
Source§impl<'d, T: Instance, P: Phy> Ethernet<'d, T, P>
impl<'d, T: Instance, P: Phy> Ethernet<'d, T, P>
Sourcepub fn new_rgmii_with_phy<const TX: usize, const RX: usize>(
queue: &'d mut PacketQueue<TX, RX>,
peri: Peri<'d, T>,
irq: impl Binding<ETH1, InterruptHandler> + 'd,
gtx_clk: Peri<'d, impl RGMIIGTXClkPin<T>>,
tx_ctl: Peri<'d, impl RGMIITXCtlPin<T>>,
tx_d0: Peri<'d, impl RGMIITXD0Pin<T>>,
tx_d1: Peri<'d, impl RGMIITXD1Pin<T>>,
tx_d2: Peri<'d, impl RGMIITXD2Pin<T>>,
tx_d3: Peri<'d, impl RGMIITXD3Pin<T>>,
rx_clk: Peri<'d, impl RGMIIRXClkPin<T>>,
rx_ctl: Peri<'d, impl RGMIIRXCtlPin<T>>,
rx_d0: Peri<'d, impl RGMIIRXD0Pin<T>>,
rx_d1: Peri<'d, impl RGMIIRXD1Pin<T>>,
rx_d2: Peri<'d, impl RGMIIRXD2Pin<T>>,
rx_d3: Peri<'d, impl RGMIIRXD3Pin<T>>,
clk125: Peri<'d, impl RGMIICLK125Pin<T>>,
mac_addr: [u8; 6],
phy: P,
) -> Self
pub fn new_rgmii_with_phy<const TX: usize, const RX: usize>( queue: &'d mut PacketQueue<TX, RX>, peri: Peri<'d, T>, irq: impl Binding<ETH1, InterruptHandler> + 'd, gtx_clk: Peri<'d, impl RGMIIGTXClkPin<T>>, tx_ctl: Peri<'d, impl RGMIITXCtlPin<T>>, tx_d0: Peri<'d, impl RGMIITXD0Pin<T>>, tx_d1: Peri<'d, impl RGMIITXD1Pin<T>>, tx_d2: Peri<'d, impl RGMIITXD2Pin<T>>, tx_d3: Peri<'d, impl RGMIITXD3Pin<T>>, rx_clk: Peri<'d, impl RGMIIRXClkPin<T>>, rx_ctl: Peri<'d, impl RGMIIRXCtlPin<T>>, rx_d0: Peri<'d, impl RGMIIRXD0Pin<T>>, rx_d1: Peri<'d, impl RGMIIRXD1Pin<T>>, rx_d2: Peri<'d, impl RGMIIRXD2Pin<T>>, rx_d3: Peri<'d, impl RGMIIRXD3Pin<T>>, clk125: Peri<'d, impl RGMIICLK125Pin<T>>, mac_addr: [u8; 6], phy: P, ) -> Self
Create a new RGMII ethernet driver using 13 pins.
Trait Implementations§
Source§impl<'d, T: Instance, P: Phy> Driver for Ethernet<'d, T, P>
impl<'d, T: Instance, P: Phy> Driver for Ethernet<'d, T, P>
Source§type TxToken<'a> = TxToken<'a, 'd>
where
Self: 'a
type TxToken<'a> = TxToken<'a, 'd> where Self: 'a
A token to transmit a single network packet.
Source§fn receive(
&mut self,
cx: &mut Context<'_>,
) -> Option<(Self::RxToken<'_>, Self::TxToken<'_>)>
fn receive( &mut self, cx: &mut Context<'_>, ) -> Option<(Self::RxToken<'_>, Self::TxToken<'_>)>
Construct a token pair consisting of one receive token and one transmit token. Read more
Source§fn transmit(&mut self, cx: &mut Context<'_>) -> Option<Self::TxToken<'_>>
fn transmit(&mut self, cx: &mut Context<'_>) -> Option<Self::TxToken<'_>>
Construct a transmit token. Read more
Source§fn capabilities(&self) -> Capabilities
fn capabilities(&self) -> Capabilities
Get a description of device capabilities.
Source§fn hardware_address(&self) -> HardwareAddress
fn hardware_address(&self) -> HardwareAddress
Get the device’s hardware address. Read more
Auto Trait Implementations§
impl<'d, T, P> Freeze for Ethernet<'d, T, P>
impl<'d, T, P> !RefUnwindSafe for Ethernet<'d, T, P>
impl<'d, T, P> Send for Ethernet<'d, T, P>where
P: Send,
impl<'d, T, P> !Sync for Ethernet<'d, T, P>
impl<'d, T, P> Unpin for Ethernet<'d, T, P>
impl<'d, T, P> !UnwindSafe for Ethernet<'d, T, P>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> ToMutAligned for Twhere
T: ?Sized,
impl<T> ToMutAligned for Twhere
T: ?Sized,
Source§fn to_mut_aligned<A>(&mut self) -> &mut Aligned<A, <T as ToMutAligned>::Element>where
A: Alignment,
fn to_mut_aligned<A>(&mut self) -> &mut Aligned<A, <T as ToMutAligned>::Element>where
A: Alignment,
Create a type-checked aligned value from a value that is aligned.