rtic/2/api/rp2040_pac/struct.I2C1.html
2024-12-06 13:35:18 +00:00

178 lines
No EOL
61 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="DW_apb_i2c address block"><title>I2C1 in rp2040_pac - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-b0742ba02757f159.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="rp2040_pac" data-themes="" data-resource-suffix="" data-rustdoc-version="1.83.0 (90b35a623 2024-11-26)" data-channel="1.83.0" data-search-js="search-f0d225181b97f9a4.js" data-settings-js="settings-805db61a62df4bd2.js" ><script src="../static.files/storage-1d39b6787ed640ff.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-f070b9041d14864c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-0111fcff984fae8f.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../rp2040_pac/index.html">rp2040_<wbr>pac</a><span class="version">0.6.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">I2C1</a></h2><h3><a href="#implementations">Associated Constants</a></h3><ul class="block associatedconstant"><li><a href="#associatedconstant.PTR" title="PTR">PTR</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.ptr" title="ptr">ptr</a></li><li><a href="#method.steal" title="steal">steal</a></li></ul><h3><a href="#deref-methods-RegisterBlock">Methods from Deref&lt;<wbr>Target=<wbr>Register<wbr>Block&gt;</a></h3><ul class="block deref-methods"><li><a href="#method.ic_ack_general_call" title="ic_ack_general_call">ic_ack_general_call</a></li><li><a href="#method.ic_clr_activity" title="ic_clr_activity">ic_clr_activity</a></li><li><a href="#method.ic_clr_gen_call" title="ic_clr_gen_call">ic_clr_gen_call</a></li><li><a href="#method.ic_clr_intr" title="ic_clr_intr">ic_clr_intr</a></li><li><a href="#method.ic_clr_rd_req" title="ic_clr_rd_req">ic_clr_rd_req</a></li><li><a href="#method.ic_clr_restart_det" title="ic_clr_restart_det">ic_clr_restart_det</a></li><li><a href="#method.ic_clr_rx_done" title="ic_clr_rx_done">ic_clr_rx_done</a></li><li><a href="#method.ic_clr_rx_over" title="ic_clr_rx_over">ic_clr_rx_over</a></li><li><a href="#method.ic_clr_rx_under" title="ic_clr_rx_under">ic_clr_rx_under</a></li><li><a href="#method.ic_clr_start_det" title="ic_clr_start_det">ic_clr_start_det</a></li><li><a href="#method.ic_clr_stop_det" title="ic_clr_stop_det">ic_clr_stop_det</a></li><li><a href="#method.ic_clr_tx_abrt" title="ic_clr_tx_abrt">ic_clr_tx_abrt</a></li><li><a href="#method.ic_clr_tx_over" title="ic_clr_tx_over">ic_clr_tx_over</a></li><li><a href="#method.ic_comp_param_1" title="ic_comp_param_1">ic_comp_param_1</a></li><li><a href="#method.ic_comp_type" title="ic_comp_type">ic_comp_type</a></li><li><a href="#method.ic_comp_version" title="ic_comp_version">ic_comp_version</a></li><li><a href="#method.ic_con" title="ic_con">ic_con</a></li><li><a href="#method.ic_data_cmd" title="ic_data_cmd">ic_data_cmd</a></li><li><a href="#method.ic_dma_cr" title="ic_dma_cr">ic_dma_cr</a></li><li><a href="#method.ic_dma_rdlr" title="ic_dma_rdlr">ic_dma_rdlr</a></li><li><a href="#method.ic_dma_tdlr" title="ic_dma_tdlr">ic_dma_tdlr</a></li><li><a href="#method.ic_enable" title="ic_enable">ic_enable</a></li><li><a href="#method.ic_enable_status" title="ic_enable_status">ic_enable_status</a></li><li><a href="#method.ic_fs_scl_hcnt" title="ic_fs_scl_hcnt">ic_fs_scl_hcnt</a></li><li><a href="#method.ic_fs_scl_lcnt" title="ic_fs_scl_lcnt">ic_fs_scl_lcnt</a></li><li><a href="#method.ic_fs_spklen" title="ic_fs_spklen">ic_fs_spklen</a></li><li><a href="#method.ic_intr_mask" title="ic_intr_mask">ic_intr_mask</a></li><li><a href="#method.ic_intr_stat" title="ic_intr_stat">ic_intr_stat</a></li><li><a href="#method.ic_raw_intr_stat" title="ic_raw_intr_stat">ic_raw_intr_stat</a></li><li><a href="#method.ic_rx_tl" title="ic_rx_tl">ic_rx_tl</a></li><li><a href="#method.ic_rxflr" title="ic_rxflr">ic_rxflr</a></li><li><a href="#method.ic_sar" title="ic_sar">ic_sar</a></li><li><a href="#method.ic_sda_hold" title="ic_sda_hold">ic_sda_hold</a></li><li><a href="#method.ic_sda_setup" title="ic_sda_setup">ic_sda_setup</a></li><li><a href="#method.ic_slv_data_nack_only" title="ic_slv_data_nack_only">ic_slv_data_nack_only</a></li><li><a href="#method.ic_ss_scl_hcnt" title="ic_ss_scl_hcnt">ic_ss_scl_hcnt</a></li><li><a href="#method.ic_ss_scl_lcnt" title="ic_ss_scl_lcnt">ic_ss_scl_lcnt</a></li><li><a href="#method.ic_status" title="ic_status">ic_status</a></li><li><a href="#method.ic_tar" title="ic_tar">ic_tar</a></li><li><a href="#method.ic_tx_abrt_source" title="ic_tx_abrt_source">ic_tx_abrt_source</a></li><li><a href="#method.ic_tx_tl" title="ic_tx_tl">ic_tx_tl</a></li><li><a href="#method.ic_txflr" title="ic_txflr">ic_txflr</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Debug-for-I2C1" title="Debug">Debug</a></li><li><a href="#impl-Deref-for-I2C1" title="Deref">Deref</a></li><li><a href="#impl-Send-for-I2C1" title="Send">Send</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Sync-for-I2C1" title="!Sync">!Sync</a></li><li><a href="#impl-Freeze-for-I2C1" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-I2C1" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Unpin-for-I2C1" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-I2C1" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate rp2040_<wbr>pac</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="index.html">rp2040_pac</a></span><h1>Struct <span class="struct">I2C1</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/rp2040_pac/lib.rs.html#1406-1408">source</a> </span></div><pre class="rust item-decl"><code>pub struct I2C1 { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>DW_apb_i2c address block</p>
<p>List of configuration constants for the Synopsys I2C hardware (you may see references to these in I2C register header; these are <em>fixed</em> values, set at hardware design time):</p>
<p>IC_ULTRA_FAST_MODE ……………. 0x0<br />
IC_UFM_TBUF_CNT_DEFAULT ……….. 0x8<br />
IC_UFM_SCL_LOW_COUNT ………….. 0x0008<br />
IC_UFM_SCL_HIGH_COUNT …………. 0x0006<br />
IC_TX_TL …………………….. 0x0<br />
IC_TX_CMD_BLOCK ………………. 0x1<br />
IC_HAS_DMA …………………… 0x1<br />
IC_HAS_ASYNC_FIFO …………….. 0x0<br />
IC_SMBUS_ARP …………………. 0x0<br />
IC_FIRST_DATA_BYTE_STATUS ……… 0x1<br />
IC_INTR_IO …………………… 0x1<br />
IC_MASTER_MODE ……………….. 0x1<br />
IC_DEFAULT_ACK_GENERAL_CALL ……. 0x1<br />
IC_INTR_POL ………………….. 0x1<br />
IC_OPTIONAL_SAR ………………. 0x0<br />
IC_DEFAULT_TAR_SLAVE_ADDR ……… 0x055<br />
IC_DEFAULT_SLAVE_ADDR …………. 0x055<br />
IC_DEFAULT_HS_SPKLEN ………….. 0x1<br />
IC_FS_SCL_HIGH_COUNT ………….. 0x0006<br />
IC_HS_SCL_LOW_COUNT …………… 0x0008<br />
IC_DEVICE_ID_VALUE ……………. 0x0<br />
IC_10BITADDR_MASTER …………… 0x0<br />
IC_CLK_FREQ_OPTIMIZATION ………. 0x0<br />
IC_DEFAULT_FS_SPKLEN ………….. 0x7<br />
IC_ADD_ENCODED_PARAMS …………. 0x0<br />
IC_DEFAULT_SDA_HOLD …………… 0x000001<br />
IC_DEFAULT_SDA_SETUP ………….. 0x64<br />
IC_AVOID_RX_FIFO_FLUSH_ON_TX_ABRT . 0x0<br />
IC_CLOCK_PERIOD ………………. 100<br />
IC_EMPTYFIFO_HOLD_MASTER_EN ……. 1<br />
IC_RESTART_EN ………………… 0x1<br />
IC_TX_CMD_BLOCK_DEFAULT ……….. 0x0<br />
IC_BUS_CLEAR_FEATURE ………….. 0x0<br />
IC_CAP_LOADING ……………….. 100<br />
IC_FS_SCL_LOW_COUNT …………… 0x000d<br />
APB_DATA_WIDTH ……………….. 32<br />
IC_SDA_STUCK_TIMEOUT_DEFAULT …… 0xffffffff<br />
IC_SLV_DATA_NACK_ONLY …………. 0x1<br />
IC_10BITADDR_SLAVE ……………. 0x0<br />
IC_CLK_TYPE ………………….. 0x0<br />
IC_SMBUS_UDID_MSB …………….. 0x0<br />
IC_SMBUS_SUSPEND_ALERT ………… 0x0<br />
IC_HS_SCL_HIGH_COUNT ………….. 0x0006<br />
IC_SLV_RESTART_DET_EN …………. 0x1<br />
IC_SMBUS …………………….. 0x0<br />
IC_OPTIONAL_SAR_DEFAULT ……….. 0x0<br />
IC_PERSISTANT_SLV_ADDR_DEFAULT …. 0x0<br />
IC_USE_COUNTS ………………… 0x0<br />
IC_RX_BUFFER_DEPTH ……………. 16<br />
IC_SCL_STUCK_TIMEOUT_DEFAULT …… 0xffffffff<br />
IC_RX_FULL_HLD_BUS_EN …………. 0x1<br />
IC_SLAVE_DISABLE ……………… 0x1<br />
IC_RX_TL …………………….. 0x0<br />
IC_DEVICE_ID …………………. 0x0<br />
IC_HC_COUNT_VALUES ……………. 0x0<br />
I2C_DYNAMIC_TAR_UPDATE ………… 0<br />
IC_SMBUS_CLK_LOW_MEXT_DEFAULT ….. 0xffffffff<br />
IC_SMBUS_CLK_LOW_SEXT_DEFAULT ….. 0xffffffff<br />
IC_HS_MASTER_CODE …………….. 0x1<br />
IC_SMBUS_RST_IDLE_CNT_DEFAULT ….. 0xffff<br />
IC_SMBUS_UDID_LSB_DEFAULT ……… 0xffffffff<br />
IC_SS_SCL_HIGH_COUNT ………….. 0x0028<br />
IC_SS_SCL_LOW_COUNT …………… 0x002f<br />
IC_MAX_SPEED_MODE …………….. 0x2<br />
IC_STAT_FOR_CLK_STRETCH ……….. 0x0<br />
IC_STOP_DET_IF_MASTER_ACTIVE …… 0x0<br />
IC_DEFAULT_UFM_SPKLEN …………. 0x1<br />
IC_TX_BUFFER_DEPTH ……………. 16</p>
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-I2C1" class="impl"><a class="src rightside" href="../src/rp2040_pac/lib.rs.html#1410-1436">source</a><a href="#impl-I2C1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.I2C1.html" title="struct rp2040_pac::I2C1">I2C1</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedconstant.PTR" class="associatedconstant"><a class="src rightside" href="../src/rp2040_pac/lib.rs.html#1412">source</a><h4 class="code-header">pub const <a href="#associatedconstant.PTR" class="constant">PTR</a>: <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.pointer.html">*const </a><a class="struct" href="i2c0/struct.RegisterBlock.html" title="struct rp2040_pac::i2c0::RegisterBlock">RegisterBlock</a> = {0x40048000 as *const i2c0::RegisterBlock}</h4></section></summary><div class="docblock"><p>Pointer to the register block</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ptr" class="method"><a class="src rightside" href="../src/rp2040_pac/lib.rs.html#1415-1417">source</a><h4 class="code-header">pub const fn <a href="#method.ptr" class="fn">ptr</a>() -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.pointer.html">*const </a><a class="struct" href="i2c0/struct.RegisterBlock.html" title="struct rp2040_pac::i2c0::RegisterBlock">RegisterBlock</a></h4></section></summary><div class="docblock"><p>Return the pointer to the register block</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.steal" class="method"><a class="src rightside" href="../src/rp2040_pac/lib.rs.html#1431-1435">source</a><h4 class="code-header">pub unsafe fn <a href="#method.steal" class="fn">steal</a>() -&gt; Self</h4></section></summary><div class="docblock"><p>Steal an instance of this peripheral</p>
<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
<p>Ensure that the new instance of the peripheral cannot be used in a way
that may race with any existing instances, for example by only
accessing read-only or write-only registers, or by consuming the
original peripheral and using critical sections to coordinate
access between multiple new instances.</p>
<p>Additionally, other software such as HALs may rely on only one
peripheral instance existing to ensure memory safety; ensure
no stolen instances are passed to such software.</p>
</div></details></div></details></div><details class="toggle big-toggle" open><summary><h2 id="deref-methods-RegisterBlock" class="section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&lt;Target = <a class="struct" href="i2c0/struct.RegisterBlock.html" title="struct rp2040_pac::i2c0::RegisterBlock">RegisterBlock</a>&gt;</span><a href="#deref-methods-RegisterBlock" class="anchor">§</a></h2></summary><div id="deref-methods-RegisterBlock-1" class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.ic_con" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#57-59">source</a><h4 class="code-header">pub fn <a href="#method.ic_con" class="fn">ic_con</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CON.html" title="type rp2040_pac::i2c0::IC_CON">IC_CON</a></h4></section></summary><div class="docblock"><p>0x00 - I2C Control Register. This register can be written only when the DW_apb_i2c is disabled, which corresponds to the IC_ENABLE[0]
register being set to 0. Writes at other times have no effect.</p>
<p>Read/Write Access: - bit 10 is read only. - bit 11 is read only - bit 16 is read only - bit 17 is read only - bits 18 and 19 are read only.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_tar" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#67-69">source</a><h4 class="code-header">pub fn <a href="#method.ic_tar" class="fn">ic_tar</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_TAR.html" title="type rp2040_pac::i2c0::IC_TAR">IC_TAR</a></h4></section></summary><div class="docblock"><p>0x04 - I2C Target Address Register</p>
<p>This register is 12 bits wide, and bits 31:12 are reserved. This register can be written to only when IC_ENABLE[0]
is set to 0.</p>
<p>Note: If the software or application is aware that the DW_apb_i2c is not using the TAR address for the pending commands in the Tx FIFO, then it is possible to update the TAR address even while the Tx FIFO has entries (IC_STATUS[2]= 0). - It is not necessary to perform any write to this register if DW_apb_i2c is enabled as an I2C slave only.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_sar" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#72-74">source</a><h4 class="code-header">pub fn <a href="#method.ic_sar" class="fn">ic_sar</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_SAR.html" title="type rp2040_pac::i2c0::IC_SAR">IC_SAR</a></h4></section></summary><div class="docblock"><p>0x08 - I2C Slave Address Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_data_cmd" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#81-83">source</a><h4 class="code-header">pub fn <a href="#method.ic_data_cmd" class="fn">ic_data_cmd</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_DATA_CMD.html" title="type rp2040_pac::i2c0::IC_DATA_CMD">IC_DATA_CMD</a></h4></section></summary><div class="docblock"><p>0x10 - I2C Rx/Tx Data Buffer and Command Register; this is the register the CPU writes to when filling the TX FIFO and the CPU reads from when retrieving bytes from RX FIFO.</p>
<p>The size of the register changes as follows:</p>
<p>Write: - 11 bits when IC_EMPTYFIFO_HOLD_MASTER_EN=1 - 9 bits when IC_EMPTYFIFO_HOLD_MASTER_EN=0 Read: - 12 bits when IC_FIRST_DATA_BYTE_STATUS = 1 - 8 bits when IC_FIRST_DATA_BYTE_STATUS = 0 Note: In order for the DW_apb_i2c to continue acknowledging reads, a read command should be written for every byte that is to be received; otherwise the DW_apb_i2c will stop acknowledging.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_ss_scl_hcnt" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#86-88">source</a><h4 class="code-header">pub fn <a href="#method.ic_ss_scl_hcnt" class="fn">ic_ss_scl_hcnt</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_SS_SCL_HCNT.html" title="type rp2040_pac::i2c0::IC_SS_SCL_HCNT">IC_SS_SCL_HCNT</a></h4></section></summary><div class="docblock"><p>0x14 - Standard Speed I2C Clock SCL High Count Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_ss_scl_lcnt" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#91-93">source</a><h4 class="code-header">pub fn <a href="#method.ic_ss_scl_lcnt" class="fn">ic_ss_scl_lcnt</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_SS_SCL_LCNT.html" title="type rp2040_pac::i2c0::IC_SS_SCL_LCNT">IC_SS_SCL_LCNT</a></h4></section></summary><div class="docblock"><p>0x18 - Standard Speed I2C Clock SCL Low Count Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_fs_scl_hcnt" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#96-98">source</a><h4 class="code-header">pub fn <a href="#method.ic_fs_scl_hcnt" class="fn">ic_fs_scl_hcnt</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_FS_SCL_HCNT.html" title="type rp2040_pac::i2c0::IC_FS_SCL_HCNT">IC_FS_SCL_HCNT</a></h4></section></summary><div class="docblock"><p>0x1c - Fast Mode or Fast Mode Plus I2C Clock SCL High Count Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_fs_scl_lcnt" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#101-103">source</a><h4 class="code-header">pub fn <a href="#method.ic_fs_scl_lcnt" class="fn">ic_fs_scl_lcnt</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_FS_SCL_LCNT.html" title="type rp2040_pac::i2c0::IC_FS_SCL_LCNT">IC_FS_SCL_LCNT</a></h4></section></summary><div class="docblock"><p>0x20 - Fast Mode or Fast Mode Plus I2C Clock SCL Low Count Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_intr_stat" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#108-110">source</a><h4 class="code-header">pub fn <a href="#method.ic_intr_stat" class="fn">ic_intr_stat</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_INTR_STAT.html" title="type rp2040_pac::i2c0::IC_INTR_STAT">IC_INTR_STAT</a></h4></section></summary><div class="docblock"><p>0x2c - I2C Interrupt Status Register</p>
<p>Each bit in this register has a corresponding mask bit in the IC_INTR_MASK register. These bits are cleared by reading the matching interrupt clear register. The unmasked raw versions of these bits are available in the IC_RAW_INTR_STAT register.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_intr_mask" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#115-117">source</a><h4 class="code-header">pub fn <a href="#method.ic_intr_mask" class="fn">ic_intr_mask</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_INTR_MASK.html" title="type rp2040_pac::i2c0::IC_INTR_MASK">IC_INTR_MASK</a></h4></section></summary><div class="docblock"><p>0x30 - I2C Interrupt Mask Register.</p>
<p>These bits mask their corresponding interrupt status bits. This register is active low; a value of 0 masks the interrupt, whereas a value of 1 unmasks the interrupt.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_raw_intr_stat" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#122-124">source</a><h4 class="code-header">pub fn <a href="#method.ic_raw_intr_stat" class="fn">ic_raw_intr_stat</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_RAW_INTR_STAT.html" title="type rp2040_pac::i2c0::IC_RAW_INTR_STAT">IC_RAW_INTR_STAT</a></h4></section></summary><div class="docblock"><p>0x34 - I2C Raw Interrupt Status Register</p>
<p>Unlike the IC_INTR_STAT register, these bits are not masked so they always show the true status of the DW_apb_i2c.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_rx_tl" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#127-129">source</a><h4 class="code-header">pub fn <a href="#method.ic_rx_tl" class="fn">ic_rx_tl</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_RX_TL.html" title="type rp2040_pac::i2c0::IC_RX_TL">IC_RX_TL</a></h4></section></summary><div class="docblock"><p>0x38 - I2C Receive FIFO Threshold Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_tx_tl" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#132-134">source</a><h4 class="code-header">pub fn <a href="#method.ic_tx_tl" class="fn">ic_tx_tl</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_TX_TL.html" title="type rp2040_pac::i2c0::IC_TX_TL">IC_TX_TL</a></h4></section></summary><div class="docblock"><p>0x3c - I2C Transmit FIFO Threshold Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_intr" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#137-139">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_intr" class="fn">ic_clr_intr</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_INTR.html" title="type rp2040_pac::i2c0::IC_CLR_INTR">IC_CLR_INTR</a></h4></section></summary><div class="docblock"><p>0x40 - Clear Combined and Individual Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_rx_under" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#142-144">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_rx_under" class="fn">ic_clr_rx_under</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_RX_UNDER.html" title="type rp2040_pac::i2c0::IC_CLR_RX_UNDER">IC_CLR_RX_UNDER</a></h4></section></summary><div class="docblock"><p>0x44 - Clear RX_UNDER Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_rx_over" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#147-149">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_rx_over" class="fn">ic_clr_rx_over</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_RX_OVER.html" title="type rp2040_pac::i2c0::IC_CLR_RX_OVER">IC_CLR_RX_OVER</a></h4></section></summary><div class="docblock"><p>0x48 - Clear RX_OVER Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_tx_over" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#152-154">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_tx_over" class="fn">ic_clr_tx_over</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_TX_OVER.html" title="type rp2040_pac::i2c0::IC_CLR_TX_OVER">IC_CLR_TX_OVER</a></h4></section></summary><div class="docblock"><p>0x4c - Clear TX_OVER Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_rd_req" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#157-159">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_rd_req" class="fn">ic_clr_rd_req</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_RD_REQ.html" title="type rp2040_pac::i2c0::IC_CLR_RD_REQ">IC_CLR_RD_REQ</a></h4></section></summary><div class="docblock"><p>0x50 - Clear RD_REQ Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_tx_abrt" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#162-164">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_tx_abrt" class="fn">ic_clr_tx_abrt</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_TX_ABRT.html" title="type rp2040_pac::i2c0::IC_CLR_TX_ABRT">IC_CLR_TX_ABRT</a></h4></section></summary><div class="docblock"><p>0x54 - Clear TX_ABRT Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_rx_done" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#167-169">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_rx_done" class="fn">ic_clr_rx_done</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_RX_DONE.html" title="type rp2040_pac::i2c0::IC_CLR_RX_DONE">IC_CLR_RX_DONE</a></h4></section></summary><div class="docblock"><p>0x58 - Clear RX_DONE Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_activity" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#172-174">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_activity" class="fn">ic_clr_activity</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_ACTIVITY.html" title="type rp2040_pac::i2c0::IC_CLR_ACTIVITY">IC_CLR_ACTIVITY</a></h4></section></summary><div class="docblock"><p>0x5c - Clear ACTIVITY Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_stop_det" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#177-179">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_stop_det" class="fn">ic_clr_stop_det</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_STOP_DET.html" title="type rp2040_pac::i2c0::IC_CLR_STOP_DET">IC_CLR_STOP_DET</a></h4></section></summary><div class="docblock"><p>0x60 - Clear STOP_DET Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_start_det" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#182-184">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_start_det" class="fn">ic_clr_start_det</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_START_DET.html" title="type rp2040_pac::i2c0::IC_CLR_START_DET">IC_CLR_START_DET</a></h4></section></summary><div class="docblock"><p>0x64 - Clear START_DET Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_gen_call" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#187-189">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_gen_call" class="fn">ic_clr_gen_call</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_GEN_CALL.html" title="type rp2040_pac::i2c0::IC_CLR_GEN_CALL">IC_CLR_GEN_CALL</a></h4></section></summary><div class="docblock"><p>0x68 - Clear GEN_CALL Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_enable" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#192-194">source</a><h4 class="code-header">pub fn <a href="#method.ic_enable" class="fn">ic_enable</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_ENABLE.html" title="type rp2040_pac::i2c0::IC_ENABLE">IC_ENABLE</a></h4></section></summary><div class="docblock"><p>0x6c - I2C Enable Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_status" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#201-203">source</a><h4 class="code-header">pub fn <a href="#method.ic_status" class="fn">ic_status</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_STATUS.html" title="type rp2040_pac::i2c0::IC_STATUS">IC_STATUS</a></h4></section></summary><div class="docblock"><p>0x70 - I2C Status Register</p>
<p>This is a read-only register used to indicate the current transfer status and FIFO status. The status register may be read at any time. None of the bits in this register request an interrupt.</p>
<p>When the I2C is disabled by writing 0 in bit 0 of the IC_ENABLE register: - Bits 1 and 2 are set to 1 - Bits 3 and 10 are set to 0 When the master or slave state machines goes to idle and ic_en=0: - Bits 5 and 6 are set to 0</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_txflr" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#206-208">source</a><h4 class="code-header">pub fn <a href="#method.ic_txflr" class="fn">ic_txflr</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_TXFLR.html" title="type rp2040_pac::i2c0::IC_TXFLR">IC_TXFLR</a></h4></section></summary><div class="docblock"><p>0x74 - I2C Transmit FIFO Level Register This register contains the number of valid data entries in the transmit FIFO buffer. It is cleared whenever: - The I2C is disabled - There is a transmit abort - that is, TX_ABRT bit is set in the IC_RAW_INTR_STAT register - The slave bulk transmit mode is aborted The register increments whenever data is placed into the transmit FIFO and decrements when data is taken from the transmit FIFO.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_rxflr" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#211-213">source</a><h4 class="code-header">pub fn <a href="#method.ic_rxflr" class="fn">ic_rxflr</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_RXFLR.html" title="type rp2040_pac::i2c0::IC_RXFLR">IC_RXFLR</a></h4></section></summary><div class="docblock"><p>0x78 - I2C Receive FIFO Level Register This register contains the number of valid data entries in the receive FIFO buffer. It is cleared whenever: - The I2C is disabled - Whenever there is a transmit abort caused by any of the events tracked in IC_TX_ABRT_SOURCE The register increments whenever data is placed into the receive FIFO and decrements when data is taken from the receive FIFO.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_sda_hold" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#228-230">source</a><h4 class="code-header">pub fn <a href="#method.ic_sda_hold" class="fn">ic_sda_hold</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_SDA_HOLD.html" title="type rp2040_pac::i2c0::IC_SDA_HOLD">IC_SDA_HOLD</a></h4></section></summary><div class="docblock"><p>0x7c - I2C SDA Hold Time Length Register</p>
<p>The bits [15:0]
of this register are used to control the hold time of SDA during transmit in both slave and master mode (after SCL goes from HIGH to LOW).</p>
<p>The bits [23:16]
of this register are used to extend the SDA transition (if any) whenever SCL is HIGH in the receiver in either master or slave mode.</p>
<p>Writes to this register succeed only when IC_ENABLE[0]=0.</p>
<p>The values in this register are in units of ic_clk period. The value programmed in IC_SDA_TX_HOLD must be greater than the minimum hold time in each mode (one cycle in master mode, seven cycles in slave mode) for the value to be implemented.</p>
<p>The programmed SDA hold time during transmit (IC_SDA_TX_HOLD) cannot exceed at any time the duration of the low part of scl. Therefore the programmed value cannot be larger than N_SCL_LOW-2, where N_SCL_LOW is the duration of the low part of the scl period measured in ic_clk cycles.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_tx_abrt_source" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#237-239">source</a><h4 class="code-header">pub fn <a href="#method.ic_tx_abrt_source" class="fn">ic_tx_abrt_source</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_TX_ABRT_SOURCE.html" title="type rp2040_pac::i2c0::IC_TX_ABRT_SOURCE">IC_TX_ABRT_SOURCE</a></h4></section></summary><div class="docblock"><p>0x80 - I2C Transmit Abort Source Register</p>
<p>This register has 32 bits that indicate the source of the TX_ABRT bit. Except for Bit 9, this register is cleared whenever the IC_CLR_TX_ABRT register or the IC_CLR_INTR register is read. To clear Bit 9, the source of the ABRT_SBYTE_NORSTRT must be fixed first; RESTART must be enabled (IC_CON[5]=1), the SPECIAL bit must be cleared (IC_TAR[11]), or the GC_OR_START bit must be cleared (IC_TAR[10]).</p>
<p>Once the source of the ABRT_SBYTE_NORSTRT is fixed, then this bit can be cleared in the same manner as other bits in this register. If the source of the ABRT_SBYTE_NORSTRT is not fixed before attempting to clear this bit, Bit 9 clears for one cycle and is then re-asserted.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_slv_data_nack_only" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#249-251">source</a><h4 class="code-header">pub fn <a href="#method.ic_slv_data_nack_only" class="fn">ic_slv_data_nack_only</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_SLV_DATA_NACK_ONLY.html" title="type rp2040_pac::i2c0::IC_SLV_DATA_NACK_ONLY">IC_SLV_DATA_NACK_ONLY</a></h4></section></summary><div class="docblock"><p>0x84 - Generate Slave Data NACK Register</p>
<p>The register is used to generate a NACK for the data part of a transfer when DW_apb_i2c is acting as a slave-receiver. This register only exists when the IC_SLV_DATA_NACK_ONLY parameter is set to 1. When this parameter disabled, this register does not exist and writing to the registers address has no effect.</p>
<p>A write can occur on this register if both of the following conditions are met: - DW_apb_i2c is disabled (IC_ENABLE[0]
= 0) - Slave part is inactive (IC_STATUS[6]
= 0) Note: The IC_STATUS[6]
is a register read-back location for the internal slv_activity signal; the user should poll this before writing the ic_slv_data_nack_only bit.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_dma_cr" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#256-258">source</a><h4 class="code-header">pub fn <a href="#method.ic_dma_cr" class="fn">ic_dma_cr</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_DMA_CR.html" title="type rp2040_pac::i2c0::IC_DMA_CR">IC_DMA_CR</a></h4></section></summary><div class="docblock"><p>0x88 - DMA Control Register</p>
<p>The register is used to enable the DMA Controller interface operation. There is a separate bit for transmit and receive. This can be programmed regardless of the state of IC_ENABLE.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_dma_tdlr" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#261-263">source</a><h4 class="code-header">pub fn <a href="#method.ic_dma_tdlr" class="fn">ic_dma_tdlr</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_DMA_TDLR.html" title="type rp2040_pac::i2c0::IC_DMA_TDLR">IC_DMA_TDLR</a></h4></section></summary><div class="docblock"><p>0x8c - DMA Transmit Data Level Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_dma_rdlr" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#266-268">source</a><h4 class="code-header">pub fn <a href="#method.ic_dma_rdlr" class="fn">ic_dma_rdlr</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_DMA_RDLR.html" title="type rp2040_pac::i2c0::IC_DMA_RDLR">IC_DMA_RDLR</a></h4></section></summary><div class="docblock"><p>0x90 - I2C Receive Data Level Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_sda_setup" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#278-280">source</a><h4 class="code-header">pub fn <a href="#method.ic_sda_setup" class="fn">ic_sda_setup</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_SDA_SETUP.html" title="type rp2040_pac::i2c0::IC_SDA_SETUP">IC_SDA_SETUP</a></h4></section></summary><div class="docblock"><p>0x94 - I2C SDA Setup Register</p>
<p>This register controls the amount of time delay (in terms of number of ic_clk clock periods) introduced in the rising edge of SCL - relative to SDA changing - when DW_apb_i2c services a read request in a slave-transmitter operation. The relevant I2C requirement is tSU:DAT (note 4) as detailed in the I2C Bus Specification. This register must be programmed with a value equal to or greater than 2.</p>
<p>Writes to this register succeed only when IC_ENABLE[0]
= 0.</p>
<p>Note: The length of setup time is calculated using [(IC_SDA_SETUP - 1) * (ic_clk_period)], so if the user requires 10 ic_clk periods of setup time, they should program a value of 11. The IC_SDA_SETUP register is only used by the DW_apb_i2c when operating as a slave transmitter.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_ack_general_call" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#287-289">source</a><h4 class="code-header">pub fn <a href="#method.ic_ack_general_call" class="fn">ic_ack_general_call</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_ACK_GENERAL_CALL.html" title="type rp2040_pac::i2c0::IC_ACK_GENERAL_CALL">IC_ACK_GENERAL_CALL</a></h4></section></summary><div class="docblock"><p>0x98 - I2C ACK General Call Register</p>
<p>The register controls whether DW_apb_i2c responds with a ACK or NACK when it receives an I2C General Call address.</p>
<p>This register is applicable only when the DW_apb_i2c is in slave mode.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_enable_status" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#304-306">source</a><h4 class="code-header">pub fn <a href="#method.ic_enable_status" class="fn">ic_enable_status</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_ENABLE_STATUS.html" title="type rp2040_pac::i2c0::IC_ENABLE_STATUS">IC_ENABLE_STATUS</a></h4></section></summary><div class="docblock"><p>0x9c - I2C Enable Status Register</p>
<p>The register is used to report the DW_apb_i2c hardware status when the IC_ENABLE[0]
register is set from 1 to 0; that is, when DW_apb_i2c is disabled.</p>
<p>If IC_ENABLE[0]
has been set to 1, bits 2:1 are forced to 0, and bit 0 is forced to 1.</p>
<p>If IC_ENABLE[0]
has been set to 0, bits 2:1 is only be valid as soon as bit 0 is read as 0.</p>
<p>Note: When IC_ENABLE[0]
has been set to 0, a delay occurs for bit 0 to be read as 0 because disabling the DW_apb_i2c depends on I2C bus activities.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_fs_spklen" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#311-313">source</a><h4 class="code-header">pub fn <a href="#method.ic_fs_spklen" class="fn">ic_fs_spklen</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_FS_SPKLEN.html" title="type rp2040_pac::i2c0::IC_FS_SPKLEN">IC_FS_SPKLEN</a></h4></section></summary><div class="docblock"><p>0xa0 - I2C SS, FS or FM+ spike suppression limit</p>
<p>This register is used to store the duration, measured in ic_clk cycles, of the longest spike that is filtered out by the spike suppression logic when the component is operating in SS, FS or FM+ modes. The relevant I2C requirement is tSP (table 4) as detailed in the I2C Bus Specification. This register must be programmed with a minimum value of 1.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_clr_restart_det" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#316-318">source</a><h4 class="code-header">pub fn <a href="#method.ic_clr_restart_det" class="fn">ic_clr_restart_det</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_CLR_RESTART_DET.html" title="type rp2040_pac::i2c0::IC_CLR_RESTART_DET">IC_CLR_RESTART_DET</a></h4></section></summary><div class="docblock"><p>0xa8 - Clear RESTART_DET Interrupt Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_comp_param_1" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#323-325">source</a><h4 class="code-header">pub fn <a href="#method.ic_comp_param_1" class="fn">ic_comp_param_1</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_COMP_PARAM_1.html" title="type rp2040_pac::i2c0::IC_COMP_PARAM_1">IC_COMP_PARAM_1</a></h4></section></summary><div class="docblock"><p>0xf4 - Component Parameter Register 1</p>
<p>Note This register is not implemented and therefore reads as 0. If it was implemented it would be a constant read-only register that contains encoded information about the components parameter settings. Fields shown below are the settings for those parameters</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_comp_version" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#328-330">source</a><h4 class="code-header">pub fn <a href="#method.ic_comp_version" class="fn">ic_comp_version</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_COMP_VERSION.html" title="type rp2040_pac::i2c0::IC_COMP_VERSION">IC_COMP_VERSION</a></h4></section></summary><div class="docblock"><p>0xf8 - I2C Component Version Register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ic_comp_type" class="method"><a class="src rightside" href="../src/rp2040_pac/i2c0.rs.html#333-335">source</a><h4 class="code-header">pub fn <a href="#method.ic_comp_type" class="fn">ic_comp_type</a>(&amp;self) -&gt; &amp;<a class="type" href="i2c0/type.IC_COMP_TYPE.html" title="type rp2040_pac::i2c0::IC_COMP_TYPE">IC_COMP_TYPE</a></h4></section></summary><div class="docblock"><p>0xfc - I2C Component Type Register</p>
</div></details></div></details><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-I2C1" class="impl"><a class="src rightside" href="../src/rp2040_pac/lib.rs.html#1444-1448">source</a><a href="#impl-Debug-for-I2C1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.I2C1.html" title="struct rp2040_pac::I2C1">I2C1</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/rp2040_pac/lib.rs.html#1445-1447">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.83.0/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.83.0/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/1.83.0/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/1.83.0/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deref-for-I2C1" class="impl"><a class="src rightside" href="../src/rp2040_pac/lib.rs.html#1437-1443">source</a><a href="#impl-Deref-for-I2C1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.I2C1.html" title="struct rp2040_pac::I2C1">I2C1</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl"><a class="src rightside" href="../src/rp2040_pac/lib.rs.html#1438">source</a><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.83.0/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = <a class="struct" href="i2c0/struct.RegisterBlock.html" title="struct rp2040_pac::i2c0::RegisterBlock">RegisterBlock</a></h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl"><a class="src rightside" href="../src/rp2040_pac/lib.rs.html#1440-1442">source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.83.0/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&amp;self) -&gt; &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.83.0/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><section id="impl-Send-for-I2C1" class="impl"><a class="src rightside" href="../src/rp2040_pac/lib.rs.html#1409">source</a><a href="#impl-Send-for-I2C1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.I2C1.html" title="struct rp2040_pac::I2C1">I2C1</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-I2C1" class="impl"><a href="#impl-Freeze-for-I2C1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.I2C1.html" title="struct rp2040_pac::I2C1">I2C1</a></h3></section><section id="impl-RefUnwindSafe-for-I2C1" class="impl"><a href="#impl-RefUnwindSafe-for-I2C1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.I2C1.html" title="struct rp2040_pac::I2C1">I2C1</a></h3></section><section id="impl-Sync-for-I2C1" class="impl"><a href="#impl-Sync-for-I2C1" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.83.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.I2C1.html" title="struct rp2040_pac::I2C1">I2C1</a></h3></section><section id="impl-Unpin-for-I2C1" class="impl"><a href="#impl-Unpin-for-I2C1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.I2C1.html" title="struct rp2040_pac::I2C1">I2C1</a></h3></section><section id="impl-UnwindSafe-for-I2C1" class="impl"><a href="#impl-UnwindSafe-for-I2C1" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.I2C1.html" title="struct rp2040_pac::I2C1">I2C1</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/any.rs.html#138">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.83.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/any.rs.html#139">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.83.0/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.83.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.83.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/borrow.rs.html#209">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.83.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/borrow.rs.html#211">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.83.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.83.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/borrow.rs.html#217">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.83.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/borrow.rs.html#218">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.83.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.83.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.83.0/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.83.0/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.83.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/convert/mod.rs.html#809">source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.83.0/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.83.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/convert/mod.rs.html#794">source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.83.0/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.83.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>