pub type IC_DATA_CMD = Reg<IC_DATA_CMD_SPEC>;
Expand description
IC_DATA_CMD (rw) register accessor: I2C Rx/Tx Data Buffer and Command Register; this is the register the CPU writes to when filling the TX FIFO and the CPU reads from when retrieving bytes from RX FIFO.
The size of the register changes as follows:
Write: - 11 bits when IC_EMPTYFIFO_HOLD_MASTER_EN=1 - 9 bits when IC_EMPTYFIFO_HOLD_MASTER_EN=0 Read: - 12 bits when IC_FIRST_DATA_BYTE_STATUS = 1 - 8 bits when IC_FIRST_DATA_BYTE_STATUS = 0 Note: In order for the DW_apb_i2c to continue acknowledging reads, a read command should be written for every byte that is to be received; otherwise the DW_apb_i2c will stop acknowledging.
You can read
this register and get ic_data_cmd::R
. You can reset
, write
, write_with_zero
this register using ic_data_cmd::W
. You can also modify
this register. See API.
For information about available fields see ic_data_cmd
module
Aliased Type§
struct IC_DATA_CMD { /* private fields */ }
Implementations
Source§impl<REG: Resettable + Writable> Reg<REG>
impl<REG: Resettable + Writable> Reg<REG>
Sourcepub fn reset(&self)
pub fn reset(&self)
Writes the reset value to Writable
register.
Resets the register to its initial state.
Sourcepub fn write<F>(&self, f: F)
pub fn write<F>(&self, f: F)
Writes bits to a Writable
register.
You can write raw bits into a register:
periph.reg.write(|w| unsafe { w.bits(rawbits) });
or write only the fields you need:
periph.reg.write(|w| w
.field1().bits(newfield1bits)
.field2().set_bit()
.field3().variant(VARIANT)
);
or an alternative way of saying the same:
periph.reg.write(|w| {
w.field1().bits(newfield1bits);
w.field2().set_bit();
w.field3().variant(VARIANT)
});
In the latter case, other fields will be set to their reset value.
Source§impl<REG: Readable + Writable> Reg<REG>
impl<REG: Readable + Writable> Reg<REG>
Sourcepub fn modify<F>(&self, f: F)
pub fn modify<F>(&self, f: F)
Modifies the contents of the register by reading and then writing it.
E.g. to do a read-modify-write sequence to change parts of a register:
periph.reg.modify(|r, w| unsafe { w.bits(
r.bits() | 3
) });
or
periph.reg.modify(|_, w| w
.field1().bits(newfield1bits)
.field2().set_bit()
.field3().variant(VARIANT)
);
or an alternative way of saying the same:
periph.reg.modify(|_, w| {
w.field1().bits(newfield1bits);
w.field2().set_bit();
w.field3().variant(VARIANT)
});
Other fields will have the value they had before the call to modify
.
Source§impl<REG: RegisterSpec> Reg<REG>
impl<REG: RegisterSpec> Reg<REG>
Source§impl<REG: Readable> Reg<REG>
impl<REG: Readable> Reg<REG>
Sourcepub fn read(&self) -> R<REG>
pub fn read(&self) -> R<REG>
Reads the contents of a Readable
register.
You can read the raw contents of a register by using bits
:
let bits = periph.reg.read().bits();
or get the content of a particular field of a register:
let reader = periph.reg.read();
let bits = reader.field1().bits();
let flag = reader.field2().bit_is_set();