pub struct PsramEdge {
pub part: PsramPart,
pub sys_period_ps: u32,
pub half: u32,
pub slowest_period_ps: u32,
}Expand description
The edge: a part, the system clock that drives the controller, and the number of system cycles
per SCLK half-period. The controller counts cycles, so the rules that set a minimum time — tPU, tRST,
tCPH, tCLK, tACLK — are met for every clock no faster than sys_period_ps, while tCEM, which caps how
long a burst may hold CE# low, must hold at the slowest clock the edge is run at, slowest_period_ps.
Fields§
§part: PsramPart§sys_period_ps: u32§half: u32§slowest_period_ps: u32Implementations§
Source§impl PsramEdge
impl PsramEdge
pub fn new( part: PsramPart, sys_period_ps: u32, half: u32, ) -> Result<Self, PsramUnplaceable>
Sourcepub fn clocked_down_to(
self,
slowest_period_ps: u32,
) -> Result<Self, PsramUnplaceable>
pub fn clocked_down_to( self, slowest_period_ps: u32, ) -> Result<Self, PsramUnplaceable>
The same edge, also run at every clock down to slowest_period_ps: its bursts shrink to what
tCEM allows there.
pub fn sclk_period_ps(&self) -> u64
Sourcepub fn powerup_cycles(&self) -> u32
pub fn powerup_cycles(&self) -> u32
System cycles the controller waits after reset release before its first command (tPU).
Sourcepub fn cph_cycles(&self) -> u32
pub fn cph_cycles(&self) -> u32
System cycles CE# stays high after a burst (tCPH).
Sourcepub fn rst_cycles(&self) -> u32
pub fn rst_cycles(&self) -> u32
System cycles CE# stays high after the Reset command (tRST).
Sourcepub fn init_cycles(&self) -> u64
pub fn init_cycles(&self) -> u64
Rising edges from reset release until req_ready first rises: tPU, then Reset-Enable, Reset and
Enter-QPI as eight-edge SPI bytes, with CE# high for tCPH, tRST and tCPH after them.
Sourcepub fn ce_low_ps(&self, write: bool, words: u32) -> u64
pub fn ce_low_ps(&self, write: bool, words: u32) -> u64
How long CE# is low for a burst at the slowest clock: every SCLK edge, from CE# falling with the first output to CE# rising with the last falling edge.
Sourcepub fn max_words(&self, write: bool) -> u32
pub fn max_words(&self, write: bool) -> u32
The longest burst the part can take: inside tCEM, and no longer than a page.
Sourcepub fn burst_sys_cycles(&self, write: bool, words: u32) -> u64
pub fn burst_sys_cycles(&self, write: bool, words: u32) -> u64
System cycles from the request being accepted to the controller accepting the next one: the burst’s SCLK edges, then CE# high for tCPH (at least one cycle).
Trait Implementations§
impl Copy for PsramEdge
impl Eq for PsramEdge
impl StructuralPartialEq for PsramEdge
Auto Trait Implementations§
impl Freeze for PsramEdge
impl RefUnwindSafe for PsramEdge
impl Send for PsramEdge
impl Sync for PsramEdge
impl Unpin for PsramEdge
impl UnsafeUnpin for PsramEdge
impl UnwindSafe for PsramEdge
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.