Compare commits

...

3 Commits

Author SHA1 Message Date
occheung 26dabd4dc0 spi: add CS delay 2021-01-18 15:33:27 +08:00
occheung c4b62cc238 lib: derive debug for error for unwrapping 2021-01-18 15:33:03 +08:00
occheung 356c3aefe2 lib: reduce stack usage 2021-01-18 15:32:32 +08:00
2 changed files with 6 additions and 1 deletions

View File

@ -16,7 +16,7 @@ pub mod tx;
pub mod smoltcp_phy; pub mod smoltcp_phy;
/// Max raw frame array size /// Max raw frame array size
pub const RAW_FRAME_LENGTH_MAX: usize = 0x1000; pub const RAW_FRAME_LENGTH_MAX: usize = 1518;
pub trait EthController { pub trait EthController {
fn init_dev(&mut self, delay: &mut impl DelayUs<u16>) -> Result<(), EthControllerError>; fn init_dev(&mut self, delay: &mut impl DelayUs<u16>) -> Result<(), EthControllerError>;
@ -29,6 +29,7 @@ pub trait EthController {
} }
/// TODO: Improve these error types /// TODO: Improve these error types
#[derive(Debug)]
pub enum EthControllerError { pub enum EthControllerError {
SpiPortError, SpiPortError,
GeneralError, GeneralError,

View File

@ -131,13 +131,17 @@ impl <SPI: Transfer<u8>,
match self.spi.transfer(&mut buf) { match self.spi.transfer(&mut buf) {
Ok(_) => { Ok(_) => {
// Disable chip select // Disable chip select
cortex_m::asm::delay(10_u32);
self.nss.set_high(); self.nss.set_high();
cortex_m::asm::delay(5_u32);
Ok(buf[2]) Ok(buf[2])
}, },
// TODO: Maybe too naive? // TODO: Maybe too naive?
Err(_) => { Err(_) => {
// Disable chip select // Disable chip select
cortex_m::asm::delay(10_u32);
self.nss.set_high(); self.nss.set_high();
cortex_m::asm::delay(5_u32);
Err(SpiPortError::TransferError) Err(SpiPortError::TransferError)
} }
} }