diff --git a/Cargo.toml b/Cargo.toml index c3cb1c1..bd68952 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,6 +11,7 @@ edition = "2018" [dependencies] volatile-register = "0.2" aligned = "0.3" +embedded-hal = "0.2" stm32f4xx-hal = { version = "0.8" , optional = true } smoltcp = { version = "0.6.0", default-features = false, features = ["proto-ipv4", "proto-ipv6", "socket-icmp", "socket-udp", "socket-tcp", "log", "verbose", "ethernet"], optional = true } log = "0.4" @@ -21,13 +22,13 @@ smoltcp-phy-all = [ "smoltcp/socket-raw", "smoltcp/socket-udp", "smoltcp/socket-tcp", "smoltcp/proto-ipv4", "smoltcp/proto-ipv6" ] +stm32f4 = ["stm32f4xx-hal"] stm32f407 = ["stm32f4xx-hal/stm32f407"] default = [] [dev-dependencies] cortex-m = "0.5" cortex-m-rt = "0.6" -embedded-hal = "0.2" panic-itm = "0.4" [[example]] diff --git a/examples/tcp_stm32f407.rs b/examples/tcp_stm32f407.rs index 3d3896c..f9b0f1e 100644 --- a/examples/tcp_stm32f407.rs +++ b/examples/tcp_stm32f407.rs @@ -13,7 +13,8 @@ use stm32f4xx_hal::{ gpio::GpioExt, time::U32Ext, stm32::{CorePeripherals, Peripherals}, - spi::Spi + spi::Spi, + time::Hertz }; use enc424j600; use enc424j600::EthController; @@ -129,7 +130,7 @@ fn main() -> ! { let spi_eth_port = Spi::spi1( spi1, (spi1_sck, spi1_miso, spi1_mosi), enc424j600::spi::interfaces::SPI_MODE, - enc424j600::spi::interfaces::SPI_CLOCK.into(), + Hertz(enc424j600::spi::interfaces::SPI_CLOCK_FREQ), clocks); let mut spi_eth = enc424j600::SpiEth::new(spi_eth_port, spi1_nss); // Init diff --git a/examples/tx_stm32f407.rs b/examples/tx_stm32f407.rs index 19d07e2..df81aba 100644 --- a/examples/tx_stm32f407.rs +++ b/examples/tx_stm32f407.rs @@ -13,7 +13,8 @@ use stm32f4xx_hal::{ time::U32Ext, stm32::{CorePeripherals, Peripherals}, delay::Delay, - spi::Spi + spi::Spi, + time::Hertz }; use enc424j600; use enc424j600::EthController; @@ -58,7 +59,7 @@ fn main() -> ! { let spi_eth_port = Spi::spi1( spi1, (spi1_sck, spi1_miso, spi1_mosi), enc424j600::spi::interfaces::SPI_MODE, - enc424j600::spi::interfaces::SPI_CLOCK.into(), + Hertz(enc424j600::spi::interfaces::SPI_CLOCK_FREQ), clocks); let mut spi_eth = enc424j600::SpiEth::new(spi_eth_port, spi1_nss); // Init diff --git a/src/lib.rs b/src/lib.rs index 2ee4573..3bed570 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,12 +1,9 @@ #![no_std] -/// STM32F4xx-HAL specific implementations pub mod spi; -use stm32f4xx_hal::{ - hal::{ - blocking::spi::Transfer, - digital::v2::OutputPin, - } +use embedded_hal::{ + blocking::spi::Transfer, + digital::v2::OutputPin, }; pub mod rx; diff --git a/src/spi.rs b/src/spi.rs index c2d8559..5489967 100644 --- a/src/spi.rs +++ b/src/spi.rs @@ -1,25 +1,20 @@ use core::fmt; -use stm32f4xx_hal::{ - hal::{ - blocking::spi::Transfer, - digital::v2::OutputPin, - }, +use embedded_hal::{ + blocking::spi::Transfer, + digital::v2::OutputPin, spi, }; use crate::rx; pub mod interfaces { - use stm32f4xx_hal::{ - spi, - time::MegaHertz - }; + use embedded_hal::spi; /// Must use SPI mode cpol=0, cpha=0 pub const SPI_MODE: spi::Mode = spi::Mode { polarity: spi::Polarity::IdleLow, phase: spi::Phase::CaptureOnFirstTransition, }; /// Max freq = 14 MHz - pub const SPI_CLOCK: MegaHertz = MegaHertz(14); + pub const SPI_CLOCK_FREQ: u32 = 14_000_000; } pub mod opcodes {