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

309 lines
15 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: RNG: Random Number Generator</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('a00265.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="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">RNG: Random Number Generator</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<p>The MCUXpresso SDK provides a peripheral driver for the Random Number Generator module of MCUXpresso SDK devices.</p>
<p>The Random Number Generator is a hardware module that generates 32-bit random numbers. A typical consumer is a pseudo random number generator (PRNG) which can be implemented to achieve both true randomness and cryptographic strength random numbers using the RNG output as its entropy seed. The data generated by a RNG is intended for direct use by functions that generate secret keys, per-message secrets, random challenges, and other similar quantities used in cryptographic algorithms.</p>
<h1><a class="anchor" id="RdRNG"></a>
Get random data from RNG</h1>
<ol>
<li>
<a class="el" href="a00265.html#gaaaf51c361bc4654dcd0ee570133059ab" title="Gets random data. ">RNG_GetRandomData()</a> function gets random data from the RNG module. </li>
</ol>
<p>This example code shows how to get 128-bit random data from the RNG driver.</p>
<p>Refer to the driver examples codes located at &lt;SDK_ROOT&gt;/boards/&lt;BOARD&gt;/driver_examples/rng </p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga6a6a0465aa038f855bbdee5d92ded2e5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#ga6a6a0465aa038f855bbdee5d92ded2e5">RNG_Init</a> (RNG_Type *base)</td></tr>
<tr class="memdesc:ga6a6a0465aa038f855bbdee5d92ded2e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the RNG. <a href="#ga6a6a0465aa038f855bbdee5d92ded2e5">More...</a><br/></td></tr>
<tr class="separator:ga6a6a0465aa038f855bbdee5d92ded2e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac75f4674b501209052e6af0ce14f1717"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#gac75f4674b501209052e6af0ce14f1717">RNG_Deinit</a> (RNG_Type *base)</td></tr>
<tr class="memdesc:gac75f4674b501209052e6af0ce14f1717"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shuts down the RNG. <a href="#gac75f4674b501209052e6af0ce14f1717">More...</a><br/></td></tr>
<tr class="separator:gac75f4674b501209052e6af0ce14f1717"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaaf51c361bc4654dcd0ee570133059ab"><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="a00265.html#gaaaf51c361bc4654dcd0ee570133059ab">RNG_GetRandomData</a> (RNG_Type *base, void *data, size_t dataSize)</td></tr>
<tr class="memdesc:gaaaf51c361bc4654dcd0ee570133059ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets random data. <a href="#gaaaf51c361bc4654dcd0ee570133059ab">More...</a><br/></td></tr>
<tr class="separator:gaaaf51c361bc4654dcd0ee570133059ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9e17a67c0484dc079a1550fdbdd1712f"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#ga9e17a67c0484dc079a1550fdbdd1712f">RNG_GetRandomWord</a> (RNG_Type *base)</td></tr>
<tr class="memdesc:ga9e17a67c0484dc079a1550fdbdd1712f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns random 32-bit number. <a href="#ga9e17a67c0484dc079a1550fdbdd1712f">More...</a><br/></td></tr>
<tr class="separator:ga9e17a67c0484dc079a1550fdbdd1712f"><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>
Driver version</h2></td></tr>
<tr class="memitem:gae77f260002837c834c5465d770c4a36c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#gae77f260002837c834c5465d770c4a36c">FSL_RNG_DRIVER_VERSION</a>&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 0, 3))</td></tr>
<tr class="memdesc:gae77f260002837c834c5465d770c4a36c"><td class="mdescLeft">&#160;</td><td class="mdescRight">RNG driver version. <a href="#gae77f260002837c834c5465d770c4a36c">More...</a><br/></td></tr>
<tr class="separator:gae77f260002837c834c5465d770c4a36c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gae77f260002837c834c5465d770c4a36c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_RNG_DRIVER_VERSION&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 0, 3))</td>
</tr>
</table>
</div><div class="memdoc">
<p>Version 2.0.3.</p>
<p>Current version: 2.0.3</p>
<p>Change log:</p>
<ul>
<li>Version 2.0.0<ul>
<li>Initial version</li>
</ul>
</li>
<li>Version 2.0.1<ul>
<li>Fix MISRA C-2012 issue.</li>
</ul>
</li>
<li>Version 2.0.2<ul>
<li>Add RESET_PeripheralReset function inside RNG_Init and RNG_Deinit functions.</li>
</ul>
</li>
<li>Version 2.0.3<ul>
<li>Modified RNG_Init and RNG_GetRandomData functions, added rng_accumulateEntropy and rng_readEntropy functions.</li>
<li>These changes are reflecting recommended usage of RNG according to device UM. </li>
</ul>
</li>
</ul>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga6a6a0465aa038f855bbdee5d92ded2e5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void RNG_Init </td>
<td>(</td>
<td class="paramtype">RNG_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function initializes the RNG. When called, the RNG module and ring oscillator is enabled.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>RNG base address </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If successful, returns the kStatus_RNG_Success. Otherwise, it returns an error. </dd></dl>
</div>
</div>
<a class="anchor" id="gac75f4674b501209052e6af0ce14f1717"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void RNG_Deinit </td>
<td>(</td>
<td class="paramtype">RNG_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function shuts down the RNG.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>RNG base address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaaaf51c361bc4654dcd0ee570133059ab"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> RNG_GetRandomData </td>
<td>(</td>
<td class="paramtype">RNG_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>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>dataSize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function gets random data from the RNG.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>RNG base address. </td></tr>
<tr><td class="paramname">data</td><td>Pointer address used to store random data. </td></tr>
<tr><td class="paramname">dataSize</td><td>Size of the buffer pointed by the data parameter. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>random data </dd></dl>
</div>
</div>
<a class="anchor" id="ga9e17a67c0484dc079a1550fdbdd1712f"></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 RNG_GetRandomWord </td>
<td>(</td>
<td class="paramtype">RNG_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>This function gets random number from the RNG.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>RNG base address. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>random number </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>