atsamd21j/sercom0/
i2cs.rs

1#[repr(C)]
2#[doc = "I2C Slave Mode"]
3#[doc(alias = "I2CS")]
4pub struct I2cs {
5    ctrla: Ctrla,
6    ctrlb: Ctrlb,
7    _reserved2: [u8; 0x0c],
8    intenclr: Intenclr,
9    _reserved3: [u8; 0x01],
10    intenset: Intenset,
11    _reserved4: [u8; 0x01],
12    intflag: Intflag,
13    _reserved5: [u8; 0x01],
14    status: Status,
15    syncbusy: Syncbusy,
16    _reserved7: [u8; 0x04],
17    addr: Addr,
18    data: Data,
19}
20impl I2cs {
21    #[doc = "0x00 - I2CS Control A"]
22    #[inline(always)]
23    pub const fn ctrla(&self) -> &Ctrla {
24        &self.ctrla
25    }
26    #[doc = "0x04 - I2CS Control B"]
27    #[inline(always)]
28    pub const fn ctrlb(&self) -> &Ctrlb {
29        &self.ctrlb
30    }
31    #[doc = "0x14 - I2CS Interrupt Enable Clear"]
32    #[inline(always)]
33    pub const fn intenclr(&self) -> &Intenclr {
34        &self.intenclr
35    }
36    #[doc = "0x16 - I2CS Interrupt Enable Set"]
37    #[inline(always)]
38    pub const fn intenset(&self) -> &Intenset {
39        &self.intenset
40    }
41    #[doc = "0x18 - I2CS Interrupt Flag Status and Clear"]
42    #[inline(always)]
43    pub const fn intflag(&self) -> &Intflag {
44        &self.intflag
45    }
46    #[doc = "0x1a - I2CS Status"]
47    #[inline(always)]
48    pub const fn status(&self) -> &Status {
49        &self.status
50    }
51    #[doc = "0x1c - I2CS Syncbusy"]
52    #[inline(always)]
53    pub const fn syncbusy(&self) -> &Syncbusy {
54        &self.syncbusy
55    }
56    #[doc = "0x24 - I2CS Address"]
57    #[inline(always)]
58    pub const fn addr(&self) -> &Addr {
59        &self.addr
60    }
61    #[doc = "0x28 - I2CS Data"]
62    #[inline(always)]
63    pub const fn data(&self) -> &Data {
64        &self.data
65    }
66}
67#[doc = "CTRLA (rw) register accessor: I2CS Control A\n\nYou can [`read`](crate::Reg::read) this register and get [`ctrla::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`ctrla::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ctrla`]
68module"]
69#[doc(alias = "CTRLA")]
70pub type Ctrla = crate::Reg<ctrla::CtrlaSpec>;
71#[doc = "I2CS Control A"]
72pub mod ctrla;
73#[doc = "CTRLB (rw) register accessor: I2CS Control B\n\nYou can [`read`](crate::Reg::read) this register and get [`ctrlb::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`ctrlb::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ctrlb`]
74module"]
75#[doc(alias = "CTRLB")]
76pub type Ctrlb = crate::Reg<ctrlb::CtrlbSpec>;
77#[doc = "I2CS Control B"]
78pub mod ctrlb;
79#[doc = "INTENCLR (rw) register accessor: I2CS Interrupt Enable Clear\n\nYou can [`read`](crate::Reg::read) this register and get [`intenclr::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`intenclr::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@intenclr`]
80module"]
81#[doc(alias = "INTENCLR")]
82pub type Intenclr = crate::Reg<intenclr::IntenclrSpec>;
83#[doc = "I2CS Interrupt Enable Clear"]
84pub mod intenclr;
85#[doc = "INTENSET (rw) register accessor: I2CS Interrupt Enable Set\n\nYou can [`read`](crate::Reg::read) this register and get [`intenset::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`intenset::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@intenset`]
86module"]
87#[doc(alias = "INTENSET")]
88pub type Intenset = crate::Reg<intenset::IntensetSpec>;
89#[doc = "I2CS Interrupt Enable Set"]
90pub mod intenset;
91#[doc = "INTFLAG (rw) register accessor: I2CS Interrupt Flag Status and Clear\n\nYou can [`read`](crate::Reg::read) this register and get [`intflag::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`intflag::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@intflag`]
92module"]
93#[doc(alias = "INTFLAG")]
94pub type Intflag = crate::Reg<intflag::IntflagSpec>;
95#[doc = "I2CS Interrupt Flag Status and Clear"]
96pub mod intflag;
97#[doc = "STATUS (rw) register accessor: I2CS Status\n\nYou can [`read`](crate::Reg::read) this register and get [`status::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`status::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@status`]
98module"]
99#[doc(alias = "STATUS")]
100pub type Status = crate::Reg<status::StatusSpec>;
101#[doc = "I2CS Status"]
102pub mod status;
103#[doc = "SYNCBUSY (r) register accessor: I2CS Syncbusy\n\nYou can [`read`](crate::Reg::read) this register and get [`syncbusy::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@syncbusy`]
104module"]
105#[doc(alias = "SYNCBUSY")]
106pub type Syncbusy = crate::Reg<syncbusy::SyncbusySpec>;
107#[doc = "I2CS Syncbusy"]
108pub mod syncbusy;
109#[doc = "ADDR (rw) register accessor: I2CS Address\n\nYou can [`read`](crate::Reg::read) this register and get [`addr::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`addr::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@addr`]
110module"]
111#[doc(alias = "ADDR")]
112pub type Addr = crate::Reg<addr::AddrSpec>;
113#[doc = "I2CS Address"]
114pub mod addr;
115#[doc = "DATA (rw) register accessor: I2CS Data\n\nYou can [`read`](crate::Reg::read) this register and get [`data::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`data::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@data`]
116module"]
117#[doc(alias = "DATA")]
118pub type Data = crate::Reg<data::DataSpec>;
119#[doc = "I2CS Data"]
120pub mod data;