MCUXpresso_LPC55S69/docs/MCUXpresso SDK API Referenc.../a00028.html

1758 lines
100 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>MCUXpresso SDK API Reference Manual: I2C Master Driver</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">MCUXpresso SDK API Reference Manual
&#160;<span id="projectnumber">Rev 2.15.000</span>
</div>
<div id="projectbrief">NXP Semiconductors</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>API&#160;Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('a00028.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">I2C Master Driver<div class="ingroups"><a class="el" href="a00245.html">I2C: Inter-Integrated Circuit Driver</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:a00342"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a00342">_i2c_master_config</a></td></tr>
<tr class="memdesc:a00342"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure with settings to initialize the I2C master module. <a href="a00028.html#a00342">More...</a><br/></td></tr>
<tr class="separator:a00342"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00345"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a00345">_i2c_master_transfer</a></td></tr>
<tr class="memdesc:a00345"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-blocking transfer descriptor structure. <a href="a00028.html#a00345">More...</a><br/></td></tr>
<tr class="separator:a00345"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00344"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a00344">_i2c_master_handle</a></td></tr>
<tr class="memdesc:a00344"><td class="mdescLeft">&#160;</td><td class="mdescRight">Driver handle for master non-blocking APIs. <a href="a00028.html#a00344">More...</a><br/></td></tr>
<tr class="separator:a00344"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga4bf954d998f086594eece268c780bec7"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00028.html#ga1625497320644ba123718bafdd2c1f39">_i2c_direction</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga4bf954d998f086594eece268c780bec7">i2c_direction_t</a></td></tr>
<tr class="memdesc:ga4bf954d998f086594eece268c780bec7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direction of master and slave transfers. <a href="#ga4bf954d998f086594eece268c780bec7">More...</a><br/></td></tr>
<tr class="separator:ga4bf954d998f086594eece268c780bec7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad739710b6b65e12ca5ba9dc2a2a2b463"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00028.html#a00342">_i2c_master_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gad739710b6b65e12ca5ba9dc2a2a2b463">i2c_master_config_t</a></td></tr>
<tr class="memdesc:gad739710b6b65e12ca5ba9dc2a2a2b463"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure with settings to initialize the I2C master module. <a href="#gad739710b6b65e12ca5ba9dc2a2a2b463">More...</a><br/></td></tr>
<tr class="separator:gad739710b6b65e12ca5ba9dc2a2a2b463"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7edd253f4df51a13bd0a6a0461b9f93a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7edd253f4df51a13bd0a6a0461b9f93a"></a>
typedef struct <a class="el" href="a00028.html#a00345">_i2c_master_transfer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga7edd253f4df51a13bd0a6a0461b9f93a">i2c_master_transfer_t</a></td></tr>
<tr class="memdesc:ga7edd253f4df51a13bd0a6a0461b9f93a"><td class="mdescLeft">&#160;</td><td class="mdescRight">I2C master transfer typedef. <br/></td></tr>
<tr class="separator:ga7edd253f4df51a13bd0a6a0461b9f93a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2fd51f58b8cfd309be985bce4b817fdc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2fd51f58b8cfd309be985bce4b817fdc"></a>
typedef struct <a class="el" href="a00028.html#a00344">_i2c_master_handle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a></td></tr>
<tr class="memdesc:ga2fd51f58b8cfd309be985bce4b817fdc"><td class="mdescLeft">&#160;</td><td class="mdescRight">I2C master handle typedef. <br/></td></tr>
<tr class="separator:ga2fd51f58b8cfd309be985bce4b817fdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad292a48f957a9b76593c1779d9dce497"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gad292a48f957a9b76593c1779d9dce497">i2c_master_transfer_callback_t</a> )(I2C_Type *base, <a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *handle, <a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> completionStatus, void *userData)</td></tr>
<tr class="memdesc:gad292a48f957a9b76593c1779d9dce497"><td class="mdescLeft">&#160;</td><td class="mdescRight">Master completion callback function pointer type. <a href="#gad292a48f957a9b76593c1779d9dce497">More...</a><br/></td></tr>
<tr class="separator:gad292a48f957a9b76593c1779d9dce497"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga1625497320644ba123718bafdd2c1f39"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga1625497320644ba123718bafdd2c1f39">_i2c_direction</a> { <br/>
&#160;&#160;<a class="el" href="a00028.html#gga1625497320644ba123718bafdd2c1f39a93b476b469c2a4bfed5916b458ae9bb0">kI2C_Write</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00028.html#gga1625497320644ba123718bafdd2c1f39a3a7bb24dc8d1c1be8925603eeafe9b30">kI2C_Read</a> = 1U
<br/>
}</td></tr>
<tr class="memdesc:ga1625497320644ba123718bafdd2c1f39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direction of master and slave transfers. <a href="a00028.html#ga1625497320644ba123718bafdd2c1f39">More...</a><br/></td></tr>
<tr class="separator:ga1625497320644ba123718bafdd2c1f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga87ea07668194cfb46c7c368d2cb42433"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga87ea07668194cfb46c7c368d2cb42433">_i2c_master_transfer_flags</a> { <br/>
&#160;&#160;<a class="el" href="a00028.html#gga87ea07668194cfb46c7c368d2cb42433ae80f7b768b1621e42ac965d3d23de5e2">kI2C_TransferDefaultFlag</a> = 0x00U,
<br/>
&#160;&#160;<a class="el" href="a00028.html#gga87ea07668194cfb46c7c368d2cb42433a5cb44bf860c0482c0ca0165cf0d31d8a">kI2C_TransferNoStartFlag</a> = 0x01U,
<br/>
&#160;&#160;<a class="el" href="a00028.html#gga87ea07668194cfb46c7c368d2cb42433aadf112471ef12f194985a093cd9b9721">kI2C_TransferRepeatedStartFlag</a> = 0x02U,
<br/>
&#160;&#160;<a class="el" href="a00028.html#gga87ea07668194cfb46c7c368d2cb42433afb8aeea71b5b7475e3d3df86220db566">kI2C_TransferNoStopFlag</a> = 0x04U
<br/>
}</td></tr>
<tr class="memdesc:ga87ea07668194cfb46c7c368d2cb42433"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer option flags. <a href="a00028.html#ga87ea07668194cfb46c7c368d2cb42433">More...</a><br/></td></tr>
<tr class="separator:ga87ea07668194cfb46c7c368d2cb42433"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab08c1a0d50859637b4305687278941ee"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gab08c1a0d50859637b4305687278941ee">_i2c_transfer_states</a> </td></tr>
<tr class="memdesc:gab08c1a0d50859637b4305687278941ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">States for the state machine used by transactional APIs. <a href="a00028.html#gab08c1a0d50859637b4305687278941ee">More...</a><br/></td></tr>
<tr class="separator:gab08c1a0d50859637b4305687278941ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Initialization and deinitialization</h2></td></tr>
<tr class="memitem:gad69f2d63ea756dda60749ff6b09f587d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gad69f2d63ea756dda60749ff6b09f587d">I2C_MasterGetDefaultConfig</a> (<a class="el" href="a00028.html#gad739710b6b65e12ca5ba9dc2a2a2b463">i2c_master_config_t</a> *masterConfig)</td></tr>
<tr class="memdesc:gad69f2d63ea756dda60749ff6b09f587d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides a default configuration for the I2C master peripheral. <a href="#gad69f2d63ea756dda60749ff6b09f587d">More...</a><br/></td></tr>
<tr class="separator:gad69f2d63ea756dda60749ff6b09f587d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga29f967b3ae8487a36ba2a58deb01ccae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga29f967b3ae8487a36ba2a58deb01ccae">I2C_MasterInit</a> (I2C_Type *base, const <a class="el" href="a00028.html#gad739710b6b65e12ca5ba9dc2a2a2b463">i2c_master_config_t</a> *masterConfig, uint32_t srcClock_Hz)</td></tr>
<tr class="memdesc:ga29f967b3ae8487a36ba2a58deb01ccae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the I2C master peripheral. <a href="#ga29f967b3ae8487a36ba2a58deb01ccae">More...</a><br/></td></tr>
<tr class="separator:ga29f967b3ae8487a36ba2a58deb01ccae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadcf7122f0a38d4d9da0f052fcb167957"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gadcf7122f0a38d4d9da0f052fcb167957">I2C_MasterDeinit</a> (I2C_Type *base)</td></tr>
<tr class="memdesc:gadcf7122f0a38d4d9da0f052fcb167957"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitializes the I2C master peripheral. <a href="#gadcf7122f0a38d4d9da0f052fcb167957">More...</a><br/></td></tr>
<tr class="separator:gadcf7122f0a38d4d9da0f052fcb167957"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga07cc6bd20f700249c335893427bf462a"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga07cc6bd20f700249c335893427bf462a">I2C_GetInstance</a> (I2C_Type *base)</td></tr>
<tr class="memdesc:ga07cc6bd20f700249c335893427bf462a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an instance number given a base address. <a href="#ga07cc6bd20f700249c335893427bf462a">More...</a><br/></td></tr>
<tr class="separator:ga07cc6bd20f700249c335893427bf462a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga09137caccbe9a57f6b2ca5e1ce9bdc50"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga09137caccbe9a57f6b2ca5e1ce9bdc50">I2C_MasterReset</a> (I2C_Type *base)</td></tr>
<tr class="memdesc:ga09137caccbe9a57f6b2ca5e1ce9bdc50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a software reset. <a href="#ga09137caccbe9a57f6b2ca5e1ce9bdc50">More...</a><br/></td></tr>
<tr class="separator:ga09137caccbe9a57f6b2ca5e1ce9bdc50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga164d97e40eb5ad625a41ad43cf938153"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga164d97e40eb5ad625a41ad43cf938153">I2C_MasterEnable</a> (I2C_Type *base, bool enable)</td></tr>
<tr class="memdesc:ga164d97e40eb5ad625a41ad43cf938153"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables the I2C module as master. <a href="#ga164d97e40eb5ad625a41ad43cf938153">More...</a><br/></td></tr>
<tr class="separator:ga164d97e40eb5ad625a41ad43cf938153"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Status</h2></td></tr>
<tr class="memitem:ga30ea754c9685d10f394989ea19a6be22"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga30ea754c9685d10f394989ea19a6be22">I2C_GetStatusFlags</a> (I2C_Type *base)</td></tr>
<tr class="memdesc:ga30ea754c9685d10f394989ea19a6be22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the I2C status flags. <a href="#ga30ea754c9685d10f394989ea19a6be22">More...</a><br/></td></tr>
<tr class="separator:ga30ea754c9685d10f394989ea19a6be22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga92a916f2d297de52d3a54f8bd0befb07"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga92a916f2d297de52d3a54f8bd0befb07">I2C_ClearStatusFlags</a> (I2C_Type *base, uint32_t statusMask)</td></tr>
<tr class="memdesc:ga92a916f2d297de52d3a54f8bd0befb07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the I2C status flag state. <a href="#ga92a916f2d297de52d3a54f8bd0befb07">More...</a><br/></td></tr>
<tr class="separator:ga92a916f2d297de52d3a54f8bd0befb07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga437271ffb955b77df0a5dee9ea80cc63"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga437271ffb955b77df0a5dee9ea80cc63">I2C_MasterClearStatusFlags</a> (I2C_Type *base, uint32_t statusMask)</td></tr>
<tr class="memdesc:ga437271ffb955b77df0a5dee9ea80cc63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the I2C master status flag state. <a href="#ga437271ffb955b77df0a5dee9ea80cc63">More...</a><br/></td></tr>
<tr class="separator:ga437271ffb955b77df0a5dee9ea80cc63"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Interrupts</h2></td></tr>
<tr class="memitem:ga0f6f1f2fe150661f8eb0a072665a9020"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga0f6f1f2fe150661f8eb0a072665a9020">I2C_EnableInterrupts</a> (I2C_Type *base, uint32_t interruptMask)</td></tr>
<tr class="memdesc:ga0f6f1f2fe150661f8eb0a072665a9020"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the I2C interrupt requests. <a href="#ga0f6f1f2fe150661f8eb0a072665a9020">More...</a><br/></td></tr>
<tr class="separator:ga0f6f1f2fe150661f8eb0a072665a9020"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac3e053611231cc886bfa38831a1ac26e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gac3e053611231cc886bfa38831a1ac26e">I2C_DisableInterrupts</a> (I2C_Type *base, uint32_t interruptMask)</td></tr>
<tr class="memdesc:gac3e053611231cc886bfa38831a1ac26e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the I2C interrupt requests. <a href="#gac3e053611231cc886bfa38831a1ac26e">More...</a><br/></td></tr>
<tr class="separator:gac3e053611231cc886bfa38831a1ac26e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae652236a25f1b4828d596f32190655f8"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gae652236a25f1b4828d596f32190655f8">I2C_GetEnabledInterrupts</a> (I2C_Type *base)</td></tr>
<tr class="memdesc:gae652236a25f1b4828d596f32190655f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the set of currently enabled I2C interrupt requests. <a href="#gae652236a25f1b4828d596f32190655f8">More...</a><br/></td></tr>
<tr class="separator:gae652236a25f1b4828d596f32190655f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Bus operations</h2></td></tr>
<tr class="memitem:gafeab1d5249a8b39c8d9e1a54a85c23f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gafeab1d5249a8b39c8d9e1a54a85c23f0">I2C_MasterSetBaudRate</a> (I2C_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz)</td></tr>
<tr class="memdesc:gafeab1d5249a8b39c8d9e1a54a85c23f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the I2C bus frequency for master transactions. <a href="#gafeab1d5249a8b39c8d9e1a54a85c23f0">More...</a><br/></td></tr>
<tr class="separator:gafeab1d5249a8b39c8d9e1a54a85c23f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae0d0c95b28e307b2d4a6ea420809b9e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gae0d0c95b28e307b2d4a6ea420809b9e4">I2C_MasterSetTimeoutValue</a> (I2C_Type *base, uint8_t timeout_Ms, uint32_t srcClock_Hz)</td></tr>
<tr class="memdesc:gae0d0c95b28e307b2d4a6ea420809b9e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the I2C bus timeout value. <a href="#gae0d0c95b28e307b2d4a6ea420809b9e4">More...</a><br/></td></tr>
<tr class="separator:gae0d0c95b28e307b2d4a6ea420809b9e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4b7617034ab51d77786141873fd6ee1c"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga4b7617034ab51d77786141873fd6ee1c">I2C_MasterGetBusIdleState</a> (I2C_Type *base)</td></tr>
<tr class="memdesc:ga4b7617034ab51d77786141873fd6ee1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the bus is idle. <a href="#ga4b7617034ab51d77786141873fd6ee1c">More...</a><br/></td></tr>
<tr class="separator:ga4b7617034ab51d77786141873fd6ee1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7664234966e4162e952b6d57efcaa8a6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga7664234966e4162e952b6d57efcaa8a6">I2C_MasterStart</a> (I2C_Type *base, uint8_t address, <a class="el" href="a00028.html#ga4bf954d998f086594eece268c780bec7">i2c_direction_t</a> direction)</td></tr>
<tr class="memdesc:ga7664234966e4162e952b6d57efcaa8a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a START on the I2C bus. <a href="#ga7664234966e4162e952b6d57efcaa8a6">More...</a><br/></td></tr>
<tr class="separator:ga7664234966e4162e952b6d57efcaa8a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf46a8cc094fc18c6cadea8de71448723"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gaf46a8cc094fc18c6cadea8de71448723">I2C_MasterStop</a> (I2C_Type *base)</td></tr>
<tr class="memdesc:gaf46a8cc094fc18c6cadea8de71448723"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a STOP signal on the I2C bus. <a href="#gaf46a8cc094fc18c6cadea8de71448723">More...</a><br/></td></tr>
<tr class="separator:gaf46a8cc094fc18c6cadea8de71448723"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8137f7b333aafe1e3ff6c9d3852b7dbd"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga8137f7b333aafe1e3ff6c9d3852b7dbd">I2C_MasterRepeatedStart</a> (I2C_Type *base, uint8_t address, <a class="el" href="a00028.html#ga4bf954d998f086594eece268c780bec7">i2c_direction_t</a> direction)</td></tr>
<tr class="memdesc:ga8137f7b333aafe1e3ff6c9d3852b7dbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a REPEATED START on the I2C bus. <a href="#ga8137f7b333aafe1e3ff6c9d3852b7dbd">More...</a><br/></td></tr>
<tr class="separator:ga8137f7b333aafe1e3ff6c9d3852b7dbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3b4d71b59e118adc63afbc5434e5e7dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga3b4d71b59e118adc63afbc5434e5e7dd">I2C_MasterWriteBlocking</a> (I2C_Type *base, const void *txBuff, size_t txSize, uint32_t flags)</td></tr>
<tr class="memdesc:ga3b4d71b59e118adc63afbc5434e5e7dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a polling send transfer on the I2C bus. <a href="#ga3b4d71b59e118adc63afbc5434e5e7dd">More...</a><br/></td></tr>
<tr class="separator:ga3b4d71b59e118adc63afbc5434e5e7dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba04c62ee636dd8317c2235c3c82aa3b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gaba04c62ee636dd8317c2235c3c82aa3b">I2C_MasterReadBlocking</a> (I2C_Type *base, void *rxBuff, size_t rxSize, uint32_t flags)</td></tr>
<tr class="memdesc:gaba04c62ee636dd8317c2235c3c82aa3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a polling receive transfer on the I2C bus. <a href="#gaba04c62ee636dd8317c2235c3c82aa3b">More...</a><br/></td></tr>
<tr class="separator:gaba04c62ee636dd8317c2235c3c82aa3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga35cae3a5b4aa50ce8db28e3eb703a027"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga35cae3a5b4aa50ce8db28e3eb703a027">I2C_MasterTransferBlocking</a> (I2C_Type *base, <a class="el" href="a00028.html#ga7edd253f4df51a13bd0a6a0461b9f93a">i2c_master_transfer_t</a> *xfer)</td></tr>
<tr class="memdesc:ga35cae3a5b4aa50ce8db28e3eb703a027"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a master polling transfer on the I2C bus. <a href="#ga35cae3a5b4aa50ce8db28e3eb703a027">More...</a><br/></td></tr>
<tr class="separator:ga35cae3a5b4aa50ce8db28e3eb703a027"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Non-blocking</h2></td></tr>
<tr class="memitem:ga31e3de02b57801c6896e6045c4a31268"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga31e3de02b57801c6896e6045c4a31268">I2C_MasterTransferCreateHandle</a> (I2C_Type *base, <a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *handle, <a class="el" href="a00028.html#gad292a48f957a9b76593c1779d9dce497">i2c_master_transfer_callback_t</a> callback, void *userData)</td></tr>
<tr class="memdesc:ga31e3de02b57801c6896e6045c4a31268"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new handle for the I2C master non-blocking APIs. <a href="#ga31e3de02b57801c6896e6045c4a31268">More...</a><br/></td></tr>
<tr class="separator:ga31e3de02b57801c6896e6045c4a31268"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac7f76a04b6f6873c52ad176d58901fe9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gac7f76a04b6f6873c52ad176d58901fe9">I2C_MasterTransferNonBlocking</a> (I2C_Type *base, <a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *handle, <a class="el" href="a00028.html#ga7edd253f4df51a13bd0a6a0461b9f93a">i2c_master_transfer_t</a> *xfer)</td></tr>
<tr class="memdesc:gac7f76a04b6f6873c52ad176d58901fe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a non-blocking transaction on the I2C bus. <a href="#gac7f76a04b6f6873c52ad176d58901fe9">More...</a><br/></td></tr>
<tr class="separator:gac7f76a04b6f6873c52ad176d58901fe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7d720842e68161d2d52d56d119f20665"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ga7d720842e68161d2d52d56d119f20665">I2C_MasterTransferGetCount</a> (I2C_Type *base, <a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *handle, size_t *count)</td></tr>
<tr class="memdesc:ga7d720842e68161d2d52d56d119f20665"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns number of bytes transferred so far. <a href="#ga7d720842e68161d2d52d56d119f20665">More...</a><br/></td></tr>
<tr class="separator:ga7d720842e68161d2d52d56d119f20665"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabb386e53b2bc64e29b2915bdfac36800"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gabb386e53b2bc64e29b2915bdfac36800">I2C_MasterTransferAbort</a> (I2C_Type *base, <a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *handle)</td></tr>
<tr class="memdesc:gabb386e53b2bc64e29b2915bdfac36800"><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminates a non-blocking I2C master transmission early. <a href="#gabb386e53b2bc64e29b2915bdfac36800">More...</a><br/></td></tr>
<tr class="separator:gabb386e53b2bc64e29b2915bdfac36800"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
IRQ handler</h2></td></tr>
<tr class="memitem:gafbf792484d11820561fa22bb27f73284"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#gafbf792484d11820561fa22bb27f73284">I2C_MasterTransferHandleIRQ</a> (I2C_Type *base, <a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *handle)</td></tr>
<tr class="memdesc:gafbf792484d11820561fa22bb27f73284"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reusable routine to handle master interrupts. <a href="#gafbf792484d11820561fa22bb27f73284">More...</a><br/></td></tr>
<tr class="separator:gafbf792484d11820561fa22bb27f73284"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00342" id="a00342"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _i2c_master_config</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><p>This structure holds configuration settings for the I2C peripheral. To initialize this structure to reasonable defaults, call the <a class="el" href="a00028.html#gad69f2d63ea756dda60749ff6b09f587d" title="Provides a default configuration for the I2C master peripheral. ">I2C_MasterGetDefaultConfig()</a> function and pass a pointer to your configuration structure instance.</p>
<p>The configuration structure can be made constant so it resides in flash. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a7a58fd313d0615ac1ca70d2b4f17ae9a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a7a58fd313d0615ac1ca70d2b4f17ae9a">enableMaster</a></td></tr>
<tr class="memdesc:a7a58fd313d0615ac1ca70d2b4f17ae9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether to enable master mode. <a href="#a7a58fd313d0615ac1ca70d2b4f17ae9a">More...</a><br/></td></tr>
<tr class="separator:a7a58fd313d0615ac1ca70d2b4f17ae9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a282b6a9bd8e98bf35e8183665488d98c"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a282b6a9bd8e98bf35e8183665488d98c">baudRate_Bps</a></td></tr>
<tr class="memdesc:a282b6a9bd8e98bf35e8183665488d98c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Desired baud rate in bits per second. <a href="#a282b6a9bd8e98bf35e8183665488d98c">More...</a><br/></td></tr>
<tr class="separator:a282b6a9bd8e98bf35e8183665488d98c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae638534f9f5735a294e951652c1d650b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ae638534f9f5735a294e951652c1d650b">enableTimeout</a></td></tr>
<tr class="memdesc:ae638534f9f5735a294e951652c1d650b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable internal timeout function. <a href="#ae638534f9f5735a294e951652c1d650b">More...</a><br/></td></tr>
<tr class="separator:ae638534f9f5735a294e951652c1d650b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e002b275a9aeb2eca99c3c9e6f95416"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a7e002b275a9aeb2eca99c3c9e6f95416">timeout_Ms</a></td></tr>
<tr class="memdesc:a7e002b275a9aeb2eca99c3c9e6f95416"><td class="mdescLeft">&#160;</td><td class="mdescRight">Event timeout and SCL low timeout value. <a href="#a7e002b275a9aeb2eca99c3c9e6f95416">More...</a><br/></td></tr>
<tr class="separator:a7e002b275a9aeb2eca99c3c9e6f95416"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a7a58fd313d0615ac1ca70d2b4f17ae9a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool _i2c_master_config::enableMaster</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a282b6a9bd8e98bf35e8183665488d98c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _i2c_master_config::baudRate_Bps</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ae638534f9f5735a294e951652c1d650b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool _i2c_master_config::enableTimeout</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a7e002b275a9aeb2eca99c3c9e6f95416"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t _i2c_master_config::timeout_Ms</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<a name="a00345" id="a00345"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _i2c_master_transfer</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><p>This structure is used to pass transaction parameters to the <a class="el" href="a00028.html#gac7f76a04b6f6873c52ad176d58901fe9" title="Performs a non-blocking transaction on the I2C bus. ">I2C_MasterTransferNonBlocking()</a> API. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a84861e140902bd67ae901b2f4c53bfc0"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a84861e140902bd67ae901b2f4c53bfc0">flags</a></td></tr>
<tr class="memdesc:a84861e140902bd67ae901b2f4c53bfc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit mask of options for the transfer. <a href="#a84861e140902bd67ae901b2f4c53bfc0">More...</a><br/></td></tr>
<tr class="separator:a84861e140902bd67ae901b2f4c53bfc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6d93caa78fc9bf0f0aac10f66b8eba1"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#aa6d93caa78fc9bf0f0aac10f66b8eba1">slaveAddress</a></td></tr>
<tr class="memdesc:aa6d93caa78fc9bf0f0aac10f66b8eba1"><td class="mdescLeft">&#160;</td><td class="mdescRight">The 7-bit slave address. <a href="#aa6d93caa78fc9bf0f0aac10f66b8eba1">More...</a><br/></td></tr>
<tr class="separator:aa6d93caa78fc9bf0f0aac10f66b8eba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bd3afcf89b78d9397b2f0c55f9deb27"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00028.html#ga4bf954d998f086594eece268c780bec7">i2c_direction_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a7bd3afcf89b78d9397b2f0c55f9deb27">direction</a></td></tr>
<tr class="memdesc:a7bd3afcf89b78d9397b2f0c55f9deb27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Either <a class="el" href="a00028.html#gga1625497320644ba123718bafdd2c1f39a3a7bb24dc8d1c1be8925603eeafe9b30" title="Master receive. ">kI2C_Read</a> or <a class="el" href="a00028.html#gga1625497320644ba123718bafdd2c1f39a93b476b469c2a4bfed5916b458ae9bb0" title="Master transmit. ">kI2C_Write</a>. <a href="#a7bd3afcf89b78d9397b2f0c55f9deb27">More...</a><br/></td></tr>
<tr class="separator:a7bd3afcf89b78d9397b2f0c55f9deb27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a4f43a16e63d9f286bc41b6255b5e3f"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a7a4f43a16e63d9f286bc41b6255b5e3f">subaddress</a></td></tr>
<tr class="memdesc:a7a4f43a16e63d9f286bc41b6255b5e3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sub address. <a href="#a7a4f43a16e63d9f286bc41b6255b5e3f">More...</a><br/></td></tr>
<tr class="separator:a7a4f43a16e63d9f286bc41b6255b5e3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c2c6dde8d11db7793fdea90f1b34afb"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a0c2c6dde8d11db7793fdea90f1b34afb">subaddressSize</a></td></tr>
<tr class="memdesc:a0c2c6dde8d11db7793fdea90f1b34afb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Length of sub address to send in bytes. <a href="#a0c2c6dde8d11db7793fdea90f1b34afb">More...</a><br/></td></tr>
<tr class="separator:a0c2c6dde8d11db7793fdea90f1b34afb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a083727a4268398628225a68cad8c4a50"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a083727a4268398628225a68cad8c4a50">data</a></td></tr>
<tr class="memdesc:a083727a4268398628225a68cad8c4a50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to data to transfer. <a href="#a083727a4268398628225a68cad8c4a50">More...</a><br/></td></tr>
<tr class="separator:a083727a4268398628225a68cad8c4a50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7034b157201c46c116dc251e3b56412d"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a7034b157201c46c116dc251e3b56412d">dataSize</a></td></tr>
<tr class="memdesc:a7034b157201c46c116dc251e3b56412d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of bytes to transfer. <a href="#a7034b157201c46c116dc251e3b56412d">More...</a><br/></td></tr>
<tr class="separator:a7034b157201c46c116dc251e3b56412d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a84861e140902bd67ae901b2f4c53bfc0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _i2c_master_transfer::flags</td>
</tr>
</table>
</div><div class="memdoc">
<p>See enumeration <a class="el" href="a00028.html#ga87ea07668194cfb46c7c368d2cb42433" title="Transfer option flags. ">_i2c_master_transfer_flags</a> for available options. Set to 0 or <a class="el" href="a00028.html#gga87ea07668194cfb46c7c368d2cb42433ae80f7b768b1621e42ac965d3d23de5e2" title="Transfer starts with a start signal, stops with a stop signal. ">kI2C_TransferDefaultFlag</a> for normal transfers. </p>
</div>
</div>
<a class="anchor" id="aa6d93caa78fc9bf0f0aac10f66b8eba1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t _i2c_master_transfer::slaveAddress</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a7bd3afcf89b78d9397b2f0c55f9deb27"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00028.html#ga4bf954d998f086594eece268c780bec7">i2c_direction_t</a> _i2c_master_transfer::direction</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a7a4f43a16e63d9f286bc41b6255b5e3f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _i2c_master_transfer::subaddress</td>
</tr>
</table>
</div><div class="memdoc">
<p>Transferred MSB first. </p>
</div>
</div>
<a class="anchor" id="a0c2c6dde8d11db7793fdea90f1b34afb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t _i2c_master_transfer::subaddressSize</td>
</tr>
</table>
</div><div class="memdoc">
<p>Maximum size is 4 bytes. </p>
</div>
</div>
<a class="anchor" id="a083727a4268398628225a68cad8c4a50"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* _i2c_master_transfer::data</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a7034b157201c46c116dc251e3b56412d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t _i2c_master_transfer::dataSize</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<a name="a00344" id="a00344"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _i2c_master_handle</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><dl class="section note"><dt>Note</dt><dd>The contents of this structure are private and subject to change. </dd></dl>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:ade67a2d6339836711ee255a18405e750"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ade67a2d6339836711ee255a18405e750">state</a></td></tr>
<tr class="memdesc:ade67a2d6339836711ee255a18405e750"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer state machine current state. <a href="#ade67a2d6339836711ee255a18405e750">More...</a><br/></td></tr>
<tr class="separator:ade67a2d6339836711ee255a18405e750"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab08095b4638786e1b364c1eed398fce4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab08095b4638786e1b364c1eed398fce4"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ab08095b4638786e1b364c1eed398fce4">transferCount</a></td></tr>
<tr class="memdesc:ab08095b4638786e1b364c1eed398fce4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Indicates progress of the transfer. <br/></td></tr>
<tr class="separator:ab08095b4638786e1b364c1eed398fce4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa041075cd1ecaf90bcc73d96478e94cf"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#aa041075cd1ecaf90bcc73d96478e94cf">remainingBytes</a></td></tr>
<tr class="memdesc:aa041075cd1ecaf90bcc73d96478e94cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remaining byte count in current state. <a href="#aa041075cd1ecaf90bcc73d96478e94cf">More...</a><br/></td></tr>
<tr class="separator:aa041075cd1ecaf90bcc73d96478e94cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62ffa1c0fea595fb26ac5604c437a549"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a62ffa1c0fea595fb26ac5604c437a549">buf</a></td></tr>
<tr class="memdesc:a62ffa1c0fea595fb26ac5604c437a549"><td class="mdescLeft">&#160;</td><td class="mdescRight">Buffer pointer for current state. <a href="#a62ffa1c0fea595fb26ac5604c437a549">More...</a><br/></td></tr>
<tr class="separator:a62ffa1c0fea595fb26ac5604c437a549"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5d215cd09ce55b830be46d856764684"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ab5d215cd09ce55b830be46d856764684">checkAddrNack</a></td></tr>
<tr class="memdesc:ab5d215cd09ce55b830be46d856764684"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether to check the nack signal is detected during addressing. <a href="#ab5d215cd09ce55b830be46d856764684">More...</a><br/></td></tr>
<tr class="separator:ab5d215cd09ce55b830be46d856764684"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a403d5da02efab45e1ebb8bef2ae063d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00028.html#ga7edd253f4df51a13bd0a6a0461b9f93a">i2c_master_transfer_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a403d5da02efab45e1ebb8bef2ae063d5">transfer</a></td></tr>
<tr class="memdesc:a403d5da02efab45e1ebb8bef2ae063d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy of the current transfer info. <a href="#a403d5da02efab45e1ebb8bef2ae063d5">More...</a><br/></td></tr>
<tr class="separator:a403d5da02efab45e1ebb8bef2ae063d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c6862e22cf2047661ce05975756093a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00028.html#gad292a48f957a9b76593c1779d9dce497">i2c_master_transfer_callback_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a0c6862e22cf2047661ce05975756093a">completionCallback</a></td></tr>
<tr class="memdesc:a0c6862e22cf2047661ce05975756093a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function pointer. <a href="#a0c6862e22cf2047661ce05975756093a">More...</a><br/></td></tr>
<tr class="separator:a0c6862e22cf2047661ce05975756093a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a862e1a312eb8b2bd537f1a22a48f455f"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a862e1a312eb8b2bd537f1a22a48f455f">userData</a></td></tr>
<tr class="memdesc:a862e1a312eb8b2bd537f1a22a48f455f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Application data passed to callback. <a href="#a862e1a312eb8b2bd537f1a22a48f455f">More...</a><br/></td></tr>
<tr class="separator:a862e1a312eb8b2bd537f1a22a48f455f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="ade67a2d6339836711ee255a18405e750"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t _i2c_master_handle::state</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aa041075cd1ecaf90bcc73d96478e94cf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _i2c_master_handle::remainingBytes</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a62ffa1c0fea595fb26ac5604c437a549"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t* _i2c_master_handle::buf</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ab5d215cd09ce55b830be46d856764684"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool _i2c_master_handle::checkAddrNack</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a403d5da02efab45e1ebb8bef2ae063d5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00028.html#ga7edd253f4df51a13bd0a6a0461b9f93a">i2c_master_transfer_t</a> _i2c_master_handle::transfer</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a0c6862e22cf2047661ce05975756093a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00028.html#gad292a48f957a9b76593c1779d9dce497">i2c_master_transfer_callback_t</a> _i2c_master_handle::completionCallback</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a862e1a312eb8b2bd537f1a22a48f455f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* _i2c_master_handle::userData</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="ga4bf954d998f086594eece268c780bec7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00028.html#ga1625497320644ba123718bafdd2c1f39">_i2c_direction</a> <a class="el" href="a00028.html#ga4bf954d998f086594eece268c780bec7">i2c_direction_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gad739710b6b65e12ca5ba9dc2a2a2b463"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00028.html#a00342">_i2c_master_config</a> <a class="el" href="a00028.html#gad739710b6b65e12ca5ba9dc2a2a2b463">i2c_master_config_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>This structure holds configuration settings for the I2C peripheral. To initialize this structure to reasonable defaults, call the <a class="el" href="a00028.html#gad69f2d63ea756dda60749ff6b09f587d" title="Provides a default configuration for the I2C master peripheral. ">I2C_MasterGetDefaultConfig()</a> function and pass a pointer to your configuration structure instance.</p>
<p>The configuration structure can be made constant so it resides in flash. </p>
</div>
</div>
<a class="anchor" id="gad292a48f957a9b76593c1779d9dce497"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(* i2c_master_transfer_callback_t)(I2C_Type *base, <a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *handle, <a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> completionStatus, void *userData)</td>
</tr>
</table>
</div><div class="memdoc">
<p>This callback is used only for the non-blocking master transfer API. Specify the callback you wish to use in the call to <a class="el" href="a00028.html#ga31e3de02b57801c6896e6045c4a31268" title="Creates a new handle for the I2C master non-blocking APIs. ">I2C_MasterTransferCreateHandle()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">completionStatus</td><td>Either kStatus_Success or an error code describing how the transfer completed. </td></tr>
<tr><td class="paramname">userData</td><td>Arbitrary pointer-sized value passed from the application. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga1625497320644ba123718bafdd2c1f39"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00028.html#ga1625497320644ba123718bafdd2c1f39">_i2c_direction</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga1625497320644ba123718bafdd2c1f39a93b476b469c2a4bfed5916b458ae9bb0"></a>kI2C_Write</em>&nbsp;</td><td class="fielddoc">
<p>Master transmit. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1625497320644ba123718bafdd2c1f39a3a7bb24dc8d1c1be8925603eeafe9b30"></a>kI2C_Read</em>&nbsp;</td><td class="fielddoc">
<p>Master receive. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga87ea07668194cfb46c7c368d2cb42433"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00028.html#ga87ea07668194cfb46c7c368d2cb42433">_i2c_master_transfer_flags</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>These enumerations are intended to be OR'd together to form a bit mask of options for the <a class="el" href="a00028.html#a84861e140902bd67ae901b2f4c53bfc0" title="Bit mask of options for the transfer. ">_i2c_master_transfer::flags</a> field. </dd></dl>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga87ea07668194cfb46c7c368d2cb42433ae80f7b768b1621e42ac965d3d23de5e2"></a>kI2C_TransferDefaultFlag</em>&nbsp;</td><td class="fielddoc">
<p>Transfer starts with a start signal, stops with a stop signal. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga87ea07668194cfb46c7c368d2cb42433a5cb44bf860c0482c0ca0165cf0d31d8a"></a>kI2C_TransferNoStartFlag</em>&nbsp;</td><td class="fielddoc">
<p>Don't send a start condition, address, and sub address. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga87ea07668194cfb46c7c368d2cb42433aadf112471ef12f194985a093cd9b9721"></a>kI2C_TransferRepeatedStartFlag</em>&nbsp;</td><td class="fielddoc">
<p>Send a repeated start condition. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga87ea07668194cfb46c7c368d2cb42433afb8aeea71b5b7475e3d3df86220db566"></a>kI2C_TransferNoStopFlag</em>&nbsp;</td><td class="fielddoc">
<p>Don't send a stop condition. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gab08c1a0d50859637b4305687278941ee"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00028.html#gab08c1a0d50859637b4305687278941ee">_i2c_transfer_states</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gad69f2d63ea756dda60749ff6b09f587d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2C_MasterGetDefaultConfig </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00028.html#gad739710b6b65e12ca5ba9dc2a2a2b463">i2c_master_config_t</a> *&#160;</td>
<td class="paramname"><em>masterConfig</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function provides the following default configuration for the I2C master peripheral: </p>
<div class="fragment"><div class="line">* masterConfig-&gt;<a class="code" href="a00028.html#a7a58fd313d0615ac1ca70d2b4f17ae9a">enableMaster</a> = <span class="keyword">true</span>;</div>
<div class="line">* masterConfig-&gt;<a class="code" href="a00028.html#a282b6a9bd8e98bf35e8183665488d98c">baudRate_Bps</a> = 100000U;</div>
<div class="line">* masterConfig-&gt;<a class="code" href="a00028.html#ae638534f9f5735a294e951652c1d650b">enableTimeout</a> = <span class="keyword">false</span>;</div>
<div class="line">* </div>
</div><!-- fragment --><p>After calling this function, you can override any settings in order to customize the configuration, prior to initializing the master driver with <a class="el" href="a00028.html#ga29f967b3ae8487a36ba2a58deb01ccae" title="Initializes the I2C master peripheral. ">I2C_MasterInit()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">masterConfig</td><td>User provided configuration structure for default values. Refer to <a class="el" href="a00028.html#gad739710b6b65e12ca5ba9dc2a2a2b463" title="Structure with settings to initialize the I2C master module. ">i2c_master_config_t</a>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga29f967b3ae8487a36ba2a58deb01ccae"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2C_MasterInit </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="a00028.html#gad739710b6b65e12ca5ba9dc2a2a2b463">i2c_master_config_t</a> *&#160;</td>
<td class="paramname"><em>masterConfig</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>srcClock_Hz</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function enables the peripheral clock and initializes the I2C master peripheral as described by the user provided configuration. A software reset is performed prior to configuration.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">masterConfig</td><td>User provided peripheral configuration. Use <a class="el" href="a00028.html#gad69f2d63ea756dda60749ff6b09f587d" title="Provides a default configuration for the I2C master peripheral. ">I2C_MasterGetDefaultConfig()</a> to get a set of defaults that you can override. </td></tr>
<tr><td class="paramname">srcClock_Hz</td><td>Frequency in Hertz of the I2C functional clock. Used to calculate the baud rate divisors, filter widths, and timeout periods. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gadcf7122f0a38d4d9da0f052fcb167957"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2C_MasterDeinit </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function disables the I2C master peripheral and gates the clock. It also performs a software reset to restore the peripheral to reset conditions.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga07cc6bd20f700249c335893427bf462a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t I2C_GetInstance </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>If an invalid base address is passed, debug builds will assert. Release builds will just return instance number 0.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>I2C instance number starting from 0. </dd></dl>
</div>
</div>
<a class="anchor" id="ga09137caccbe9a57f6b2ca5e1ce9bdc50"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void I2C_MasterReset </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Restores the I2C master peripheral to reset conditions.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga164d97e40eb5ad625a41ad43cf938153"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void I2C_MasterEnable </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">enable</td><td>Pass true to enable or false to disable the specified I2C as master. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga30ea754c9685d10f394989ea19a6be22"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t I2C_GetStatusFlags </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A bit mask with the state of all I2C status flags is returned. For each flag, the corresponding bit in the return value is set if the flag is asserted.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>State of the status flags:<ul>
<li>1: related status flag is set.</li>
<li>0: related status flag is not set. </li>
</ul>
</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="a00246.html#gaee8495a8bc52a9a7df6e97d1d7ead2cd">_i2c_status_flags</a>. </dd></dl>
</div>
</div>
<a class="anchor" id="ga92a916f2d297de52d3a54f8bd0befb07"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void I2C_ClearStatusFlags </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>statusMask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Refer to kI2C_CommonAllClearStatusFlags, kI2C_MasterAllClearStatusFlags and kI2C_SlaveAllClearStatusFlags to see the clearable flags. Attempts to clear other flags has no effect.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">statusMask</td><td>A bitmask of status flags that are to be cleared. The mask is composed of the members in kI2C_CommonAllClearStatusFlags, kI2C_MasterAllClearStatusFlags and kI2C_SlaveAllClearStatusFlags. You may pass the result of a previous call to <a class="el" href="a00028.html#ga30ea754c9685d10f394989ea19a6be22" title="Gets the I2C status flags. ">I2C_GetStatusFlags()</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="a00246.html#gaee8495a8bc52a9a7df6e97d1d7ead2cd" title="I2C status flags. ">_i2c_status_flags</a>, _i2c_master_status_flags and _i2c_slave_status_flags. </dd></dl>
</div>
</div>
<a class="anchor" id="ga437271ffb955b77df0a5dee9ea80cc63"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void I2C_MasterClearStatusFlags </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>statusMask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="a00296.html#_deprecated000001">Deprecated:</a></b></dt><dd>Do not use this function. It has been superceded by <a class="el" href="a00028.html#ga92a916f2d297de52d3a54f8bd0befb07">I2C_ClearStatusFlags</a> The following status register flags can be cleared:<ul>
<li><a class="el" href="a00246.html#ggaee8495a8bc52a9a7df6e97d1d7ead2cda7b487779b58af99a7a8c179545f78ccd" title="The arbitration of the bus was lost. ">kI2C_MasterArbitrationLostFlag</a></li>
<li><a class="el" href="a00246.html#ggaee8495a8bc52a9a7df6e97d1d7ead2cdab5cec1d9be7dc5fb2c106e2b87889517" title="There was an error during start or stop phase of the transaction. ">kI2C_MasterStartStopErrorFlag</a></li>
</ul>
</dd></dl>
<p>Attempts to clear other flags has no effect.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">statusMask</td><td>A bitmask of status flags that are to be cleared. The mask is composed of <a class="el" href="a00246.html#gaee8495a8bc52a9a7df6e97d1d7ead2cd" title="I2C status flags. ">_i2c_status_flags</a> enumerators OR'd together. You may pass the result of a previous call to <a class="el" href="a00028.html#ga30ea754c9685d10f394989ea19a6be22" title="Gets the I2C status flags. ">I2C_GetStatusFlags()</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="a00246.html#gaee8495a8bc52a9a7df6e97d1d7ead2cd" title="I2C status flags. ">_i2c_status_flags</a>. </dd></dl>
</div>
</div>
<a class="anchor" id="ga0f6f1f2fe150661f8eb0a072665a9020"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void I2C_EnableInterrupts </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>interruptMask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">interruptMask</td><td>Bit mask of interrupts to enable. See <a class="el" href="a00246.html#ga87c81dd985dad07dc26cb93125a94ec7" title="I2C interrupt enable. ">_i2c_interrupt_enable</a> for the set of constants that should be OR'd together to form the bit mask. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac3e053611231cc886bfa38831a1ac26e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void I2C_DisableInterrupts </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>interruptMask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">interruptMask</td><td>Bit mask of interrupts to disable. See <a class="el" href="a00246.html#ga87c81dd985dad07dc26cb93125a94ec7" title="I2C interrupt enable. ">_i2c_interrupt_enable</a> for the set of constants that should be OR'd together to form the bit mask. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae652236a25f1b4828d596f32190655f8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint32_t I2C_GetEnabledInterrupts </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A bitmask composed of <a class="el" href="a00246.html#ga87c81dd985dad07dc26cb93125a94ec7" title="I2C interrupt enable. ">_i2c_interrupt_enable</a> enumerators OR'd together to indicate the set of enabled interrupts. </dd></dl>
</div>
</div>
<a class="anchor" id="gafeab1d5249a8b39c8d9e1a54a85c23f0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2C_MasterSetBaudRate </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>baudRate_Bps</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>srcClock_Hz</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The I2C master is automatically disabled and re-enabled as necessary to configure the baud rate. Do not call this function during a transfer, or the transfer is aborted.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">srcClock_Hz</td><td>I2C functional clock frequency in Hertz. </td></tr>
<tr><td class="paramname">baudRate_Bps</td><td>Requested bus frequency in bits per second. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae0d0c95b28e307b2d4a6ea420809b9e4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2C_MasterSetTimeoutValue </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>timeout_Ms</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>srcClock_Hz</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>If the SCL signal remains low or bus does not have event longer than the timeout value, kI2C_SclTimeoutFlag or kI2C_EventTimeoutFlag is set. This can indicete the bus is held by slave or any fault occurs to the I2C module.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">timeout_Ms</td><td>Timeout value in millisecond. </td></tr>
<tr><td class="paramname">srcClock_Hz</td><td>I2C functional clock frequency in Hertz. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga4b7617034ab51d77786141873fd6ee1c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool I2C_MasterGetBusIdleState </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Requires the master mode to be enabled.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">true</td><td>Bus is busy. </td></tr>
<tr><td class="paramname">false</td><td>Bus is idle. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7664234966e4162e952b6d57efcaa8a6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2C_MasterStart </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00028.html#ga4bf954d998f086594eece268c780bec7">i2c_direction_t</a>&#160;</td>
<td class="paramname"><em>direction</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is used to initiate a new master mode transfer by sending the START signal. The slave address is sent following the I2C START signal.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2C peripheral base pointer </td></tr>
<tr><td class="paramname">address</td><td>7-bit slave device address. </td></tr>
<tr><td class="paramname">direction</td><td>Master transfer directions(transmit/receive). </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Successfully send the start signal. </td></tr>
<tr><td class="paramname">kStatus_I2C_Busy</td><td>Current bus is busy. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaf46a8cc094fc18c6cadea8de71448723"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2C_MasterStop </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Successfully send the stop signal. </td></tr>
<tr><td class="paramname">kStatus_I2C_Timeout</td><td>Send stop signal failed, timeout. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga8137f7b333aafe1e3ff6c9d3852b7dbd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2C_MasterRepeatedStart </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00028.html#ga4bf954d998f086594eece268c780bec7">i2c_direction_t</a>&#160;</td>
<td class="paramname"><em>direction</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2C peripheral base pointer </td></tr>
<tr><td class="paramname">address</td><td>7-bit slave device address. </td></tr>
<tr><td class="paramname">direction</td><td>Master transfer directions(transmit/receive). </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Successfully send the start signal. </td></tr>
<tr><td class="paramname">kStatus_I2C_Busy</td><td>Current bus is busy but not occupied by current I2C master. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga3b4d71b59e118adc63afbc5434e5e7dd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2C_MasterWriteBlocking </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>txBuff</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>txSize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sends up to <em>txSize</em> number of bytes to the previously addressed slave device. The slave may reply with a NAK to any byte in order to terminate the transfer early. If this happens, this function returns <a class="el" href="a00246.html#gga99fb83031ce9923c84392b4e92f956b5a72fd33d0b5263a63766e62f71d16be00" title="The slave device sent a NAK in response to a byte. ">kStatus_I2C_Nak</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">txBuff</td><td>The pointer to the data to be transferred. </td></tr>
<tr><td class="paramname">txSize</td><td>The length in bytes of the data to be transferred. </td></tr>
<tr><td class="paramname">flags</td><td>Transfer control flag to control special behavior like suppressing start or stop, for normal transfers use kI2C_TransferDefaultFlag </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Data was sent successfully. </td></tr>
<tr><td class="paramname"><a class="el" href="a00246.html#gga99fb83031ce9923c84392b4e92f956b5a49091894b590d7e479605bf113918952" title="The master is already performing a transfer. ">kStatus_I2C_Busy</a></td><td>Another master is currently utilizing the bus. </td></tr>
<tr><td class="paramname"><a class="el" href="a00246.html#gga99fb83031ce9923c84392b4e92f956b5a72fd33d0b5263a63766e62f71d16be00" title="The slave device sent a NAK in response to a byte. ">kStatus_I2C_Nak</a></td><td>The slave device sent a NAK in response to a byte. </td></tr>
<tr><td class="paramname"><a class="el" href="a00246.html#gga99fb83031ce9923c84392b4e92f956b5a139b52cc3305ec2c06d0ac94313c221f" title="Arbitration lost error. ">kStatus_I2C_ArbitrationLost</a></td><td>Arbitration lost error. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaba04c62ee636dd8317c2235c3c82aa3b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2C_MasterReadBlocking </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>rxBuff</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>rxSize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">rxBuff</td><td>The pointer to the data to be transferred. </td></tr>
<tr><td class="paramname">rxSize</td><td>The length in bytes of the data to be transferred. </td></tr>
<tr><td class="paramname">flags</td><td>Transfer control flag to control special behavior like suppressing start or stop, for normal transfers use kI2C_TransferDefaultFlag </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Data was received successfully. </td></tr>
<tr><td class="paramname"><a class="el" href="a00246.html#gga99fb83031ce9923c84392b4e92f956b5a49091894b590d7e479605bf113918952" title="The master is already performing a transfer. ">kStatus_I2C_Busy</a></td><td>Another master is currently utilizing the bus. </td></tr>
<tr><td class="paramname"><a class="el" href="a00246.html#gga99fb83031ce9923c84392b4e92f956b5a72fd33d0b5263a63766e62f71d16be00" title="The slave device sent a NAK in response to a byte. ">kStatus_I2C_Nak</a></td><td>The slave device sent a NAK in response to a byte. </td></tr>
<tr><td class="paramname"><a class="el" href="a00246.html#gga99fb83031ce9923c84392b4e92f956b5a139b52cc3305ec2c06d0ac94313c221f" title="Arbitration lost error. ">kStatus_I2C_ArbitrationLost</a></td><td>Arbitration lost error. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga35cae3a5b4aa50ce8db28e3eb703a027"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2C_MasterTransferBlocking </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00028.html#ga7edd253f4df51a13bd0a6a0461b9f93a">i2c_master_transfer_t</a> *&#160;</td>
<td class="paramname"><em>xfer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>The API does not return until the transfer succeeds or fails due to arbitration lost or receiving a NAK.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2C peripheral base address. </td></tr>
<tr><td class="paramname">xfer</td><td>Pointer to the transfer structure. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Successfully complete the data transmission. </td></tr>
<tr><td class="paramname">kStatus_I2C_Busy</td><td>Previous transmission still not finished. </td></tr>
<tr><td class="paramname">kStatus_I2C_Timeout</td><td>Transfer error, wait signal timeout. </td></tr>
<tr><td class="paramname">kStatus_I2C_ArbitrationLost</td><td>Transfer error, arbitration lost. </td></tr>
<tr><td class="paramname">kStataus_I2C_Nak</td><td>Transfer error, receive NAK during transfer. </td></tr>
<tr><td class="paramname">kStataus_I2C_Addr_Nak</td><td>Transfer error, receive NAK during addressing. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga31e3de02b57801c6896e6045c4a31268"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2C_MasterTransferCreateHandle </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00028.html#gad292a48f957a9b76593c1779d9dce497">i2c_master_transfer_callback_t</a>&#160;</td>
<td class="paramname"><em>callback</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>userData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The creation of a handle is for use with the non-blocking APIs. Once a handle is created, there is not a corresponding destroy handle. If the user wants to terminate a transfer, the <a class="el" href="a00028.html#gabb386e53b2bc64e29b2915bdfac36800" title="Terminates a non-blocking I2C master transmission early. ">I2C_MasterTransferAbort()</a> API shall be called.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">handle</td><td>Pointer to the I2C master driver handle. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">callback</td><td>User provided pointer to the asynchronous callback function. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">userData</td><td>User provided pointer to the application callback data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac7f76a04b6f6873c52ad176d58901fe9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2C_MasterTransferNonBlocking </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00028.html#ga7edd253f4df51a13bd0a6a0461b9f93a">i2c_master_transfer_t</a> *&#160;</td>
<td class="paramname"><em>xfer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to the I2C master driver handle. </td></tr>
<tr><td class="paramname">xfer</td><td>The pointer to the transfer descriptor. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>The transaction was started successfully. </td></tr>
<tr><td class="paramname"><a class="el" href="a00246.html#gga99fb83031ce9923c84392b4e92f956b5a49091894b590d7e479605bf113918952" title="The master is already performing a transfer. ">kStatus_I2C_Busy</a></td><td>Either another master is currently utilizing the bus, or a non-blocking transaction is already in progress. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7d720842e68161d2d52d56d119f20665"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2C_MasterTransferGetCount </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Pointer to the I2C master driver handle. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Number of bytes transferred so far by the non-blocking transaction. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td></td></tr>
<tr><td class="paramname"><a class="el" href="a00246.html#gga99fb83031ce9923c84392b4e92f956b5a49091894b590d7e479605bf113918952" title="The master is already performing a transfer. ">kStatus_I2C_Busy</a></td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gabb386e53b2bc64e29b2915bdfac36800"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2C_MasterTransferAbort </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>It is not safe to call this function from an IRQ handler that has a higher priority than the I2C peripheral's IRQ priority.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to the I2C master driver handle. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>A transaction was successfully aborted. </td></tr>
<tr><td class="paramname"><a class="el" href="a00246.html#gga99fb83031ce9923c84392b4e92f956b5a81ad7cc198436cabbe91ea55c5288747" title="Timeout when waiting for I2C master/slave pending status to set to continue transfer. ">kStatus_I2C_Timeout</a></td><td>Timeout during polling for flags. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gafbf792484d11820561fa22bb27f73284"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2C_MasterTransferHandleIRQ </td>
<td>(</td>
<td class="paramtype">I2C_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00028.html#ga2fd51f58b8cfd309be985bce4b817fdc">i2c_master_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>This function does not need to be called unless you are reimplementing the nonblocking API's interrupt handler routines to add special functionality. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The I2C peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to the I2C master driver handle. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.5-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul class="foot">
<li class="footer">&copy; 2016 NXP Semiconductors. All rights reserved.
</li>
</ul>
</div>
</body>
</html>