embassy-stm32

Crates

git

Versions

stm32h563ri

Flavors

embassy_stm32::eth

Struct Ethernet

source
pub struct Ethernet<'d, T: Instance, P: PHY> { /* private fields */ }
Expand description

Ethernet driver.

Implementations§

source§

impl<'d, T: Instance, P: PHY> Ethernet<'d, T, P>

source

pub fn new<const TX: usize, const RX: usize>( queue: &'d mut PacketQueue<TX, RX>, peri: impl Peripheral<P = T> + 'd, irq: impl Binding<ETH, InterruptHandler> + 'd, ref_clk: impl Peripheral<P = impl RefClkPin<T>> + 'd, mdio: impl Peripheral<P = impl MDIOPin<T>> + 'd, mdc: impl Peripheral<P = impl MDCPin<T>> + 'd, crs: impl Peripheral<P = impl CRSPin<T>> + 'd, rx_d0: impl Peripheral<P = impl RXD0Pin<T>> + 'd, rx_d1: impl Peripheral<P = impl RXD1Pin<T>> + 'd, tx_d0: impl Peripheral<P = impl TXD0Pin<T>> + 'd, tx_d1: impl Peripheral<P = impl TXD1Pin<T>> + 'd, tx_en: impl Peripheral<P = impl TXEnPin<T>> + 'd, phy: P, mac_addr: [u8; 6], ) -> Self

Create a new RMII ethernet driver using 9 pins.

source

pub fn new_mii<const TX: usize, const RX: usize>( queue: &'d mut PacketQueue<TX, RX>, peri: impl Peripheral<P = T> + 'd, irq: impl Binding<ETH, InterruptHandler> + 'd, rx_clk: impl Peripheral<P = impl RXClkPin<T>> + 'd, tx_clk: impl Peripheral<P = impl TXClkPin<T>> + 'd, mdio: impl Peripheral<P = impl MDIOPin<T>> + 'd, mdc: impl Peripheral<P = impl MDCPin<T>> + 'd, rxdv: impl Peripheral<P = impl RXDVPin<T>> + 'd, rx_d0: impl Peripheral<P = impl RXD0Pin<T>> + 'd, rx_d1: impl Peripheral<P = impl RXD1Pin<T>> + 'd, rx_d2: impl Peripheral<P = impl RXD2Pin<T>> + 'd, rx_d3: impl Peripheral<P = impl RXD3Pin<T>> + 'd, tx_d0: impl Peripheral<P = impl TXD0Pin<T>> + 'd, tx_d1: impl Peripheral<P = impl TXD1Pin<T>> + 'd, tx_d2: impl Peripheral<P = impl TXD2Pin<T>> + 'd, tx_d3: impl Peripheral<P = impl TXD3Pin<T>> + 'd, tx_en: impl Peripheral<P = impl TXEnPin<T>> + 'd, phy: P, mac_addr: [u8; 6], ) -> Self

Create a new MII ethernet driver using 14 pins.

source§

impl<'d, T: Instance, P: PHY> Ethernet<'d, T, P>

source

pub unsafe fn station_management(&mut self) -> &mut impl StationManagement

Directly expose the SMI interface used by the Ethernet driver.

This can be used to for example configure special PHY registers for compliance testing.

§Safety

Revert any temporary PHY register changes such as to enable test modes before handing the Ethernet device over to the networking stack otherwise things likely won’t work.

Trait Implementations§

source§

impl<'d, T: Instance, P: PHY> Driver for Ethernet<'d, T, P>

source§

type RxToken<'a> = RxToken<'a, 'd> where Self: 'a

A token to receive a single network packet.
source§

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<'_>)>

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<'_>>

Construct a transmit token. Read more
source§

fn capabilities(&self) -> Capabilities

Get a description of device capabilities.
Get the link state. Read more
source§

fn hardware_address(&self) -> HardwareAddress

Get the device’s hardware address. Read more
source§

impl<'d, T: Instance, P: PHY> Drop for Ethernet<'d, T, P>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'d, T, P> Freeze for Ethernet<'d, T, P>
where P: Freeze, T: Freeze,

§

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>
where P: Unpin, T: Unpin,

§

impl<'d, T, P> !UnwindSafe for Ethernet<'d, T, P>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.