# [ doc = "Serial peripheral interface/Inter-IC sound" ]
# [ repr ( C ) ]
pub struct Spi {
# [ doc = "0x00 - control register 1" ]
pub cr1: Cr1,
# [ doc = "0x04 - control register 2" ]
pub cr2: Cr2,
# [ doc = "0x08 - status register" ]
pub sr: Sr,
# [ doc = "0x0c - data register" ]
pub dr: Dr,
# [ doc = "0x10 - CRC polynomial register" ]
pub crcpr: Crcpr,
# [ doc = "0x14 - RX CRC register" ]
pub rxcrcr: Rxcrcr,
# [ doc = "0x18 - TX CRC register" ]
pub txcrcr: Txcrcr,
# [ doc = "0x1c - I2S configuration register" ]
pub i2scfgr: I2scfgr,
# [ doc = "0x20 - I2S prescaler register" ]
pub i2spr: I2spr,
}
# [ repr ( C ) ]
pub struct Cr1 {
register: ::volatile_register::RW<u32>,
}
impl Cr1 {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&Cr1R, &'w mut Cr1W) -> &'w mut Cr1W
{
let bits = self.register.read();
let r = Cr1R { bits: bits };
let mut w = Cr1W { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> Cr1R {
Cr1R { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut Cr1W) -> &mut Cr1W
{
let mut w = Cr1W::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct Cr1R {
bits: u32,
}
impl Cr1R {
# [ doc = "Bit 15 - Bidirectional data mode enable" ]
pub fn bidimode(&self) -> bool {
const OFFSET: u8 = 15u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 14 - Output enable in bidirectional mode" ]
pub fn bidioe(&self) -> bool {
const OFFSET: u8 = 14u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 13 - Hardware CRC calculation enable" ]
pub fn crcen(&self) -> bool {
const OFFSET: u8 = 13u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 12 - CRC transfer next" ]
pub fn crcnext(&self) -> bool {
const OFFSET: u8 = 12u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 11 - Data frame format" ]
pub fn dff(&self) -> bool {
const OFFSET: u8 = 11u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 10 - Receive only" ]
pub fn rxonly(&self) -> bool {
const OFFSET: u8 = 10u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 9 - Software slave management" ]
pub fn ssm(&self) -> bool {
const OFFSET: u8 = 9u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 8 - Internal slave select" ]
pub fn ssi(&self) -> bool {
const OFFSET: u8 = 8u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 7 - Frame format" ]
pub fn lsbfirst(&self) -> bool {
const OFFSET: u8 = 7u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 6 - SPI enable" ]
pub fn spe(&self) -> bool {
const OFFSET: u8 = 6u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bits 3:5 - Baud rate control" ]
pub fn br(&self) -> u8 {
const MASK: u32 = 7;
const OFFSET: u8 = 3u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bit 2 - Master selection" ]
pub fn mstr(&self) -> bool {
const OFFSET: u8 = 2u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 1 - Clock polarity" ]
pub fn cpol(&self) -> bool {
const OFFSET: u8 = 1u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 0 - Clock phase" ]
pub fn cpha(&self) -> bool {
const OFFSET: u8 = 0u8;
self.bits & (1 << OFFSET) != 0
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct Cr1W {
bits: u32,
}
impl Cr1W {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
Cr1W { bits: 0 }
}
# [ doc = "Bit 15 - Bidirectional data mode enable" ]
pub fn bidimode(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 15u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 14 - Output enable in bidirectional mode" ]
pub fn bidioe(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 14u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 13 - Hardware CRC calculation enable" ]
pub fn crcen(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 13u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 12 - CRC transfer next" ]
pub fn crcnext(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 12u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 11 - Data frame format" ]
pub fn dff(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 11u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 10 - Receive only" ]
pub fn rxonly(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 10u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 9 - Software slave management" ]
pub fn ssm(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 9u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 8 - Internal slave select" ]
pub fn ssi(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 8u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 7 - Frame format" ]
pub fn lsbfirst(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 7u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 6 - SPI enable" ]
pub fn spe(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 6u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bits 3:5 - Baud rate control" ]
pub fn br(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 3u8;
const MASK: u8 = 7;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bit 2 - Master selection" ]
pub fn mstr(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 2u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 1 - Clock polarity" ]
pub fn cpol(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 1u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 0 - Clock phase" ]
pub fn cpha(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 0u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
}
# [ repr ( C ) ]
pub struct Cr2 {
register: ::volatile_register::RW<u32>,
}
impl Cr2 {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&Cr2R, &'w mut Cr2W) -> &'w mut Cr2W
{
let bits = self.register.read();
let r = Cr2R { bits: bits };
let mut w = Cr2W { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> Cr2R {
Cr2R { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut Cr2W) -> &mut Cr2W
{
let mut w = Cr2W::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct Cr2R {
bits: u32,
}
impl Cr2R {
# [ doc = "Bit 0 - Rx buffer DMA enable" ]
pub fn rxdmaen(&self) -> bool {
const OFFSET: u8 = 0u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 1 - Tx buffer DMA enable" ]
pub fn txdmaen(&self) -> bool {
const OFFSET: u8 = 1u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 2 - SS output enable" ]
pub fn ssoe(&self) -> bool {
const OFFSET: u8 = 2u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 3 - NSS pulse management" ]
pub fn nssp(&self) -> bool {
const OFFSET: u8 = 3u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 4 - Frame format" ]
pub fn frf(&self) -> bool {
const OFFSET: u8 = 4u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 5 - Error interrupt enable" ]
pub fn errie(&self) -> bool {
const OFFSET: u8 = 5u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 6 - RX buffer not empty interrupt enable" ]
pub fn rxneie(&self) -> bool {
const OFFSET: u8 = 6u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 7 - Tx buffer empty interrupt enable" ]
pub fn txeie(&self) -> bool {
const OFFSET: u8 = 7u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bits 8:11 - Data size" ]
pub fn ds(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 8u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bit 12 - FIFO reception threshold" ]
pub fn frxth(&self) -> bool {
const OFFSET: u8 = 12u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 13 - Last DMA transfer for reception" ]
pub fn ldma_rx(&self) -> bool {
const OFFSET: u8 = 13u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 14 - Last DMA transfer for transmission" ]
pub fn ldma_tx(&self) -> bool {
const OFFSET: u8 = 14u8;
self.bits & (1 << OFFSET) != 0
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct Cr2W {
bits: u32,
}
impl Cr2W {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
Cr2W { bits: 0 }
}
# [ doc = "Bit 0 - Rx buffer DMA enable" ]
pub fn rxdmaen(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 0u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 1 - Tx buffer DMA enable" ]
pub fn txdmaen(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 1u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 2 - SS output enable" ]
pub fn ssoe(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 2u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 3 - NSS pulse management" ]
pub fn nssp(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 3u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 4 - Frame format" ]
pub fn frf(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 4u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 5 - Error interrupt enable" ]
pub fn errie(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 5u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 6 - RX buffer not empty interrupt enable" ]
pub fn rxneie(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 6u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 7 - Tx buffer empty interrupt enable" ]
pub fn txeie(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 7u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bits 8:11 - Data size" ]
pub fn ds(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 8u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bit 12 - FIFO reception threshold" ]
pub fn frxth(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 12u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 13 - Last DMA transfer for reception" ]
pub fn ldma_rx(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 13u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 14 - Last DMA transfer for transmission" ]
pub fn ldma_tx(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 14u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
}
# [ repr ( C ) ]
pub struct Sr {
register: ::volatile_register::RW<u32>,
}
impl Sr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&SrR, &'w mut SrW) -> &'w mut SrW
{
let bits = self.register.read();
let r = SrR { bits: bits };
let mut w = SrW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> SrR {
SrR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut SrW) -> &mut SrW
{
let mut w = SrW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct SrR {
bits: u32,
}
impl SrR {
# [ doc = "Bit 0 - Receive buffer not empty" ]
pub fn rxne(&self) -> bool {
const OFFSET: u8 = 0u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 1 - Transmit buffer empty" ]
pub fn txe(&self) -> bool {
const OFFSET: u8 = 1u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 2 - Channel side" ]
pub fn chside(&self) -> bool {
const OFFSET: u8 = 2u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 3 - Underrun flag" ]
pub fn udr(&self) -> bool {
const OFFSET: u8 = 3u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 4 - CRC error flag" ]
pub fn crcerr(&self) -> bool {
const OFFSET: u8 = 4u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 5 - Mode fault" ]
pub fn modf(&self) -> bool {
const OFFSET: u8 = 5u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 6 - Overrun flag" ]
pub fn ovr(&self) -> bool {
const OFFSET: u8 = 6u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 7 - Busy flag" ]
pub fn bsy(&self) -> bool {
const OFFSET: u8 = 7u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 8 - TI frame format error" ]
pub fn tifrfe(&self) -> bool {
const OFFSET: u8 = 8u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bits 9:10 - FIFO reception level" ]
pub fn frlvl(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 9u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 11:12 - FIFO transmission level" ]
pub fn ftlvl(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 11u8;
((self.bits >> OFFSET) & MASK) as u8
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct SrW {
bits: u32,
}
impl SrW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
SrW { bits: 2 }
}
# [ doc = "Bit 4 - CRC error flag" ]
pub fn crcerr(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 4u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
}
# [ repr ( C ) ]
pub struct Dr {
register: ::volatile_register::RW<u32>,
}
impl Dr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&DrR, &'w mut DrW) -> &'w mut DrW
{
let bits = self.register.read();
let r = DrR { bits: bits };
let mut w = DrW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> DrR {
DrR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut DrW) -> &mut DrW
{
let mut w = DrW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct DrR {
bits: u32,
}
impl DrR {
# [ doc = "Bits 0:15 - Data register" ]
pub fn dr(&self) -> u16 {
const MASK: u32 = 65535;
const OFFSET: u8 = 0u8;
((self.bits >> OFFSET) & MASK) as u16
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct DrW {
bits: u32,
}
impl DrW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
DrW { bits: 0 }
}
# [ doc = "Bits 0:15 - Data register" ]
pub fn dr(&mut self, value: u16) -> &mut Self {
const OFFSET: u8 = 0u8;
const MASK: u16 = 65535;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
}
# [ repr ( C ) ]
pub struct Crcpr {
register: ::volatile_register::RW<u32>,
}
impl Crcpr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&CrcprR, &'w mut CrcprW) -> &'w mut CrcprW
{
let bits = self.register.read();
let r = CrcprR { bits: bits };
let mut w = CrcprW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> CrcprR {
CrcprR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut CrcprW) -> &mut CrcprW
{
let mut w = CrcprW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct CrcprR {
bits: u32,
}
impl CrcprR {
# [ doc = "Bits 0:15 - CRC polynomial register" ]
pub fn crcpoly(&self) -> u16 {
const MASK: u32 = 65535;
const OFFSET: u8 = 0u8;
((self.bits >> OFFSET) & MASK) as u16
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct CrcprW {
bits: u32,
}
impl CrcprW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
CrcprW { bits: 7 }
}
# [ doc = "Bits 0:15 - CRC polynomial register" ]
pub fn crcpoly(&mut self, value: u16) -> &mut Self {
const OFFSET: u8 = 0u8;
const MASK: u16 = 65535;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
}
# [ repr ( C ) ]
pub struct Rxcrcr {
register: ::volatile_register::RO<u32>,
}
impl Rxcrcr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub fn read(&self) -> RxcrcrR {
RxcrcrR { bits: self.register.read() }
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct RxcrcrR {
bits: u32,
}
impl RxcrcrR {
# [ doc = "Bits 0:15 - Rx CRC register" ]
pub fn rx_crc(&self) -> u16 {
const MASK: u32 = 65535;
const OFFSET: u8 = 0u8;
((self.bits >> OFFSET) & MASK) as u16
}
}
# [ repr ( C ) ]
pub struct Txcrcr {
register: ::volatile_register::RO<u32>,
}
impl Txcrcr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub fn read(&self) -> TxcrcrR {
TxcrcrR { bits: self.register.read() }
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct TxcrcrR {
bits: u32,
}
impl TxcrcrR {
# [ doc = "Bits 0:15 - Tx CRC register" ]
pub fn tx_crc(&self) -> u16 {
const MASK: u32 = 65535;
const OFFSET: u8 = 0u8;
((self.bits >> OFFSET) & MASK) as u16
}
}
# [ repr ( C ) ]
pub struct I2scfgr {
register: ::volatile_register::RW<u32>,
}
impl I2scfgr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&I2scfgrR, &'w mut I2scfgrW) -> &'w mut I2scfgrW
{
let bits = self.register.read();
let r = I2scfgrR { bits: bits };
let mut w = I2scfgrW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> I2scfgrR {
I2scfgrR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut I2scfgrW) -> &mut I2scfgrW
{
let mut w = I2scfgrW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct I2scfgrR {
bits: u32,
}
impl I2scfgrR {
# [ doc = "Bit 11 - I2S mode selection" ]
pub fn i2smod(&self) -> bool {
const OFFSET: u8 = 11u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 10 - I2S Enable" ]
pub fn i2se(&self) -> bool {
const OFFSET: u8 = 10u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bits 8:9 - I2S configuration mode" ]
pub fn i2scfg(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 8u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bit 7 - PCM frame synchronization" ]
pub fn pcmsync(&self) -> bool {
const OFFSET: u8 = 7u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bits 4:5 - I2S standard selection" ]
pub fn i2sstd(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 4u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bit 3 - Steady state clock polarity" ]
pub fn ckpol(&self) -> bool {
const OFFSET: u8 = 3u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bits 1:2 - Data length to be transferred" ]
pub fn datlen(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 1u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bit 0 - Channel length (number of bits per audio channel)" ]
pub fn chlen(&self) -> bool {
const OFFSET: u8 = 0u8;
self.bits & (1 << OFFSET) != 0
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct I2scfgrW {
bits: u32,
}
impl I2scfgrW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
I2scfgrW { bits: 0 }
}
# [ doc = "Bit 11 - I2S mode selection" ]
pub fn i2smod(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 11u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 10 - I2S Enable" ]
pub fn i2se(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 10u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bits 8:9 - I2S configuration mode" ]
pub fn i2scfg(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 8u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bit 7 - PCM frame synchronization" ]
pub fn pcmsync(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 7u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bits 4:5 - I2S standard selection" ]
pub fn i2sstd(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 4u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bit 3 - Steady state clock polarity" ]
pub fn ckpol(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 3u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bits 1:2 - Data length to be transferred" ]
pub fn datlen(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 1u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bit 0 - Channel length (number of bits per audio channel)" ]
pub fn chlen(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 0u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
}
# [ repr ( C ) ]
pub struct I2spr {
register: ::volatile_register::RW<u32>,
}
impl I2spr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&I2sprR, &'w mut I2sprW) -> &'w mut I2sprW
{
let bits = self.register.read();
let r = I2sprR { bits: bits };
let mut w = I2sprW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> I2sprR {
I2sprR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut I2sprW) -> &mut I2sprW
{
let mut w = I2sprW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct I2sprR {
bits: u32,
}
impl I2sprR {
# [ doc = "Bit 9 - Master clock output enable" ]
pub fn mckoe(&self) -> bool {
const OFFSET: u8 = 9u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 8 - Odd factor for the prescaler" ]
pub fn odd(&self) -> bool {
const OFFSET: u8 = 8u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bits 0:7 - I2S Linear prescaler" ]
pub fn i2sdiv(&self) -> u8 {
const MASK: u32 = 255;
const OFFSET: u8 = 0u8;
((self.bits >> OFFSET) & MASK) as u8
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct I2sprW {
bits: u32,
}
impl I2sprW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
I2sprW { bits: 16 }
}
# [ doc = "Bit 9 - Master clock output enable" ]
pub fn mckoe(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 9u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 8 - Odd factor for the prescaler" ]
pub fn odd(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 8u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bits 0:7 - I2S Linear prescaler" ]
pub fn i2sdiv(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 0u8;
const MASK: u8 = 255;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
}