esp32s3/
i2s1.rs

1#[repr(C)]
2#[cfg_attr(feature = "impl-register-debug", derive(Debug))]
3#[doc = "Register block"]
4pub struct RegisterBlock {
5    _reserved0: [u8; 0x0c],
6    int_raw: INT_RAW,
7    int_st: INT_ST,
8    int_ena: INT_ENA,
9    int_clr: INT_CLR,
10    _reserved4: [u8; 0x04],
11    rx_conf: RX_CONF,
12    tx_conf: TX_CONF,
13    rx_conf1: RX_CONF1,
14    tx_conf1: TX_CONF1,
15    rx_clkm_conf: RX_CLKM_CONF,
16    tx_clkm_conf: TX_CLKM_CONF,
17    rx_clkm_div_conf: RX_CLKM_DIV_CONF,
18    tx_clkm_div_conf: TX_CLKM_DIV_CONF,
19    _reserved12: [u8; 0x10],
20    rx_tdm_ctrl: RX_TDM_CTRL,
21    tx_tdm_ctrl: TX_TDM_CTRL,
22    rx_timing: RX_TIMING,
23    tx_timing: TX_TIMING,
24    lc_hung_conf: LC_HUNG_CONF,
25    rxeof_num: RXEOF_NUM,
26    conf_sigle_data: CONF_SIGLE_DATA,
27    state: STATE,
28    _reserved20: [u8; 0x10],
29    date: DATE,
30}
31impl RegisterBlock {
32    #[doc = "0x0c - I2S interrupt raw register, valid in level."]
33    #[inline(always)]
34    pub const fn int_raw(&self) -> &INT_RAW {
35        &self.int_raw
36    }
37    #[doc = "0x10 - I2S interrupt status register."]
38    #[inline(always)]
39    pub const fn int_st(&self) -> &INT_ST {
40        &self.int_st
41    }
42    #[doc = "0x14 - I2S interrupt enable register."]
43    #[inline(always)]
44    pub const fn int_ena(&self) -> &INT_ENA {
45        &self.int_ena
46    }
47    #[doc = "0x18 - I2S interrupt clear register."]
48    #[inline(always)]
49    pub const fn int_clr(&self) -> &INT_CLR {
50        &self.int_clr
51    }
52    #[doc = "0x20 - I2S RX configure register"]
53    #[inline(always)]
54    pub const fn rx_conf(&self) -> &RX_CONF {
55        &self.rx_conf
56    }
57    #[doc = "0x24 - I2S TX configure register"]
58    #[inline(always)]
59    pub const fn tx_conf(&self) -> &TX_CONF {
60        &self.tx_conf
61    }
62    #[doc = "0x28 - I2S RX configure register 1"]
63    #[inline(always)]
64    pub const fn rx_conf1(&self) -> &RX_CONF1 {
65        &self.rx_conf1
66    }
67    #[doc = "0x2c - I2S TX configure register 1"]
68    #[inline(always)]
69    pub const fn tx_conf1(&self) -> &TX_CONF1 {
70        &self.tx_conf1
71    }
72    #[doc = "0x30 - I2S RX clock configure register"]
73    #[inline(always)]
74    pub const fn rx_clkm_conf(&self) -> &RX_CLKM_CONF {
75        &self.rx_clkm_conf
76    }
77    #[doc = "0x34 - I2S TX clock configure register"]
78    #[inline(always)]
79    pub const fn tx_clkm_conf(&self) -> &TX_CLKM_CONF {
80        &self.tx_clkm_conf
81    }
82    #[doc = "0x38 - I2S RX module clock divider configure register"]
83    #[inline(always)]
84    pub const fn rx_clkm_div_conf(&self) -> &RX_CLKM_DIV_CONF {
85        &self.rx_clkm_div_conf
86    }
87    #[doc = "0x3c - I2S TX module clock divider configure register"]
88    #[inline(always)]
89    pub const fn tx_clkm_div_conf(&self) -> &TX_CLKM_DIV_CONF {
90        &self.tx_clkm_div_conf
91    }
92    #[doc = "0x50 - I2S TX TDM mode control register"]
93    #[inline(always)]
94    pub const fn rx_tdm_ctrl(&self) -> &RX_TDM_CTRL {
95        &self.rx_tdm_ctrl
96    }
97    #[doc = "0x54 - I2S TX TDM mode control register"]
98    #[inline(always)]
99    pub const fn tx_tdm_ctrl(&self) -> &TX_TDM_CTRL {
100        &self.tx_tdm_ctrl
101    }
102    #[doc = "0x58 - I2S RX timing control register"]
103    #[inline(always)]
104    pub const fn rx_timing(&self) -> &RX_TIMING {
105        &self.rx_timing
106    }
107    #[doc = "0x5c - I2S TX timing control register"]
108    #[inline(always)]
109    pub const fn tx_timing(&self) -> &TX_TIMING {
110        &self.tx_timing
111    }
112    #[doc = "0x60 - I2S HUNG configure register."]
113    #[inline(always)]
114    pub const fn lc_hung_conf(&self) -> &LC_HUNG_CONF {
115        &self.lc_hung_conf
116    }
117    #[doc = "0x64 - I2S RX data number control register."]
118    #[inline(always)]
119    pub const fn rxeof_num(&self) -> &RXEOF_NUM {
120        &self.rxeof_num
121    }
122    #[doc = "0x68 - I2S signal data register"]
123    #[inline(always)]
124    pub const fn conf_sigle_data(&self) -> &CONF_SIGLE_DATA {
125        &self.conf_sigle_data
126    }
127    #[doc = "0x6c - I2S TX status register"]
128    #[inline(always)]
129    pub const fn state(&self) -> &STATE {
130        &self.state
131    }
132    #[doc = "0x80 - Version control register"]
133    #[inline(always)]
134    pub const fn date(&self) -> &DATE {
135        &self.date
136    }
137}
138#[doc = "INT_RAW (r) register accessor: I2S interrupt raw register, valid in level.\n\nYou can [`read`](crate::Reg::read) this register and get [`int_raw::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@int_raw`] module"]
139pub type INT_RAW = crate::Reg<int_raw::INT_RAW_SPEC>;
140#[doc = "I2S interrupt raw register, valid in level."]
141pub mod int_raw;
142#[doc = "INT_ST (r) register accessor: I2S interrupt status register.\n\nYou can [`read`](crate::Reg::read) this register and get [`int_st::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@int_st`] module"]
143pub type INT_ST = crate::Reg<int_st::INT_ST_SPEC>;
144#[doc = "I2S interrupt status register."]
145pub mod int_st;
146#[doc = "INT_ENA (rw) register accessor: I2S interrupt enable register.\n\nYou can [`read`](crate::Reg::read) this register and get [`int_ena::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`int_ena::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@int_ena`] module"]
147pub type INT_ENA = crate::Reg<int_ena::INT_ENA_SPEC>;
148#[doc = "I2S interrupt enable register."]
149pub mod int_ena;
150#[doc = "INT_CLR (w) register accessor: I2S interrupt clear register.\n\nYou can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`int_clr::W`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@int_clr`] module"]
151pub type INT_CLR = crate::Reg<int_clr::INT_CLR_SPEC>;
152#[doc = "I2S interrupt clear register."]
153pub mod int_clr;
154#[doc = "RX_CONF (rw) register accessor: I2S RX configure register\n\nYou can [`read`](crate::Reg::read) this register and get [`rx_conf::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`rx_conf::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@rx_conf`] module"]
155pub type RX_CONF = crate::Reg<rx_conf::RX_CONF_SPEC>;
156#[doc = "I2S RX configure register"]
157pub mod rx_conf;
158#[doc = "TX_CONF (rw) register accessor: I2S TX configure register\n\nYou can [`read`](crate::Reg::read) this register and get [`tx_conf::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`tx_conf::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@tx_conf`] module"]
159pub type TX_CONF = crate::Reg<tx_conf::TX_CONF_SPEC>;
160#[doc = "I2S TX configure register"]
161pub mod tx_conf;
162#[doc = "RX_CONF1 (rw) register accessor: I2S RX configure register 1\n\nYou can [`read`](crate::Reg::read) this register and get [`rx_conf1::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`rx_conf1::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@rx_conf1`] module"]
163pub type RX_CONF1 = crate::Reg<rx_conf1::RX_CONF1_SPEC>;
164#[doc = "I2S RX configure register 1"]
165pub mod rx_conf1;
166#[doc = "TX_CONF1 (rw) register accessor: I2S TX configure register 1\n\nYou can [`read`](crate::Reg::read) this register and get [`tx_conf1::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`tx_conf1::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@tx_conf1`] module"]
167pub type TX_CONF1 = crate::Reg<tx_conf1::TX_CONF1_SPEC>;
168#[doc = "I2S TX configure register 1"]
169pub mod tx_conf1;
170#[doc = "RX_CLKM_CONF (rw) register accessor: I2S RX clock configure register\n\nYou can [`read`](crate::Reg::read) this register and get [`rx_clkm_conf::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`rx_clkm_conf::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@rx_clkm_conf`] module"]
171pub type RX_CLKM_CONF = crate::Reg<rx_clkm_conf::RX_CLKM_CONF_SPEC>;
172#[doc = "I2S RX clock configure register"]
173pub mod rx_clkm_conf;
174#[doc = "TX_CLKM_CONF (rw) register accessor: I2S TX clock configure register\n\nYou can [`read`](crate::Reg::read) this register and get [`tx_clkm_conf::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`tx_clkm_conf::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@tx_clkm_conf`] module"]
175pub type TX_CLKM_CONF = crate::Reg<tx_clkm_conf::TX_CLKM_CONF_SPEC>;
176#[doc = "I2S TX clock configure register"]
177pub mod tx_clkm_conf;
178#[doc = "RX_CLKM_DIV_CONF (rw) register accessor: I2S RX module clock divider configure register\n\nYou can [`read`](crate::Reg::read) this register and get [`rx_clkm_div_conf::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`rx_clkm_div_conf::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@rx_clkm_div_conf`] module"]
179pub type RX_CLKM_DIV_CONF = crate::Reg<rx_clkm_div_conf::RX_CLKM_DIV_CONF_SPEC>;
180#[doc = "I2S RX module clock divider configure register"]
181pub mod rx_clkm_div_conf;
182#[doc = "TX_CLKM_DIV_CONF (rw) register accessor: I2S TX module clock divider configure register\n\nYou can [`read`](crate::Reg::read) this register and get [`tx_clkm_div_conf::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`tx_clkm_div_conf::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@tx_clkm_div_conf`] module"]
183pub type TX_CLKM_DIV_CONF = crate::Reg<tx_clkm_div_conf::TX_CLKM_DIV_CONF_SPEC>;
184#[doc = "I2S TX module clock divider configure register"]
185pub mod tx_clkm_div_conf;
186#[doc = "RX_TDM_CTRL (rw) register accessor: I2S TX TDM mode control register\n\nYou can [`read`](crate::Reg::read) this register and get [`rx_tdm_ctrl::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`rx_tdm_ctrl::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@rx_tdm_ctrl`] module"]
187pub type RX_TDM_CTRL = crate::Reg<rx_tdm_ctrl::RX_TDM_CTRL_SPEC>;
188#[doc = "I2S TX TDM mode control register"]
189pub mod rx_tdm_ctrl;
190#[doc = "TX_TDM_CTRL (rw) register accessor: I2S TX TDM mode control register\n\nYou can [`read`](crate::Reg::read) this register and get [`tx_tdm_ctrl::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`tx_tdm_ctrl::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@tx_tdm_ctrl`] module"]
191pub type TX_TDM_CTRL = crate::Reg<tx_tdm_ctrl::TX_TDM_CTRL_SPEC>;
192#[doc = "I2S TX TDM mode control register"]
193pub mod tx_tdm_ctrl;
194#[doc = "RX_TIMING (rw) register accessor: I2S RX timing control register\n\nYou can [`read`](crate::Reg::read) this register and get [`rx_timing::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`rx_timing::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@rx_timing`] module"]
195pub type RX_TIMING = crate::Reg<rx_timing::RX_TIMING_SPEC>;
196#[doc = "I2S RX timing control register"]
197pub mod rx_timing;
198#[doc = "TX_TIMING (rw) register accessor: I2S TX timing control register\n\nYou can [`read`](crate::Reg::read) this register and get [`tx_timing::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`tx_timing::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@tx_timing`] module"]
199pub type TX_TIMING = crate::Reg<tx_timing::TX_TIMING_SPEC>;
200#[doc = "I2S TX timing control register"]
201pub mod tx_timing;
202#[doc = "LC_HUNG_CONF (rw) register accessor: I2S HUNG configure register.\n\nYou can [`read`](crate::Reg::read) this register and get [`lc_hung_conf::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`lc_hung_conf::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@lc_hung_conf`] module"]
203pub type LC_HUNG_CONF = crate::Reg<lc_hung_conf::LC_HUNG_CONF_SPEC>;
204#[doc = "I2S HUNG configure register."]
205pub mod lc_hung_conf;
206#[doc = "RXEOF_NUM (rw) register accessor: I2S RX data number control register.\n\nYou can [`read`](crate::Reg::read) this register and get [`rxeof_num::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`rxeof_num::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@rxeof_num`] module"]
207pub type RXEOF_NUM = crate::Reg<rxeof_num::RXEOF_NUM_SPEC>;
208#[doc = "I2S RX data number control register."]
209pub mod rxeof_num;
210#[doc = "CONF_SIGLE_DATA (rw) register accessor: I2S signal data register\n\nYou can [`read`](crate::Reg::read) this register and get [`conf_sigle_data::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`conf_sigle_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@conf_sigle_data`] module"]
211pub type CONF_SIGLE_DATA = crate::Reg<conf_sigle_data::CONF_SIGLE_DATA_SPEC>;
212#[doc = "I2S signal data register"]
213pub mod conf_sigle_data;
214#[doc = "STATE (r) register accessor: I2S TX status register\n\nYou can [`read`](crate::Reg::read) this register and get [`state::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@state`] module"]
215pub type STATE = crate::Reg<state::STATE_SPEC>;
216#[doc = "I2S TX status register"]
217pub mod state;
218#[doc = "DATE (rw) register accessor: Version control register\n\nYou can [`read`](crate::Reg::read) this register and get [`date::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`date::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@date`] module"]
219pub type DATE = crate::Reg<date::DATE_SPEC>;
220#[doc = "Version control register"]
221pub mod date;