atsamd51j/sercom0/
i2cm.rs

1#[repr(C)]
2#[doc = "I2C Master Mode"]
3#[doc(alias = "I2CM")]
4pub struct I2cm {
5    ctrla: Ctrla,
6    ctrlb: Ctrlb,
7    ctrlc: Ctrlc,
8    baud: Baud,
9    _reserved4: [u8; 0x04],
10    intenclr: Intenclr,
11    _reserved5: [u8; 0x01],
12    intenset: Intenset,
13    _reserved6: [u8; 0x01],
14    intflag: Intflag,
15    _reserved7: [u8; 0x01],
16    status: Status,
17    syncbusy: Syncbusy,
18    _reserved9: [u8; 0x04],
19    addr: Addr,
20    data: Data,
21    _reserved11: [u8; 0x04],
22    dbgctrl: Dbgctrl,
23}
24impl I2cm {
25    #[doc = "0x00 - I2CM Control A"]
26    #[inline(always)]
27    pub const fn ctrla(&self) -> &Ctrla {
28        &self.ctrla
29    }
30    #[doc = "0x04 - I2CM Control B"]
31    #[inline(always)]
32    pub const fn ctrlb(&self) -> &Ctrlb {
33        &self.ctrlb
34    }
35    #[doc = "0x08 - I2CM Control C"]
36    #[inline(always)]
37    pub const fn ctrlc(&self) -> &Ctrlc {
38        &self.ctrlc
39    }
40    #[doc = "0x0c - I2CM Baud Rate"]
41    #[inline(always)]
42    pub const fn baud(&self) -> &Baud {
43        &self.baud
44    }
45    #[doc = "0x14 - I2CM Interrupt Enable Clear"]
46    #[inline(always)]
47    pub const fn intenclr(&self) -> &Intenclr {
48        &self.intenclr
49    }
50    #[doc = "0x16 - I2CM Interrupt Enable Set"]
51    #[inline(always)]
52    pub const fn intenset(&self) -> &Intenset {
53        &self.intenset
54    }
55    #[doc = "0x18 - I2CM Interrupt Flag Status and Clear"]
56    #[inline(always)]
57    pub const fn intflag(&self) -> &Intflag {
58        &self.intflag
59    }
60    #[doc = "0x1a - I2CM Status"]
61    #[inline(always)]
62    pub const fn status(&self) -> &Status {
63        &self.status
64    }
65    #[doc = "0x1c - I2CM Synchronization Busy"]
66    #[inline(always)]
67    pub const fn syncbusy(&self) -> &Syncbusy {
68        &self.syncbusy
69    }
70    #[doc = "0x24 - I2CM Address"]
71    #[inline(always)]
72    pub const fn addr(&self) -> &Addr {
73        &self.addr
74    }
75    #[doc = "0x28 - I2CM Data"]
76    #[inline(always)]
77    pub const fn data(&self) -> &Data {
78        &self.data
79    }
80    #[doc = "0x30 - I2CM Debug Control"]
81    #[inline(always)]
82    pub const fn dbgctrl(&self) -> &Dbgctrl {
83        &self.dbgctrl
84    }
85}
86#[doc = "CTRLA (rw) register accessor: I2CM 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`]
87module"]
88#[doc(alias = "CTRLA")]
89pub type Ctrla = crate::Reg<ctrla::CtrlaSpec>;
90#[doc = "I2CM Control A"]
91pub mod ctrla;
92#[doc = "CTRLB (rw) register accessor: I2CM 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`]
93module"]
94#[doc(alias = "CTRLB")]
95pub type Ctrlb = crate::Reg<ctrlb::CtrlbSpec>;
96#[doc = "I2CM Control B"]
97pub mod ctrlb;
98#[doc = "CTRLC (rw) register accessor: I2CM Control C\n\nYou can [`read`](crate::Reg::read) this register and get [`ctrlc::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`ctrlc::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@ctrlc`]
99module"]
100#[doc(alias = "CTRLC")]
101pub type Ctrlc = crate::Reg<ctrlc::CtrlcSpec>;
102#[doc = "I2CM Control C"]
103pub mod ctrlc;
104#[doc = "BAUD (rw) register accessor: I2CM Baud Rate\n\nYou can [`read`](crate::Reg::read) this register and get [`baud::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`baud::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@baud`]
105module"]
106#[doc(alias = "BAUD")]
107pub type Baud = crate::Reg<baud::BaudSpec>;
108#[doc = "I2CM Baud Rate"]
109pub mod baud;
110#[doc = "INTENCLR (rw) register accessor: I2CM 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`]
111module"]
112#[doc(alias = "INTENCLR")]
113pub type Intenclr = crate::Reg<intenclr::IntenclrSpec>;
114#[doc = "I2CM Interrupt Enable Clear"]
115pub mod intenclr;
116#[doc = "INTENSET (rw) register accessor: I2CM 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`]
117module"]
118#[doc(alias = "INTENSET")]
119pub type Intenset = crate::Reg<intenset::IntensetSpec>;
120#[doc = "I2CM Interrupt Enable Set"]
121pub mod intenset;
122#[doc = "INTFLAG (rw) register accessor: I2CM 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`]
123module"]
124#[doc(alias = "INTFLAG")]
125pub type Intflag = crate::Reg<intflag::IntflagSpec>;
126#[doc = "I2CM Interrupt Flag Status and Clear"]
127pub mod intflag;
128#[doc = "STATUS (rw) register accessor: I2CM 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`]
129module"]
130#[doc(alias = "STATUS")]
131pub type Status = crate::Reg<status::StatusSpec>;
132#[doc = "I2CM Status"]
133pub mod status;
134#[doc = "SYNCBUSY (r) register accessor: I2CM Synchronization Busy\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`]
135module"]
136#[doc(alias = "SYNCBUSY")]
137pub type Syncbusy = crate::Reg<syncbusy::SyncbusySpec>;
138#[doc = "I2CM Synchronization Busy"]
139pub mod syncbusy;
140#[doc = "ADDR (rw) register accessor: I2CM 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`]
141module"]
142#[doc(alias = "ADDR")]
143pub type Addr = crate::Reg<addr::AddrSpec>;
144#[doc = "I2CM Address"]
145pub mod addr;
146#[doc = "DATA (rw) register accessor: I2CM 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`]
147module"]
148#[doc(alias = "DATA")]
149pub type Data = crate::Reg<data::DataSpec>;
150#[doc = "I2CM Data"]
151pub mod data;
152#[doc = "DBGCTRL (rw) register accessor: I2CM Debug Control\n\nYou can [`read`](crate::Reg::read) this register and get [`dbgctrl::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`dbgctrl::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@dbgctrl`]
153module"]
154#[doc(alias = "DBGCTRL")]
155pub type Dbgctrl = crate::Reg<dbgctrl::DbgctrlSpec>;
156#[doc = "I2CM Debug Control"]
157pub mod dbgctrl;