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

204 lines
12 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 CMSIS 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('a00247.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="headertitle">
<div class="title">I2C CMSIS Driver<div class="ingroups"><a class="el" href="a00245.html">I2C: Inter-Integrated Circuit Driver</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>This section describes the programming interface of the I2C Cortex Microcontroller Software Interface Standard (CMSIS) driver. And this driver defines generic peripheral driver interfaces for middleware making it reusable across a wide range of supported microcontroller devices. The API connects microcontroller peripherals with middleware that implements for example communication stacks, file systems, or graphic user interfaces. More information and usage methord see <a href="http://www.keil.com/pack/doc/cmsis/Driver/html/index.html">http://www.keil.com/pack/doc/cmsis/Driver/html/index.html</a>.</p>
<p>The I2C CMSIS driver includes transactional APIs.</p>
<p>Transactional APIs are transaction target high-level APIs. The transactional APIs can be used to enable the peripheral quickly and also in the application if the code size and performance of transactional APIs satisfy the requirements. If the code size and performance are critical requirements, see the transactional API implementation and write custom code accessing the hardware registers.</p>
<h1><a class="anchor" id="I2CCMSISDriver"></a>
I2C CMSIS Driver</h1>
<h2><a class="anchor" id="I2CMasterOpsTransIRQ"></a>
Master Operation in interrupt transactional method</h2>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> I2C_MasterSignalEvent_t(uint32_t event)</div>
<div class="line">{</div>
<div class="line"> <span class="keywordflow">if</span> (event == ARM_I2C_EVENT_TRANSFER_DONE)</div>
<div class="line"> {</div>
<div class="line"> g_MasterCompletionFlag = <span class="keyword">true</span>;</div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"><span class="comment">/*Init I2C MASTER*/</span></div>
<div class="line">EXAMPLE_I2C_MASTER.Initialize(I2C_MasterSignalEvent_t);</div>
<div class="line"></div>
<div class="line">EXAMPLE_I2C_MASTER.PowerControl(ARM_POWER_FULL);</div>
<div class="line"></div>
<div class="line"><span class="comment">/*config transmit speed*/</span></div>
<div class="line">EXAMPLE_I2C_MASTER.Control(ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_STANDARD);</div>
<div class="line"></div>
<div class="line"><span class="comment">/*start transmit*/</span></div>
<div class="line">EXAMPLE_I2C_MASTER.MasterTransmit(I2C_MASTER_SLAVE_ADDR, g_master_buff, I2C_DATA_LENGTH, <span class="keyword">false</span>);</div>
<div class="line"></div>
<div class="line"><span class="comment">/* Wait for transfer completed. */</span></div>
<div class="line"><span class="keywordflow">while</span> (!g_MasterCompletionFlag)</div>
<div class="line">{</div>
<div class="line">}</div>
<div class="line">g_MasterCompletionFlag = <span class="keyword">false</span>;</div>
</div><!-- fragment --><h2><a class="anchor" id="I2CMasterOpsTransDMA"></a>
Master Operation in DMA transactional method</h2>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> I2C_MasterSignalEvent_t(uint32_t event)</div>
<div class="line">{</div>
<div class="line"> <span class="comment">/* Transfer done */</span></div>
<div class="line"> <span class="keywordflow">if</span> (event == ARM_I2C_EVENT_TRANSFER_DONE)</div>
<div class="line"> {</div>
<div class="line"> g_MasterCompletionFlag = <span class="keyword">true</span>;</div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="comment">/* Init DMA*/</span></div>
<div class="line"><a class="code" href="a00017.html#gade1b5efa61054ce538b37b181dd075bb">DMA_Init</a>(EXAMPLE_DMA);</div>
<div class="line"></div>
<div class="line"><span class="comment">/*Init I2C MASTER*/</span></div>
<div class="line">EXAMPLE_I2C_MASTER.Initialize(I2C_MasterSignalEvent_t);</div>
<div class="line"></div>
<div class="line">EXAMPLE_I2C_MASTER.PowerControl(ARM_POWER_FULL);</div>
<div class="line"></div>
<div class="line"><span class="comment">/*config transmit speed*/</span></div>
<div class="line">EXAMPLE_I2C_MASTER.Control(ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_STANDARD);</div>
<div class="line"></div>
<div class="line"><span class="comment">/*start transfer*/</span></div>
<div class="line">EXAMPLE_I2C_MASTER.MasterReceive(I2C_MASTER_SLAVE_ADDR, g_master_buff, I2C_DATA_LENGTH, <span class="keyword">false</span>);</div>
<div class="line"></div>
<div class="line"><span class="comment">/* Wait for transfer completed. */</span></div>
<div class="line"><span class="keywordflow">while</span> (!g_MasterCompletionFlag)</div>
<div class="line">{</div>
<div class="line">}</div>
<div class="line">g_MasterCompletionFlag = <span class="keyword">false</span>;</div>
</div><!-- fragment --><h2><a class="anchor" id="I2CSlaveOpsTransIRQ"></a>
Slave Operation in interrupt transactional method</h2>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> I2C_SlaveSignalEvent_t(uint32_t event)</div>
<div class="line">{</div>
<div class="line"> <span class="comment">/* Transfer done */</span></div>
<div class="line"> <span class="keywordflow">if</span> (event == ARM_I2C_EVENT_TRANSFER_DONE)</div>
<div class="line"> {</div>
<div class="line"> g_SlaveCompletionFlag = <span class="keyword">true</span>;</div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="comment">/*Init I2C SLAVE*/</span></div>
<div class="line">EXAMPLE_I2C_SLAVE.Initialize(I2C_SlaveSignalEvent_t);</div>
<div class="line"></div>
<div class="line">EXAMPLE_I2C_SLAVE.PowerControl(ARM_POWER_FULL);</div>
<div class="line"></div>
<div class="line"><span class="comment">/*config slave addr*/</span></div>
<div class="line">EXAMPLE_I2C_SLAVE.Control(ARM_I2C_OWN_ADDRESS, I2C_MASTER_SLAVE_ADDR);</div>
<div class="line"></div>
<div class="line"><span class="comment">/*start transfer*/</span></div>
<div class="line">EXAMPLE_I2C_SLAVE.SlaveReceive(g_slave_buff, I2C_DATA_LENGTH);</div>
<div class="line"></div>
<div class="line"><span class="comment">/* Wait for transfer completed. */</span></div>
<div class="line"><span class="keywordflow">while</span> (!g_SlaveCompletionFlag)</div>
<div class="line">{</div>
<div class="line">}</div>
<div class="line">g_SlaveCompletionFlag = <span class="keyword">false</span>;</div>
</div><!-- fragment --> </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>