1 /** Copyright 2021 Espressif Systems (Shanghai) PTE LTD 2 * 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #pragma once 16 17 #include <stdint.h> 18 #ifdef __cplusplus 19 extern "C" { 20 #endif 21 22 /** Group: FIFO R/W registers */ 23 /** Type of chndata register 24 * The read and write data register for CHANNELn by apb fifo access. 25 */ 26 typedef union { 27 struct { 28 /** chndata : RO; bitpos: [31:0]; default: 0; 29 * Read and write data for channel n via APB FIFO. 30 */ 31 uint32_t chndata: 32; 32 }; 33 uint32_t val; 34 } rmt_chndata_reg_t; 35 36 /** Type of chmdata register 37 * The read and write data register for CHANNEL$n by apb fifo access. 38 */ 39 typedef union { 40 struct { 41 /** chmdata : RO; bitpos: [31:0]; default: 0; 42 * Read and write data for channel $n via APB FIFO. 43 */ 44 uint32_t chmdata: 32; 45 }; 46 uint32_t val; 47 } rmt_chmdata_reg_t; 48 49 50 /** Group: Configuration registers */ 51 /** Type of chnconf0 register 52 * Channel n configure register 0 53 */ 54 typedef union { 55 struct { 56 /** tx_start_n : WT; bitpos: [0]; default: 0; 57 * Set this bit to start sending data on CHANNELn. 58 */ 59 uint32_t tx_start_n: 1; 60 /** mem_rd_rst_n : WT; bitpos: [1]; default: 0; 61 * Set this bit to reset read ram address for CHANNELn by accessing transmitter. 62 */ 63 uint32_t mem_rd_rst_n: 1; 64 /** apb_mem_rst_n : WT; bitpos: [2]; default: 0; 65 * Set this bit to reset W/R ram address for CHANNELn by accessing apb fifo. 66 */ 67 uint32_t apb_mem_rst_n: 1; 68 /** tx_conti_mode_n : R/W; bitpos: [3]; default: 0; 69 * Set this bit to restart transmission from the first data to the last data in 70 * CHANNELn. 71 */ 72 uint32_t tx_conti_mode_n: 1; 73 /** mem_tx_wrap_en_n : R/W; bitpos: [4]; default: 0; 74 * This is the channel n enable bit for wraparound mode: it will resume sending at the 75 * start when the data to be sent is more than its memory size. 76 */ 77 uint32_t mem_tx_wrap_en_n: 1; 78 /** idle_out_lv_n : R/W; bitpos: [5]; default: 0; 79 * This bit configures the level of output signal in CHANNELn when the latter is in 80 * IDLE state. 81 */ 82 uint32_t idle_out_lv_n: 1; 83 /** idle_out_en_n : R/W; bitpos: [6]; default: 0; 84 * This is the output enable-control bit for CHANNELn in IDLE state. 85 */ 86 uint32_t idle_out_en_n: 1; 87 /** tx_stop_n : R/W/SC; bitpos: [7]; default: 0; 88 * Set this bit to stop the transmitter of CHANNELn sending data out. 89 */ 90 uint32_t tx_stop_n: 1; 91 /** div_cnt_n : R/W; bitpos: [15:8]; default: 2; 92 * This register is used to configure the divider for clock of CHANNELn. 93 */ 94 uint32_t div_cnt_n: 8; 95 /** mem_size_n : R/W; bitpos: [19:16]; default: 1; 96 * This register is used to configure the maximum size of memory allocated to CHANNELn. 97 */ 98 uint32_t mem_size_n: 4; 99 /** carrier_eff_en_n : R/W; bitpos: [20]; default: 1; 100 * 1: Add carrier modulation on the output signal only at the send data state for 101 * CHANNELn. 0: Add carrier modulation on the output signal at all state for CHANNELn. 102 * Only valid when RMT_CARRIER_EN_CHn is 1. 103 */ 104 uint32_t carrier_eff_en_n: 1; 105 /** carrier_en_n : R/W; bitpos: [21]; default: 1; 106 * This is the carrier modulation enable-control bit for CHANNELn. 1: Add carrier 107 * modulation in the output signal. 0: No carrier modulation in sig_out. 108 */ 109 uint32_t carrier_en_n: 1; 110 /** carrier_out_lv_n : R/W; bitpos: [22]; default: 1; 111 * This bit is used to configure the position of carrier wave for CHANNELn. 112 * 113 * 1'h0: add carrier wave on low level. 114 * 115 * 1'h1: add carrier wave on high level. 116 */ 117 uint32_t carrier_out_lv_n: 1; 118 /** afifo_rst_n : WT; bitpos: [23]; default: 0; 119 * Reserved 120 */ 121 uint32_t afifo_rst_n: 1; 122 /** conf_update_n : WT; bitpos: [24]; default: 0; 123 * synchronization bit for CHANNELn 124 */ 125 uint32_t conf_update_n: 1; 126 uint32_t reserved_25: 7; 127 }; 128 uint32_t val; 129 } rmt_chnconf0_reg_t; 130 131 typedef struct { 132 /** Type of chmconf0 register 133 * Channel m configure register 0 134 */ 135 union { 136 struct { 137 /** div_cnt_m : R/W; bitpos: [7:0]; default: 2; 138 * This register is used to configure the divider for clock of CHANNELm. 139 */ 140 uint32_t div_cnt_m: 8; 141 /** idle_thres_m : R/W; bitpos: [22:8]; default: 32767; 142 * When no edge is detected on the input signal and continuous clock cycles is longer 143 * than this register value, received process is finished. 144 */ 145 uint32_t idle_thres_m: 15; 146 uint32_t reserved_23: 1; 147 /** mem_size_m : R/W; bitpos: [27:24]; default: 1; 148 * This register is used to configure the maximum size of memory allocated to CHANNELm. 149 */ 150 uint32_t mem_size_m: 4; 151 /** carrier_en_m : R/W; bitpos: [28]; default: 1; 152 * This is the carrier modulation enable-control bit for CHANNELm. 1: Add carrier 153 * modulation in the output signal. 0: No carrier modulation in sig_out. 154 */ 155 uint32_t carrier_en_m: 1; 156 /** carrier_out_lv_m : R/W; bitpos: [29]; default: 1; 157 * This bit is used to configure the position of carrier wave for CHANNELm. 158 * 159 * 1'h0: add carrier wave on low level. 160 * 161 * 1'h1: add carrier wave on high level. 162 */ 163 uint32_t carrier_out_lv_m: 1; 164 uint32_t reserved_30: 2; 165 }; 166 uint32_t val; 167 } conf0; 168 169 /** Type of chmconf1 register 170 * Channel m configure register 1 171 */ 172 union { 173 struct { 174 /** rx_en_m : R/W; bitpos: [0]; default: 0; 175 * Set this bit to enable receiver to receive data on CHANNELm. 176 */ 177 uint32_t rx_en_m: 1; 178 /** mem_wr_rst_m : WT; bitpos: [1]; default: 0; 179 * Set this bit to reset write ram address for CHANNELm by accessing receiver. 180 */ 181 uint32_t mem_wr_rst_m: 1; 182 /** apb_mem_rst_m : WT; bitpos: [2]; default: 0; 183 * Set this bit to reset W/R ram address for CHANNELm by accessing apb fifo. 184 */ 185 uint32_t apb_mem_rst_m: 1; 186 /** mem_owner_m : R/W/SC; bitpos: [3]; default: 1; 187 * This register marks the ownership of CHANNELm's ram block. 188 * 189 * 1'h1: Receiver is using the ram. 190 * 191 * 1'h0: APB bus is using the ram. 192 */ 193 uint32_t mem_owner_m: 1; 194 /** rx_filter_en_m : R/W; bitpos: [4]; default: 0; 195 * This is the receive filter's enable bit for CHANNELm. 196 */ 197 uint32_t rx_filter_en_m: 1; 198 /** rx_filter_thres_m : R/W; bitpos: [12:5]; default: 15; 199 * Ignores the input pulse when its width is smaller than this register value in APB 200 * clock periods (in receive mode). 201 */ 202 uint32_t rx_filter_thres_m: 8; 203 /** mem_rx_wrap_en_m : R/W; bitpos: [13]; default: 0; 204 * This is the channel m enable bit for wraparound mode: it will resume receiving at 205 * the start when the data to be received is more than its memory size. 206 */ 207 uint32_t mem_rx_wrap_en_m: 1; 208 /** afifo_rst_m : WT; bitpos: [14]; default: 0; 209 * Reserved 210 */ 211 uint32_t afifo_rst_m: 1; 212 /** conf_update_m : WT; bitpos: [15]; default: 0; 213 * synchronization bit for CHANNELm 214 */ 215 uint32_t conf_update_m: 1; 216 uint32_t reserved_16: 16; 217 }; 218 uint32_t val; 219 } conf1; 220 } rmt_chmconf_reg_t; 221 222 /** Type of chm_rx_carrier_rm register 223 * Channel m carrier remove register 224 */ 225 typedef union { 226 struct { 227 /** carrier_low_thres_chm : R/W; bitpos: [15:0]; default: 0; 228 * The low level period in a carrier modulation mode is 229 * (REG_RMT_REG_CARRIER_LOW_THRES_CHm + 1) for channel m. 230 */ 231 uint32_t carrier_low_thres_chm: 16; 232 /** carrier_high_thres_chm : R/W; bitpos: [31:16]; default: 0; 233 * The high level period in a carrier modulation mode is 234 * (REG_RMT_REG_CARRIER_HIGH_THRES_CHm + 1) for channel m. 235 */ 236 uint32_t carrier_high_thres_chm: 16; 237 }; 238 uint32_t val; 239 } rmt_chm_rx_carrier_rm_reg_t; 240 241 /** Type of sys_conf register 242 * RMT apb configuration register 243 */ 244 typedef union { 245 struct { 246 /** apb_fifo_mask : R/W; bitpos: [0]; default: 0; 247 * 1'h1: access memory directly. 1'h0: access memory by FIFO. 248 */ 249 uint32_t apb_fifo_mask: 1; 250 /** mem_clk_force_on : R/W; bitpos: [1]; default: 0; 251 * Set this bit to enable the clock for RMT memory. 252 */ 253 uint32_t mem_clk_force_on: 1; 254 /** mem_force_pd : R/W; bitpos: [2]; default: 0; 255 * Set this bit to power down RMT memory. 256 */ 257 uint32_t mem_force_pd: 1; 258 /** mem_force_pu : R/W; bitpos: [3]; default: 0; 259 * 1: Disable RMT memory light sleep power down function. 0: Power down RMT memory 260 * when RMT is in light sleep mode. 261 */ 262 uint32_t mem_force_pu: 1; 263 /** sclk_div_num : R/W; bitpos: [11:4]; default: 1; 264 * the integral part of the fractional divisor 265 */ 266 uint32_t sclk_div_num: 8; 267 /** sclk_div_a : R/W; bitpos: [17:12]; default: 0; 268 * the numerator of the fractional part of the fractional divisor 269 */ 270 uint32_t sclk_div_a: 6; 271 /** sclk_div_b : R/W; bitpos: [23:18]; default: 0; 272 * the denominator of the fractional part of the fractional divisor 273 */ 274 uint32_t sclk_div_b: 6; 275 /** sclk_sel : R/W; bitpos: [25:24]; default: 1; 276 * choose the clock source of rmt_sclk. 1:CLK_80Mhz;2:CLK_8MHz; 2:XTAL 277 */ 278 uint32_t sclk_sel: 2; 279 /** sclk_active : R/W; bitpos: [26]; default: 1; 280 * rmt_sclk switch 281 */ 282 uint32_t sclk_active: 1; 283 uint32_t reserved_27: 4; 284 /** clk_en : R/W; bitpos: [31]; default: 0; 285 * RMT register clock gate enable signal. 1: Power up the drive clock of registers. 0: 286 * Power down the drive clock of registers 287 */ 288 uint32_t clk_en: 1; 289 }; 290 uint32_t val; 291 } rmt_sys_conf_reg_t; 292 293 /** Type of ref_cnt_rst register 294 * RMT clock divider reset register 295 */ 296 typedef union { 297 struct { 298 /** ref_cnt_rst_ch0 : WT; bitpos: [0]; default: 0; 299 * This register is used to reset the clock divider of CHANNEL0. 300 */ 301 uint32_t ref_cnt_rst_ch0: 1; 302 /** ref_cnt_rst_ch1 : WT; bitpos: [1]; default: 0; 303 * This register is used to reset the clock divider of CHANNEL1. 304 */ 305 uint32_t ref_cnt_rst_ch1: 1; 306 /** ref_cnt_rst_ch2 : WT; bitpos: [2]; default: 0; 307 * This register is used to reset the clock divider of CHANNEL2. 308 */ 309 uint32_t ref_cnt_rst_ch2: 1; 310 /** ref_cnt_rst_ch3 : WT; bitpos: [3]; default: 0; 311 * This register is used to reset the clock divider of CHANNEL3. 312 */ 313 uint32_t ref_cnt_rst_ch3: 1; 314 /** ref_cnt_rst_ch4 : WT; bitpos: [4]; default: 0; 315 * This register is used to reset the clock divider of CHANNEL4. 316 */ 317 uint32_t ref_cnt_rst_ch4: 1; 318 /** ref_cnt_rst_ch5 : WT; bitpos: [5]; default: 0; 319 * This register is used to reset the clock divider of CHANNEL5. 320 */ 321 uint32_t ref_cnt_rst_ch5: 1; 322 /** ref_cnt_rst_ch6 : WT; bitpos: [6]; default: 0; 323 * This register is used to reset the clock divider of CHANNEL6. 324 */ 325 uint32_t ref_cnt_rst_ch6: 1; 326 /** ref_cnt_rst_ch7 : WT; bitpos: [7]; default: 0; 327 * This register is used to reset the clock divider of CHANNEL7. 328 */ 329 uint32_t ref_cnt_rst_ch7: 1; 330 uint32_t reserved_8: 24; 331 }; 332 uint32_t val; 333 } rmt_ref_cnt_rst_reg_t; 334 335 336 /** Group: Status registers */ 337 /** Type of chnstatus register 338 * Channel n status register 339 */ 340 typedef union { 341 struct { 342 /** mem_raddr_ex_n : RO; bitpos: [9:0]; default: 0; 343 * This register records the memory address offset when transmitter of CHANNELn is 344 * using the RAM. 345 */ 346 uint32_t mem_raddr_ex_n: 10; 347 uint32_t reserved_10: 1; 348 /** apb_mem_waddr_n : RO; bitpos: [20:11]; default: 0; 349 * This register records the memory address offset when writes RAM over APB bus. 350 */ 351 uint32_t apb_mem_waddr_n: 10; 352 uint32_t reserved_21: 1; 353 /** state_n : RO; bitpos: [24:22]; default: 0; 354 * This register records the FSM status of CHANNELn. 355 */ 356 uint32_t state_n: 3; 357 /** mem_empty_n : RO; bitpos: [25]; default: 0; 358 * This status bit will be set when the data to be set is more than memory size and 359 * the wraparound mode is disabled. 360 */ 361 uint32_t mem_empty_n: 1; 362 /** apb_mem_wr_err_n : RO; bitpos: [26]; default: 0; 363 * This status bit will be set if the offset address out of memory size when writes 364 * via APB bus. 365 */ 366 uint32_t apb_mem_wr_err_n: 1; 367 uint32_t reserved_27: 5; 368 }; 369 uint32_t val; 370 } rmt_chnstatus_reg_t; 371 372 /** Type of chmstatus register 373 * Channel m status register 374 */ 375 typedef union { 376 struct { 377 /** mem_waddr_ex_m : RO; bitpos: [9:0]; default: 192; 378 * This register records the memory address offset when receiver of CHANNELm is using 379 * the RAM. 380 */ 381 uint32_t mem_waddr_ex_m: 10; 382 uint32_t reserved_10: 1; 383 /** apb_mem_raddr_m : RO; bitpos: [20:11]; default: 192; 384 * This register records the memory address offset when reads RAM over APB bus. 385 */ 386 uint32_t apb_mem_raddr_m: 10; 387 uint32_t reserved_21: 1; 388 /** state_m : RO; bitpos: [24:22]; default: 0; 389 * This register records the FSM status of CHANNELm. 390 */ 391 uint32_t state_m: 3; 392 /** mem_owner_err_m : RO; bitpos: [25]; default: 0; 393 * This status bit will be set when the ownership of memory block is wrong. 394 */ 395 uint32_t mem_owner_err_m: 1; 396 /** mem_full_m : RO; bitpos: [26]; default: 0; 397 * This status bit will be set if the receiver receives more data than the memory size. 398 */ 399 uint32_t mem_full_m: 1; 400 /** apb_mem_rd_err_m : RO; bitpos: [27]; default: 0; 401 * This status bit will be set if the offset address out of memory size when reads via 402 * APB bus. 403 */ 404 uint32_t apb_mem_rd_err_m: 1; 405 uint32_t reserved_28: 4; 406 }; 407 uint32_t val; 408 } rmt_chmstatus_reg_t; 409 410 411 /** Group: Interrupt registers */ 412 /** Type of int_raw register 413 * Raw interrupt status 414 */ 415 typedef union { 416 struct { 417 /** ch0_tx_end_int_raw : R/WTC/SS; bitpos: [0]; default: 0; 418 * The interrupt raw bit for CHANNEL0. Triggered when transmission done. 419 */ 420 uint32_t ch0_tx_end_int_raw: 1; 421 /** ch1_tx_end_int_raw : R/WTC/SS; bitpos: [1]; default: 0; 422 * The interrupt raw bit for CHANNEL1. Triggered when transmission done. 423 */ 424 uint32_t ch1_tx_end_int_raw: 1; 425 /** ch2_tx_end_int_raw : R/WTC/SS; bitpos: [2]; default: 0; 426 * The interrupt raw bit for CHANNEL2. Triggered when transmission done. 427 */ 428 uint32_t ch2_tx_end_int_raw: 1; 429 /** ch3_tx_end_int_raw : R/WTC/SS; bitpos: [3]; default: 0; 430 * The interrupt raw bit for CHANNEL3. Triggered when transmission done. 431 */ 432 uint32_t ch3_tx_end_int_raw: 1; 433 /** ch0_err_int_raw : R/WTC/SS; bitpos: [4]; default: 0; 434 * The interrupt raw bit for CHANNEL0. Triggered when error occurs. 435 */ 436 uint32_t ch0_err_int_raw: 1; 437 /** ch1_err_int_raw : R/WTC/SS; bitpos: [5]; default: 0; 438 * The interrupt raw bit for CHANNEL1. Triggered when error occurs. 439 */ 440 uint32_t ch1_err_int_raw: 1; 441 /** ch2_err_int_raw : R/WTC/SS; bitpos: [6]; default: 0; 442 * The interrupt raw bit for CHANNEL2. Triggered when error occurs. 443 */ 444 uint32_t ch2_err_int_raw: 1; 445 /** ch3_err_int_raw : R/WTC/SS; bitpos: [7]; default: 0; 446 * The interrupt raw bit for CHANNEL3. Triggered when error occurs. 447 */ 448 uint32_t ch3_err_int_raw: 1; 449 /** ch0_tx_thr_event_int_raw : R/WTC/SS; bitpos: [8]; default: 0; 450 * The interrupt raw bit for CHANNEL0. Triggered when transmitter sent more data than 451 * configured value. 452 */ 453 uint32_t ch0_tx_thr_event_int_raw: 1; 454 /** ch1_tx_thr_event_int_raw : R/WTC/SS; bitpos: [9]; default: 0; 455 * The interrupt raw bit for CHANNEL1. Triggered when transmitter sent more data than 456 * configured value. 457 */ 458 uint32_t ch1_tx_thr_event_int_raw: 1; 459 /** ch2_tx_thr_event_int_raw : R/WTC/SS; bitpos: [10]; default: 0; 460 * The interrupt raw bit for CHANNEL2. Triggered when transmitter sent more data than 461 * configured value. 462 */ 463 uint32_t ch2_tx_thr_event_int_raw: 1; 464 /** ch3_tx_thr_event_int_raw : R/WTC/SS; bitpos: [11]; default: 0; 465 * The interrupt raw bit for CHANNEL3. Triggered when transmitter sent more data than 466 * configured value. 467 */ 468 uint32_t ch3_tx_thr_event_int_raw: 1; 469 /** ch0_tx_loop_int_raw : R/WTC/SS; bitpos: [12]; default: 0; 470 * The interrupt raw bit for CHANNEL0. Triggered when the loop count reaches the 471 * configured threshold value. 472 */ 473 uint32_t ch0_tx_loop_int_raw: 1; 474 /** ch1_tx_loop_int_raw : R/WTC/SS; bitpos: [13]; default: 0; 475 * The interrupt raw bit for CHANNEL1. Triggered when the loop count reaches the 476 * configured threshold value. 477 */ 478 uint32_t ch1_tx_loop_int_raw: 1; 479 /** ch2_tx_loop_int_raw : R/WTC/SS; bitpos: [14]; default: 0; 480 * The interrupt raw bit for CHANNEL2. Triggered when the loop count reaches the 481 * configured threshold value. 482 */ 483 uint32_t ch2_tx_loop_int_raw: 1; 484 /** ch3_tx_loop_int_raw : R/WTC/SS; bitpos: [15]; default: 0; 485 * The interrupt raw bit for CHANNEL3. Triggered when the loop count reaches the 486 * configured threshold value. 487 */ 488 uint32_t ch3_tx_loop_int_raw: 1; 489 /** ch4_rx_end_int_raw : R/WTC/SS; bitpos: [16]; default: 0; 490 * The interrupt raw bit for CHANNEL4. Triggered when reception done. 491 */ 492 uint32_t ch4_rx_end_int_raw: 1; 493 /** ch5_rx_end_int_raw : R/WTC/SS; bitpos: [17]; default: 0; 494 * The interrupt raw bit for CHANNEL5. Triggered when reception done. 495 */ 496 uint32_t ch5_rx_end_int_raw: 1; 497 /** ch6_rx_end_int_raw : R/WTC/SS; bitpos: [18]; default: 0; 498 * The interrupt raw bit for CHANNEL6. Triggered when reception done. 499 */ 500 uint32_t ch6_rx_end_int_raw: 1; 501 /** ch7_rx_end_int_raw : R/WTC/SS; bitpos: [19]; default: 0; 502 * The interrupt raw bit for CHANNEL7. Triggered when reception done. 503 */ 504 uint32_t ch7_rx_end_int_raw: 1; 505 /** ch4_err_int_raw : R/WTC/SS; bitpos: [20]; default: 0; 506 * The interrupt raw bit for CHANNEL4. Triggered when error occurs. 507 */ 508 uint32_t ch4_err_int_raw: 1; 509 /** ch5_err_int_raw : R/WTC/SS; bitpos: [21]; default: 0; 510 * The interrupt raw bit for CHANNEL5. Triggered when error occurs. 511 */ 512 uint32_t ch5_err_int_raw: 1; 513 /** ch6_err_int_raw : R/WTC/SS; bitpos: [22]; default: 0; 514 * The interrupt raw bit for CHANNEL6. Triggered when error occurs. 515 */ 516 uint32_t ch6_err_int_raw: 1; 517 /** ch7_err_int_raw : R/WTC/SS; bitpos: [23]; default: 0; 518 * The interrupt raw bit for CHANNEL7. Triggered when error occurs. 519 */ 520 uint32_t ch7_err_int_raw: 1; 521 /** ch4_rx_thr_event_int_raw : R/WTC/SS; bitpos: [24]; default: 0; 522 * The interrupt raw bit for CHANNEL4. Triggered when receiver receive more data than 523 * configured value. 524 */ 525 uint32_t ch4_rx_thr_event_int_raw: 1; 526 /** ch5_rx_thr_event_int_raw : R/WTC/SS; bitpos: [25]; default: 0; 527 * The interrupt raw bit for CHANNEL5. Triggered when receiver receive more data than 528 * configured value. 529 */ 530 uint32_t ch5_rx_thr_event_int_raw: 1; 531 /** ch6_rx_thr_event_int_raw : R/WTC/SS; bitpos: [26]; default: 0; 532 * The interrupt raw bit for CHANNEL6. Triggered when receiver receive more data than 533 * configured value. 534 */ 535 uint32_t ch6_rx_thr_event_int_raw: 1; 536 /** ch7_rx_thr_event_int_raw : R/WTC/SS; bitpos: [27]; default: 0; 537 * The interrupt raw bit for CHANNEL7. Triggered when receiver receive more data than 538 * configured value. 539 */ 540 uint32_t ch7_rx_thr_event_int_raw: 1; 541 /** ch3_dma_access_fail_int_raw : R/WTC/SS; bitpos: [28]; default: 0; 542 * The interrupt raw bit for CHANNEL3. Triggered when dma accessing CHANNEL3 fails. 543 */ 544 uint32_t ch3_dma_access_fail_int_raw: 1; 545 /** ch7_dma_access_fail_int_raw : R/WTC/SS; bitpos: [29]; default: 0; 546 * The interrupt raw bit for CHANNEL7. Triggered when dma accessing CHANNEL7 fails. 547 */ 548 uint32_t ch7_dma_access_fail_int_raw: 1; 549 uint32_t reserved_30: 2; 550 }; 551 uint32_t val; 552 } rmt_int_raw_reg_t; 553 554 /** Type of int_st register 555 * Masked interrupt status 556 */ 557 typedef union { 558 struct { 559 /** ch0_tx_end_int_st : RO; bitpos: [0]; default: 0; 560 * The masked interrupt status bit for CH0_TX_END_INT. 561 */ 562 uint32_t ch0_tx_end_int_st: 1; 563 /** ch1_tx_end_int_st : RO; bitpos: [1]; default: 0; 564 * The masked interrupt status bit for CH1_TX_END_INT. 565 */ 566 uint32_t ch1_tx_end_int_st: 1; 567 /** ch2_tx_end_int_st : RO; bitpos: [2]; default: 0; 568 * The masked interrupt status bit for CH2_TX_END_INT. 569 */ 570 uint32_t ch2_tx_end_int_st: 1; 571 /** ch3_tx_end_int_st : RO; bitpos: [3]; default: 0; 572 * The masked interrupt status bit for CH3_TX_END_INT. 573 */ 574 uint32_t ch3_tx_end_int_st: 1; 575 /** ch0_err_int_st : RO; bitpos: [4]; default: 0; 576 * The masked interrupt status bit for CH0_ERR_INT. 577 */ 578 uint32_t ch0_err_int_st: 1; 579 /** ch1_err_int_st : RO; bitpos: [5]; default: 0; 580 * The masked interrupt status bit for CH1_ERR_INT. 581 */ 582 uint32_t ch1_err_int_st: 1; 583 /** ch2_err_int_st : RO; bitpos: [6]; default: 0; 584 * The masked interrupt status bit for CH2_ERR_INT. 585 */ 586 uint32_t ch2_err_int_st: 1; 587 /** ch3_err_int_st : RO; bitpos: [7]; default: 0; 588 * The masked interrupt status bit for CH3_ERR_INT. 589 */ 590 uint32_t ch3_err_int_st: 1; 591 /** ch0_tx_thr_event_int_st : RO; bitpos: [8]; default: 0; 592 * The masked interrupt status bit for CH0_TX_THR_EVENT_INT. 593 */ 594 uint32_t ch0_tx_thr_event_int_st: 1; 595 /** ch1_tx_thr_event_int_st : RO; bitpos: [9]; default: 0; 596 * The masked interrupt status bit for CH1_TX_THR_EVENT_INT. 597 */ 598 uint32_t ch1_tx_thr_event_int_st: 1; 599 /** ch2_tx_thr_event_int_st : RO; bitpos: [10]; default: 0; 600 * The masked interrupt status bit for CH2_TX_THR_EVENT_INT. 601 */ 602 uint32_t ch2_tx_thr_event_int_st: 1; 603 /** ch3_tx_thr_event_int_st : RO; bitpos: [11]; default: 0; 604 * The masked interrupt status bit for CH3_TX_THR_EVENT_INT. 605 */ 606 uint32_t ch3_tx_thr_event_int_st: 1; 607 /** ch0_tx_loop_int_st : RO; bitpos: [12]; default: 0; 608 * The masked interrupt status bit for CH0_TX_LOOP_INT. 609 */ 610 uint32_t ch0_tx_loop_int_st: 1; 611 /** ch1_tx_loop_int_st : RO; bitpos: [13]; default: 0; 612 * The masked interrupt status bit for CH1_TX_LOOP_INT. 613 */ 614 uint32_t ch1_tx_loop_int_st: 1; 615 /** ch2_tx_loop_int_st : RO; bitpos: [14]; default: 0; 616 * The masked interrupt status bit for CH2_TX_LOOP_INT. 617 */ 618 uint32_t ch2_tx_loop_int_st: 1; 619 /** ch3_tx_loop_int_st : RO; bitpos: [15]; default: 0; 620 * The masked interrupt status bit for CH3_TX_LOOP_INT. 621 */ 622 uint32_t ch3_tx_loop_int_st: 1; 623 /** ch4_rx_end_int_st : RO; bitpos: [16]; default: 0; 624 * The masked interrupt status bit for CH4_RX_END_INT. 625 */ 626 uint32_t ch4_rx_end_int_st: 1; 627 /** ch5_rx_end_int_st : RO; bitpos: [17]; default: 0; 628 * The masked interrupt status bit for CH5_RX_END_INT. 629 */ 630 uint32_t ch5_rx_end_int_st: 1; 631 /** ch6_rx_end_int_st : RO; bitpos: [18]; default: 0; 632 * The masked interrupt status bit for CH6_RX_END_INT. 633 */ 634 uint32_t ch6_rx_end_int_st: 1; 635 /** ch7_rx_end_int_st : RO; bitpos: [19]; default: 0; 636 * The masked interrupt status bit for CH7_RX_END_INT. 637 */ 638 uint32_t ch7_rx_end_int_st: 1; 639 /** ch4_err_int_st : RO; bitpos: [20]; default: 0; 640 * The masked interrupt status bit for CH4_ERR_INT. 641 */ 642 uint32_t ch4_err_int_st: 1; 643 /** ch5_err_int_st : RO; bitpos: [21]; default: 0; 644 * The masked interrupt status bit for CH5_ERR_INT. 645 */ 646 uint32_t ch5_err_int_st: 1; 647 /** ch6_err_int_st : RO; bitpos: [22]; default: 0; 648 * The masked interrupt status bit for CH6_ERR_INT. 649 */ 650 uint32_t ch6_err_int_st: 1; 651 /** ch7_err_int_st : RO; bitpos: [23]; default: 0; 652 * The masked interrupt status bit for CH7_ERR_INT. 653 */ 654 uint32_t ch7_err_int_st: 1; 655 /** ch4_rx_thr_event_int_st : RO; bitpos: [24]; default: 0; 656 * The masked interrupt status bit for CH4_RX_THR_EVENT_INT. 657 */ 658 uint32_t ch4_rx_thr_event_int_st: 1; 659 /** ch5_rx_thr_event_int_st : RO; bitpos: [25]; default: 0; 660 * The masked interrupt status bit for CH5_RX_THR_EVENT_INT. 661 */ 662 uint32_t ch5_rx_thr_event_int_st: 1; 663 /** ch6_rx_thr_event_int_st : RO; bitpos: [26]; default: 0; 664 * The masked interrupt status bit for CH6_RX_THR_EVENT_INT. 665 */ 666 uint32_t ch6_rx_thr_event_int_st: 1; 667 /** ch7_rx_thr_event_int_st : RO; bitpos: [27]; default: 0; 668 * The masked interrupt status bit for CH7_RX_THR_EVENT_INT. 669 */ 670 uint32_t ch7_rx_thr_event_int_st: 1; 671 /** ch3_dma_access_fail_int_st : RO; bitpos: [28]; default: 0; 672 * The masked interrupt status bit for CH3_DMA_ACCESS_FAIL_INT. 673 */ 674 uint32_t ch3_dma_access_fail_int_st: 1; 675 /** ch7_dma_access_fail_int_st : RO; bitpos: [29]; default: 0; 676 * The masked interrupt status bit for CH7_DMA_ACCESS_FAIL_INT. 677 */ 678 uint32_t ch7_dma_access_fail_int_st: 1; 679 uint32_t reserved_30: 2; 680 }; 681 uint32_t val; 682 } rmt_int_st_reg_t; 683 684 /** Type of int_ena register 685 * Interrupt enable bits 686 */ 687 typedef union { 688 struct { 689 /** ch0_tx_end_int_ena : R/W; bitpos: [0]; default: 0; 690 * The interrupt enable bit for CH0_TX_END_INT. 691 */ 692 uint32_t ch0_tx_end_int_ena: 1; 693 /** ch1_tx_end_int_ena : R/W; bitpos: [1]; default: 0; 694 * The interrupt enable bit for CH1_TX_END_INT. 695 */ 696 uint32_t ch1_tx_end_int_ena: 1; 697 /** ch2_tx_end_int_ena : R/W; bitpos: [2]; default: 0; 698 * The interrupt enable bit for CH2_TX_END_INT. 699 */ 700 uint32_t ch2_tx_end_int_ena: 1; 701 /** ch3_tx_end_int_ena : R/W; bitpos: [3]; default: 0; 702 * The interrupt enable bit for CH3_TX_END_INT. 703 */ 704 uint32_t ch3_tx_end_int_ena: 1; 705 /** ch0_err_int_ena : R/W; bitpos: [4]; default: 0; 706 * The interrupt enable bit for CH0_ERR_INT. 707 */ 708 uint32_t ch0_err_int_ena: 1; 709 /** ch1_err_int_ena : R/W; bitpos: [5]; default: 0; 710 * The interrupt enable bit for CH1_ERR_INT. 711 */ 712 uint32_t ch1_err_int_ena: 1; 713 /** ch2_err_int_ena : R/W; bitpos: [6]; default: 0; 714 * The interrupt enable bit for CH2_ERR_INT. 715 */ 716 uint32_t ch2_err_int_ena: 1; 717 /** ch3_err_int_ena : R/W; bitpos: [7]; default: 0; 718 * The interrupt enable bit for CH3_ERR_INT. 719 */ 720 uint32_t ch3_err_int_ena: 1; 721 /** ch0_tx_thr_event_int_ena : R/W; bitpos: [8]; default: 0; 722 * The interrupt enable bit for CH0_TX_THR_EVENT_INT. 723 */ 724 uint32_t ch0_tx_thr_event_int_ena: 1; 725 /** ch1_tx_thr_event_int_ena : R/W; bitpos: [9]; default: 0; 726 * The interrupt enable bit for CH1_TX_THR_EVENT_INT. 727 */ 728 uint32_t ch1_tx_thr_event_int_ena: 1; 729 /** ch2_tx_thr_event_int_ena : R/W; bitpos: [10]; default: 0; 730 * The interrupt enable bit for CH2_TX_THR_EVENT_INT. 731 */ 732 uint32_t ch2_tx_thr_event_int_ena: 1; 733 /** ch3_tx_thr_event_int_ena : R/W; bitpos: [11]; default: 0; 734 * The interrupt enable bit for CH3_TX_THR_EVENT_INT. 735 */ 736 uint32_t ch3_tx_thr_event_int_ena: 1; 737 /** ch0_tx_loop_int_ena : R/W; bitpos: [12]; default: 0; 738 * The interrupt enable bit for CH0_TX_LOOP_INT. 739 */ 740 uint32_t ch0_tx_loop_int_ena: 1; 741 /** ch1_tx_loop_int_ena : R/W; bitpos: [13]; default: 0; 742 * The interrupt enable bit for CH1_TX_LOOP_INT. 743 */ 744 uint32_t ch1_tx_loop_int_ena: 1; 745 /** ch2_tx_loop_int_ena : R/W; bitpos: [14]; default: 0; 746 * The interrupt enable bit for CH2_TX_LOOP_INT. 747 */ 748 uint32_t ch2_tx_loop_int_ena: 1; 749 /** ch3_tx_loop_int_ena : R/W; bitpos: [15]; default: 0; 750 * The interrupt enable bit for CH3_TX_LOOP_INT. 751 */ 752 uint32_t ch3_tx_loop_int_ena: 1; 753 /** ch4_rx_end_int_ena : R/W; bitpos: [16]; default: 0; 754 * The interrupt enable bit for CH4_RX_END_INT. 755 */ 756 uint32_t ch4_rx_end_int_ena: 1; 757 /** ch5_rx_end_int_ena : R/W; bitpos: [17]; default: 0; 758 * The interrupt enable bit for CH5_RX_END_INT. 759 */ 760 uint32_t ch5_rx_end_int_ena: 1; 761 /** ch6_rx_end_int_ena : R/W; bitpos: [18]; default: 0; 762 * The interrupt enable bit for CH6_RX_END_INT. 763 */ 764 uint32_t ch6_rx_end_int_ena: 1; 765 /** ch7_rx_end_int_ena : R/W; bitpos: [19]; default: 0; 766 * The interrupt enable bit for CH7_RX_END_INT. 767 */ 768 uint32_t ch7_rx_end_int_ena: 1; 769 /** ch4_err_int_ena : R/W; bitpos: [20]; default: 0; 770 * The interrupt enable bit for CH4_ERR_INT. 771 */ 772 uint32_t ch4_err_int_ena: 1; 773 /** ch5_err_int_ena : R/W; bitpos: [21]; default: 0; 774 * The interrupt enable bit for CH5_ERR_INT. 775 */ 776 uint32_t ch5_err_int_ena: 1; 777 /** ch6_err_int_ena : R/W; bitpos: [22]; default: 0; 778 * The interrupt enable bit for CH6_ERR_INT. 779 */ 780 uint32_t ch6_err_int_ena: 1; 781 /** ch7_err_int_ena : R/W; bitpos: [23]; default: 0; 782 * The interrupt enable bit for CH7_ERR_INT. 783 */ 784 uint32_t ch7_err_int_ena: 1; 785 /** ch4_rx_thr_event_int_ena : R/W; bitpos: [24]; default: 0; 786 * The interrupt enable bit for CH4_RX_THR_EVENT_INT. 787 */ 788 uint32_t ch4_rx_thr_event_int_ena: 1; 789 /** ch5_rx_thr_event_int_ena : R/W; bitpos: [25]; default: 0; 790 * The interrupt enable bit for CH5_RX_THR_EVENT_INT. 791 */ 792 uint32_t ch5_rx_thr_event_int_ena: 1; 793 /** ch6_rx_thr_event_int_ena : R/W; bitpos: [26]; default: 0; 794 * The interrupt enable bit for CH6_RX_THR_EVENT_INT. 795 */ 796 uint32_t ch6_rx_thr_event_int_ena: 1; 797 /** ch7_rx_thr_event_int_ena : R/W; bitpos: [27]; default: 0; 798 * The interrupt enable bit for CH7_RX_THR_EVENT_INT. 799 */ 800 uint32_t ch7_rx_thr_event_int_ena: 1; 801 /** ch3_dma_access_fail_int_ena : R/W; bitpos: [28]; default: 0; 802 * The interrupt enable bit for CH3_DMA_ACCESS_FAIL_INT. 803 */ 804 uint32_t ch3_dma_access_fail_int_ena: 1; 805 /** ch7_dma_access_fail_int_ena : R/W; bitpos: [29]; default: 0; 806 * The interrupt enable bit for CH7_DMA_ACCESS_FAIL_INT. 807 */ 808 uint32_t ch7_dma_access_fail_int_ena: 1; 809 uint32_t reserved_30: 2; 810 }; 811 uint32_t val; 812 } rmt_int_ena_reg_t; 813 814 /** Type of int_clr register 815 * Interrupt clear bits 816 */ 817 typedef union { 818 struct { 819 /** ch0_tx_end_int_clr : WT; bitpos: [0]; default: 0; 820 * Set this bit to clear theCH0_TX_END_INT interrupt. 821 */ 822 uint32_t ch0_tx_end_int_clr: 1; 823 /** ch1_tx_end_int_clr : WT; bitpos: [1]; default: 0; 824 * Set this bit to clear theCH1_TX_END_INT interrupt. 825 */ 826 uint32_t ch1_tx_end_int_clr: 1; 827 /** ch2_tx_end_int_clr : WT; bitpos: [2]; default: 0; 828 * Set this bit to clear theCH2_TX_END_INT interrupt. 829 */ 830 uint32_t ch2_tx_end_int_clr: 1; 831 /** ch3_tx_end_int_clr : WT; bitpos: [3]; default: 0; 832 * Set this bit to clear theCH3_TX_END_INT interrupt. 833 */ 834 uint32_t ch3_tx_end_int_clr: 1; 835 /** ch0_err_int_clr : WT; bitpos: [4]; default: 0; 836 * Set this bit to clear theCH0_ERR_INT interrupt. 837 */ 838 uint32_t ch0_err_int_clr: 1; 839 /** ch1_err_int_clr : WT; bitpos: [5]; default: 0; 840 * Set this bit to clear theCH1_ERR_INT interrupt. 841 */ 842 uint32_t ch1_err_int_clr: 1; 843 /** ch2_err_int_clr : WT; bitpos: [6]; default: 0; 844 * Set this bit to clear theCH2_ERR_INT interrupt. 845 */ 846 uint32_t ch2_err_int_clr: 1; 847 /** ch3_err_int_clr : WT; bitpos: [7]; default: 0; 848 * Set this bit to clear theCH3_ERR_INT interrupt. 849 */ 850 uint32_t ch3_err_int_clr: 1; 851 /** ch0_tx_thr_event_int_clr : WT; bitpos: [8]; default: 0; 852 * Set this bit to clear theCH0_TX_THR_EVENT_INT interrupt. 853 */ 854 uint32_t ch0_tx_thr_event_int_clr: 1; 855 /** ch1_tx_thr_event_int_clr : WT; bitpos: [9]; default: 0; 856 * Set this bit to clear theCH1_TX_THR_EVENT_INT interrupt. 857 */ 858 uint32_t ch1_tx_thr_event_int_clr: 1; 859 /** ch2_tx_thr_event_int_clr : WT; bitpos: [10]; default: 0; 860 * Set this bit to clear theCH2_TX_THR_EVENT_INT interrupt. 861 */ 862 uint32_t ch2_tx_thr_event_int_clr: 1; 863 /** ch3_tx_thr_event_int_clr : WT; bitpos: [11]; default: 0; 864 * Set this bit to clear theCH3_TX_THR_EVENT_INT interrupt. 865 */ 866 uint32_t ch3_tx_thr_event_int_clr: 1; 867 /** ch0_tx_loop_int_clr : WT; bitpos: [12]; default: 0; 868 * Set this bit to clear theCH0_TX_LOOP_INT interrupt. 869 */ 870 uint32_t ch0_tx_loop_int_clr: 1; 871 /** ch1_tx_loop_int_clr : WT; bitpos: [13]; default: 0; 872 * Set this bit to clear theCH1_TX_LOOP_INT interrupt. 873 */ 874 uint32_t ch1_tx_loop_int_clr: 1; 875 /** ch2_tx_loop_int_clr : WT; bitpos: [14]; default: 0; 876 * Set this bit to clear theCH2_TX_LOOP_INT interrupt. 877 */ 878 uint32_t ch2_tx_loop_int_clr: 1; 879 /** ch3_tx_loop_int_clr : WT; bitpos: [15]; default: 0; 880 * Set this bit to clear theCH3_TX_LOOP_INT interrupt. 881 */ 882 uint32_t ch3_tx_loop_int_clr: 1; 883 /** ch4_rx_end_int_clr : WT; bitpos: [16]; default: 0; 884 * Set this bit to clear theCH4_RX_END_INT interrupt. 885 */ 886 uint32_t ch4_rx_end_int_clr: 1; 887 /** ch5_rx_end_int_clr : WT; bitpos: [17]; default: 0; 888 * Set this bit to clear theCH5_RX_END_INT interrupt. 889 */ 890 uint32_t ch5_rx_end_int_clr: 1; 891 /** ch6_rx_end_int_clr : WT; bitpos: [18]; default: 0; 892 * Set this bit to clear theCH6_RX_END_INT interrupt. 893 */ 894 uint32_t ch6_rx_end_int_clr: 1; 895 /** ch7_rx_end_int_clr : WT; bitpos: [19]; default: 0; 896 * Set this bit to clear theCH7_RX_END_INT interrupt. 897 */ 898 uint32_t ch7_rx_end_int_clr: 1; 899 /** ch4_err_int_clr : WT; bitpos: [20]; default: 0; 900 * Set this bit to clear theCH4_ERR_INT interrupt. 901 */ 902 uint32_t ch4_err_int_clr: 1; 903 /** ch5_err_int_clr : WT; bitpos: [21]; default: 0; 904 * Set this bit to clear theCH5_ERR_INT interrupt. 905 */ 906 uint32_t ch5_err_int_clr: 1; 907 /** ch6_err_int_clr : WT; bitpos: [22]; default: 0; 908 * Set this bit to clear theCH6_ERR_INT interrupt. 909 */ 910 uint32_t ch6_err_int_clr: 1; 911 /** ch7_err_int_clr : WT; bitpos: [23]; default: 0; 912 * Set this bit to clear theCH7_ERR_INT interrupt. 913 */ 914 uint32_t ch7_err_int_clr: 1; 915 /** ch4_rx_thr_event_int_clr : WT; bitpos: [24]; default: 0; 916 * Set this bit to clear theCH4_RX_THR_EVENT_INT interrupt. 917 */ 918 uint32_t ch4_rx_thr_event_int_clr: 1; 919 /** ch5_rx_thr_event_int_clr : WT; bitpos: [25]; default: 0; 920 * Set this bit to clear theCH5_RX_THR_EVENT_INT interrupt. 921 */ 922 uint32_t ch5_rx_thr_event_int_clr: 1; 923 /** ch6_rx_thr_event_int_clr : WT; bitpos: [26]; default: 0; 924 * Set this bit to clear theCH6_RX_THR_EVENT_INT interrupt. 925 */ 926 uint32_t ch6_rx_thr_event_int_clr: 1; 927 /** ch7_rx_thr_event_int_clr : WT; bitpos: [27]; default: 0; 928 * Set this bit to clear theCH7_RX_THR_EVENT_INT interrupt. 929 */ 930 uint32_t ch7_rx_thr_event_int_clr: 1; 931 /** ch3_dma_access_fail_int_clr : WT; bitpos: [28]; default: 0; 932 * Set this bit to clear the CH3_DMA_ACCESS_FAIL_INT interrupt. 933 */ 934 uint32_t ch3_dma_access_fail_int_clr: 1; 935 /** ch7_dma_access_fail_int_clr : WT; bitpos: [29]; default: 0; 936 * Set this bit to clear the CH7_DMA_ACCESS_FAIL_INT interrupt. 937 */ 938 uint32_t ch7_dma_access_fail_int_clr: 1; 939 uint32_t reserved_30: 2; 940 }; 941 uint32_t val; 942 } rmt_int_clr_reg_t; 943 944 945 /** Group: Carrier wave duty cycle registers */ 946 /** Type of chncarrier_duty register 947 * Channel n duty cycle configuration register 948 */ 949 typedef union { 950 struct { 951 /** carrier_low_chn : R/W; bitpos: [15:0]; default: 64; 952 * This register is used to configure carrier wave 's low level clock period for 953 * CHANNELn. 954 */ 955 uint32_t carrier_low_chn: 16; 956 /** carrier_high_chn : R/W; bitpos: [31:16]; default: 64; 957 * This register is used to configure carrier wave 's high level clock period for 958 * CHANNELn. 959 */ 960 uint32_t carrier_high_chn: 16; 961 }; 962 uint32_t val; 963 } rmt_chncarrier_duty_reg_t; 964 965 966 /** Group: Tx event configuration registers */ 967 /** Type of chn_tx_lim register 968 * Channel n Tx event configuration register 969 */ 970 typedef union { 971 struct { 972 /** tx_lim_chn : R/W; bitpos: [8:0]; default: 128; 973 * This register is used to configure the maximum entries that CHANNELn can send out. 974 */ 975 uint32_t tx_lim_chn: 9; 976 /** tx_loop_num_chn : R/W; bitpos: [18:9]; default: 0; 977 * This register is used to configure the maximum loop count when tx_conti_mode is 978 * valid. 979 */ 980 uint32_t tx_loop_num_chn: 10; 981 /** tx_loop_cnt_en_chn : R/W; bitpos: [19]; default: 0; 982 * This register is the enabled bit for loop count. 983 */ 984 uint32_t tx_loop_cnt_en_chn: 1; 985 /** loop_count_reset_chn : WT; bitpos: [20]; default: 0; 986 * This register is used to reset the loop count when tx_conti_mode is valid. 987 */ 988 uint32_t loop_count_reset_chn: 1; 989 /** loop_stop_en_chn : R/W; bitpos: [21]; default: 0; 990 * This bit is used to enable the loop send stop function after the loop counter 991 * counts to loop number for CHANNELn. 992 */ 993 uint32_t loop_stop_en_chn: 1; 994 uint32_t reserved_22: 10; 995 }; 996 uint32_t val; 997 } rmt_chn_tx_lim_reg_t; 998 999 /** Type of tx_sim register 1000 * RMT TX synchronous register 1001 */ 1002 typedef union { 1003 struct { 1004 /** tx_sim_ch0 : R/W; bitpos: [0]; default: 0; 1005 * Set this bit to enable CHANNEL0 to start sending data synchronously with other 1006 * enabled channels. 1007 */ 1008 uint32_t tx_sim_ch0: 1; 1009 /** tx_sim_ch1 : R/W; bitpos: [1]; default: 0; 1010 * Set this bit to enable CHANNEL1 to start sending data synchronously with other 1011 * enabled channels. 1012 */ 1013 uint32_t tx_sim_ch1: 1; 1014 /** tx_sim_ch2 : R/W; bitpos: [2]; default: 0; 1015 * Set this bit to enable CHANNEL2 to start sending data synchronously with other 1016 * enabled channels. 1017 */ 1018 uint32_t tx_sim_ch2: 1; 1019 /** tx_sim_ch3 : R/W; bitpos: [3]; default: 0; 1020 * Set this bit to enable CHANNEL3 to start sending data synchronously with other 1021 * enabled channels. 1022 */ 1023 uint32_t tx_sim_ch3: 1; 1024 /** tx_sim_en : R/W; bitpos: [4]; default: 0; 1025 * This register is used to enable multiple of channels to start sending data 1026 * synchronously. 1027 */ 1028 uint32_t tx_sim_en: 1; 1029 uint32_t reserved_5: 27; 1030 }; 1031 uint32_t val; 1032 } rmt_tx_sim_reg_t; 1033 1034 1035 /** Group: Rx event configuration registers */ 1036 /** Type of chm_rx_lim register 1037 * Channel m Rx event configuration register 1038 */ 1039 typedef union { 1040 struct { 1041 /** chm_rx_lim_reg : R/W; bitpos: [8:0]; default: 128; 1042 * This register is used to configure the maximum entries that CHANNELm can receive. 1043 */ 1044 uint32_t chm_rx_lim_reg: 9; 1045 uint32_t reserved_9: 23; 1046 }; 1047 uint32_t val; 1048 } rmt_chm_rx_lim_reg_t; 1049 1050 1051 /** Group: Version register */ 1052 /** Type of date register 1053 * RMT version register 1054 */ 1055 typedef union { 1056 struct { 1057 /** date : R/W; bitpos: [27:0]; default: 34607489; 1058 * This is the version register. 1059 */ 1060 uint32_t date: 28; 1061 uint32_t reserved_28: 4; 1062 }; 1063 uint32_t val; 1064 } rmt_date_reg_t; 1065 1066 1067 typedef struct { 1068 volatile rmt_chndata_reg_t chndata[4]; 1069 volatile rmt_chmdata_reg_t chmdata[4]; 1070 volatile rmt_chnconf0_reg_t chnconf0[4]; 1071 volatile rmt_chmconf_reg_t chmconf[4]; 1072 volatile rmt_chnstatus_reg_t chnstatus[4]; 1073 volatile rmt_chmstatus_reg_t chmstatus[4]; 1074 volatile rmt_int_raw_reg_t int_raw; 1075 volatile rmt_int_st_reg_t int_st; 1076 volatile rmt_int_ena_reg_t int_ena; 1077 volatile rmt_int_clr_reg_t int_clr; 1078 volatile rmt_chncarrier_duty_reg_t chncarrier_duty[4]; 1079 volatile rmt_chm_rx_carrier_rm_reg_t chm_rx_carrier_rm[4]; 1080 volatile rmt_chn_tx_lim_reg_t chn_tx_lim[4]; 1081 volatile rmt_chm_rx_lim_reg_t chm_rx_lim[4]; 1082 volatile rmt_sys_conf_reg_t sys_conf; 1083 volatile rmt_tx_sim_reg_t tx_sim; 1084 volatile rmt_ref_cnt_rst_reg_t ref_cnt_rst; 1085 volatile rmt_date_reg_t date; 1086 } rmt_dev_t; 1087 1088 #ifndef __cplusplus 1089 _Static_assert(sizeof(rmt_dev_t) == 0xd0, "Invalid size of rmt_dev_t structure"); 1090 #endif 1091 1092 typedef struct { 1093 union { 1094 struct { 1095 uint32_t duration0 : 15; 1096 uint32_t level0 : 1; 1097 uint32_t duration1 : 15; 1098 uint32_t level1 : 1; 1099 }; 1100 uint32_t val; 1101 }; 1102 } rmt_item32_t; 1103 1104 typedef struct { 1105 struct { 1106 volatile rmt_item32_t data32[48]; 1107 } chan[8]; 1108 } rmt_mem_t; 1109 1110 #ifndef __cplusplus 1111 _Static_assert(sizeof(rmt_item32_t) == 0x04, "Invalid size of rmt_item32_t structure"); 1112 _Static_assert(sizeof(rmt_mem_t) == 0x04 * 8 * 48, "Invalid size of rmt_mem_t structure"); 1113 #endif 1114 1115 extern rmt_dev_t RMT; 1116 extern rmt_mem_t RMTMEM; 1117 1118 #ifdef __cplusplus 1119 } 1120 #endif 1121