MCUXpresso_MIMXRT1021xxxxx/docs/MCUXpresso SDK API Referenc.../a00077.html

914 lines
54 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: TRNG: True 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('a00077.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> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">TRNG: True 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 True Random Number Generator (TRNG) module of MCUXpresso SDK devices.</p>
<p>The True Random Number Generator is a hardware accelerator module that generates a 512-bit entropy as needed by an entropy consuming module or by other post processing functions. A typical entropy consumer is a pseudo random number generator (PRNG) which can be implemented to achieve both true randomness and cryptographic strength random numbers using the TRNG output as its entropy seed. The entropy generated by a TRNG 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="TRNGInit"></a>
TRNG Initialization</h1>
<ol>
<li>
Define the TRNG user configuration structure. Use TRNG_InitUserConfigDefault() function to set it to default TRNG configuration values. </li>
<li>
Initialize the TRNG module, call the <a class="el" href="a00077.html#gaefef4539a93045832f10d28f094d26ea" title="Initializes the TRNG. ">TRNG_Init()</a> function, and pass the user configuration structure. This function automatically enables the TRNG module and its clock. After that, the TRNG is enabled and the entropy generation starts working. </li>
<li>
To disable the TRNG module, call the <a class="el" href="a00077.html#gacdcc7542e374e611c888008a227b878c" title="Shuts down the TRNG. ">TRNG_Deinit()</a> function. </li>
</ol>
<h1><a class="anchor" id="RdTRNG"></a>
Get random data from TRNG</h1>
<ol>
<li>
<a class="el" href="a00077.html#gaac12716aedb0b05e8be3e96433c8ad56" title="Gets random data. ">TRNG_GetRandomData()</a> function gets random data from the TRNG module. </li>
</ol>
<p>This example code shows how to initialize and get random data from the TRNG driver.</p>
<p>Refer to the driver examples codes located at &lt;SDK_ROOT&gt;/boards/&lt;BOARD&gt;/driver_examples/trng </p>
<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:a00505"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a00505">_trng_statistical_check_limit</a></td></tr>
<tr class="memdesc:a00505"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data structure for definition of statistical check limits. <a href="a00077.html#a00505">More...</a><br/></td></tr>
<tr class="separator:a00505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00506"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a00506">_trng_user_config</a></td></tr>
<tr class="memdesc:a00506"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data structure for the TRNG initialization. <a href="a00077.html#a00506">More...</a><br/></td></tr>
<tr class="separator:a00506"><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:ga2de9f7d76b4b85280422205789f314f3"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00077.html#ga101a182b6425f63c070d960b23adc28e">_trng_sample_mode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ga2de9f7d76b4b85280422205789f314f3">trng_sample_mode_t</a></td></tr>
<tr class="memdesc:ga2de9f7d76b4b85280422205789f314f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">TRNG sample mode. <a href="#ga2de9f7d76b4b85280422205789f314f3">More...</a><br/></td></tr>
<tr class="separator:ga2de9f7d76b4b85280422205789f314f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac029fe64631b9305b9b58f40bbe782ad"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00077.html#gadf8e7ff7c029a63058334f5f381be5af">_trng_clock_mode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#gac029fe64631b9305b9b58f40bbe782ad">trng_clock_mode_t</a></td></tr>
<tr class="memdesc:gac029fe64631b9305b9b58f40bbe782ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">TRNG clock mode. <a href="#gac029fe64631b9305b9b58f40bbe782ad">More...</a><br/></td></tr>
<tr class="separator:gac029fe64631b9305b9b58f40bbe782ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga91590689c2d3c009892847a310588dfb"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00077.html#gafc4c4e44dc0724bcb166cd9881eaf3ef">_trng_ring_osc_div</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ga91590689c2d3c009892847a310588dfb">trng_ring_osc_div_t</a></td></tr>
<tr class="memdesc:ga91590689c2d3c009892847a310588dfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">TRNG ring oscillator divide. <a href="#ga91590689c2d3c009892847a310588dfb">More...</a><br/></td></tr>
<tr class="separator:ga91590689c2d3c009892847a310588dfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga13d04154be80fe1b500d9410881a6e32"><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
<a class="el" href="a00077.html#a00505">_trng_statistical_check_limit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a></td></tr>
<tr class="memdesc:ga13d04154be80fe1b500d9410881a6e32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data structure for definition of statistical check limits. <a href="#ga13d04154be80fe1b500d9410881a6e32">More...</a><br/></td></tr>
<tr class="separator:ga13d04154be80fe1b500d9410881a6e32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga61121c5471ea471783aacba6fecce71e"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00077.html#a00506">_trng_user_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ga61121c5471ea471783aacba6fecce71e">trng_config_t</a></td></tr>
<tr class="memdesc:ga61121c5471ea471783aacba6fecce71e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data structure for the TRNG initialization. <a href="#ga61121c5471ea471783aacba6fecce71e">More...</a><br/></td></tr>
<tr class="separator:ga61121c5471ea471783aacba6fecce71e"><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:ga101a182b6425f63c070d960b23adc28e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ga101a182b6425f63c070d960b23adc28e">_trng_sample_mode</a> { <br/>
&#160;&#160;<a class="el" href="a00077.html#gga101a182b6425f63c070d960b23adc28eaf9f812a5ba8dddf6800fe42db487f5e7">kTRNG_SampleModeVonNeumann</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00077.html#gga101a182b6425f63c070d960b23adc28ea2411d65d49169b9244b0c975442ff898">kTRNG_SampleModeRaw</a> = 1U,
<br/>
&#160;&#160;<a class="el" href="a00077.html#gga101a182b6425f63c070d960b23adc28ea12725a856bdf7ea64e16156fc1f6792c">kTRNG_SampleModeVonNeumannRaw</a>
<br/>
}</td></tr>
<tr class="memdesc:ga101a182b6425f63c070d960b23adc28e"><td class="mdescLeft">&#160;</td><td class="mdescRight">TRNG sample mode. <a href="a00077.html#ga101a182b6425f63c070d960b23adc28e">More...</a><br/></td></tr>
<tr class="separator:ga101a182b6425f63c070d960b23adc28e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadf8e7ff7c029a63058334f5f381be5af"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#gadf8e7ff7c029a63058334f5f381be5af">_trng_clock_mode</a> { <br/>
&#160;&#160;<a class="el" href="a00077.html#ggadf8e7ff7c029a63058334f5f381be5afa10eb7dda9879280deaab08f87158ebbc">kTRNG_ClockModeRingOscillator</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00077.html#ggadf8e7ff7c029a63058334f5f381be5afa066582671741cf64617d6cde5d929937">kTRNG_ClockModeSystem</a> = 1U
<br/>
}</td></tr>
<tr class="memdesc:gadf8e7ff7c029a63058334f5f381be5af"><td class="mdescLeft">&#160;</td><td class="mdescRight">TRNG clock mode. <a href="a00077.html#gadf8e7ff7c029a63058334f5f381be5af">More...</a><br/></td></tr>
<tr class="separator:gadf8e7ff7c029a63058334f5f381be5af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafc4c4e44dc0724bcb166cd9881eaf3ef"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#gafc4c4e44dc0724bcb166cd9881eaf3ef">_trng_ring_osc_div</a> { <br/>
&#160;&#160;<a class="el" href="a00077.html#ggafc4c4e44dc0724bcb166cd9881eaf3efa557465d3f4d88b544fcf818085032b51">kTRNG_RingOscDiv0</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00077.html#ggafc4c4e44dc0724bcb166cd9881eaf3efaf420c1e0c4bd6a0a181464866ae70764">kTRNG_RingOscDiv2</a> = 1U,
<br/>
&#160;&#160;<a class="el" href="a00077.html#ggafc4c4e44dc0724bcb166cd9881eaf3efad03f20e54add497bca2cab5084e409d8">kTRNG_RingOscDiv4</a> = 2U,
<br/>
&#160;&#160;<a class="el" href="a00077.html#ggafc4c4e44dc0724bcb166cd9881eaf3efa207ca5ecd9403ce8299085a1bf2f9ca2">kTRNG_RingOscDiv8</a> = 3U
<br/>
}</td></tr>
<tr class="memdesc:gafc4c4e44dc0724bcb166cd9881eaf3ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">TRNG ring oscillator divide. <a href="a00077.html#gafc4c4e44dc0724bcb166cd9881eaf3ef">More...</a><br/></td></tr>
<tr class="separator:gafc4c4e44dc0724bcb166cd9881eaf3ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga3f90793dd83a0ac2249fdcb8fa762c6a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ga3f90793dd83a0ac2249fdcb8fa762c6a">TRNG_GetDefaultConfig</a> (<a class="el" href="a00077.html#ga61121c5471ea471783aacba6fecce71e">trng_config_t</a> *userConfig)</td></tr>
<tr class="memdesc:ga3f90793dd83a0ac2249fdcb8fa762c6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the user configuration structure to default values. <a href="#ga3f90793dd83a0ac2249fdcb8fa762c6a">More...</a><br/></td></tr>
<tr class="separator:ga3f90793dd83a0ac2249fdcb8fa762c6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaefef4539a93045832f10d28f094d26ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#gaefef4539a93045832f10d28f094d26ea">TRNG_Init</a> (TRNG_Type *base, const <a class="el" href="a00077.html#ga61121c5471ea471783aacba6fecce71e">trng_config_t</a> *userConfig)</td></tr>
<tr class="memdesc:gaefef4539a93045832f10d28f094d26ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the TRNG. <a href="#gaefef4539a93045832f10d28f094d26ea">More...</a><br/></td></tr>
<tr class="separator:gaefef4539a93045832f10d28f094d26ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacdcc7542e374e611c888008a227b878c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#gacdcc7542e374e611c888008a227b878c">TRNG_Deinit</a> (TRNG_Type *base)</td></tr>
<tr class="memdesc:gacdcc7542e374e611c888008a227b878c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shuts down the TRNG. <a href="#gacdcc7542e374e611c888008a227b878c">More...</a><br/></td></tr>
<tr class="separator:gacdcc7542e374e611c888008a227b878c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaac12716aedb0b05e8be3e96433c8ad56"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#gaac12716aedb0b05e8be3e96433c8ad56">TRNG_GetRandomData</a> (TRNG_Type *base, void *data, size_t dataSize)</td></tr>
<tr class="memdesc:gaac12716aedb0b05e8be3e96433c8ad56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets random data. <a href="#gaac12716aedb0b05e8be3e96433c8ad56">More...</a><br/></td></tr>
<tr class="separator:gaac12716aedb0b05e8be3e96433c8ad56"><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:ga0d809ab2bf96ed21a28c531679c1cffe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ga0d809ab2bf96ed21a28c531679c1cffe">FSL_TRNG_DRIVER_VERSION</a>&#160;&#160;&#160;(<a class="el" href="a00260.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 0, 16))</td></tr>
<tr class="memdesc:ga0d809ab2bf96ed21a28c531679c1cffe"><td class="mdescLeft">&#160;</td><td class="mdescRight">TRNG driver version 2.0.16. <a href="#ga0d809ab2bf96ed21a28c531679c1cffe">More...</a><br/></td></tr>
<tr class="separator:ga0d809ab2bf96ed21a28c531679c1cffe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00505" id="a00505"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _trng_statistical_check_limit</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><p>Used by trng_config_t. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a35e227d700d93b82e9a8d9c6bed5ddee"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a35e227d700d93b82e9a8d9c6bed5ddee">maximum</a></td></tr>
<tr class="memdesc:a35e227d700d93b82e9a8d9c6bed5ddee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum limit. <a href="#a35e227d700d93b82e9a8d9c6bed5ddee">More...</a><br/></td></tr>
<tr class="separator:a35e227d700d93b82e9a8d9c6bed5ddee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7eab56036ebd5d30bab45ad339ea2139"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a7eab56036ebd5d30bab45ad339ea2139">minimum</a></td></tr>
<tr class="memdesc:a7eab56036ebd5d30bab45ad339ea2139"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum limit. <a href="#a7eab56036ebd5d30bab45ad339ea2139">More...</a><br/></td></tr>
<tr class="separator:a7eab56036ebd5d30bab45ad339ea2139"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a35e227d700d93b82e9a8d9c6bed5ddee"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _trng_statistical_check_limit::maximum</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a7eab56036ebd5d30bab45ad339ea2139"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _trng_statistical_check_limit::minimum</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<a name="a00506" id="a00506"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _trng_user_config</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><p>This structure initializes the TRNG by calling the <a class="el" href="a00077.html#gaefef4539a93045832f10d28f094d26ea" title="Initializes the TRNG. ">TRNG_Init()</a> function. It contains all TRNG configurations. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a29129f1a5b47676d2b1386004161d2bb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a29129f1a5b47676d2b1386004161d2bb">lock</a></td></tr>
<tr class="memdesc:a29129f1a5b47676d2b1386004161d2bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable programmability of TRNG registers. <a href="#a29129f1a5b47676d2b1386004161d2bb">More...</a><br/></td></tr>
<tr class="separator:a29129f1a5b47676d2b1386004161d2bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97acdb955a51ea515fe72b7048efd52f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#gac029fe64631b9305b9b58f40bbe782ad">trng_clock_mode_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a97acdb955a51ea515fe72b7048efd52f">clockMode</a></td></tr>
<tr class="memdesc:a97acdb955a51ea515fe72b7048efd52f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clock mode used to operate TRNG. <a href="#a97acdb955a51ea515fe72b7048efd52f">More...</a><br/></td></tr>
<tr class="separator:a97acdb955a51ea515fe72b7048efd52f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ae5348399979e0b535e741417545f52"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga91590689c2d3c009892847a310588dfb">trng_ring_osc_div_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a4ae5348399979e0b535e741417545f52">ringOscDiv</a></td></tr>
<tr class="memdesc:a4ae5348399979e0b535e741417545f52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ring oscillator divide used by TRNG. <a href="#a4ae5348399979e0b535e741417545f52">More...</a><br/></td></tr>
<tr class="separator:a4ae5348399979e0b535e741417545f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8adf402929396a04de4cf981956e70d0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga2de9f7d76b4b85280422205789f314f3">trng_sample_mode_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a8adf402929396a04de4cf981956e70d0">sampleMode</a></td></tr>
<tr class="memdesc:a8adf402929396a04de4cf981956e70d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample mode of the TRNG ring oscillator. <a href="#a8adf402929396a04de4cf981956e70d0">More...</a><br/></td></tr>
<tr class="separator:a8adf402929396a04de4cf981956e70d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7070e1295b5735b031e4302103fac77d"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a7070e1295b5735b031e4302103fac77d">entropyDelay</a></td></tr>
<tr class="memdesc:a7070e1295b5735b031e4302103fac77d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Entropy Delay. <a href="#a7070e1295b5735b031e4302103fac77d">More...</a><br/></td></tr>
<tr class="separator:a7070e1295b5735b031e4302103fac77d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94f09b210075570590c3bef47fb6889d"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a94f09b210075570590c3bef47fb6889d">sampleSize</a></td></tr>
<tr class="memdesc:a94f09b210075570590c3bef47fb6889d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample Size. <a href="#a94f09b210075570590c3bef47fb6889d">More...</a><br/></td></tr>
<tr class="separator:a94f09b210075570590c3bef47fb6889d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a175eecf4ec28fd2d0f23a5bd8508da65"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a175eecf4ec28fd2d0f23a5bd8508da65">sparseBitLimit</a></td></tr>
<tr class="memdesc:a175eecf4ec28fd2d0f23a5bd8508da65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sparse Bit Limit which defines the maximum number of consecutive samples that may be discarded before an error is generated. <a href="#a175eecf4ec28fd2d0f23a5bd8508da65">More...</a><br/></td></tr>
<tr class="separator:a175eecf4ec28fd2d0f23a5bd8508da65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3870d8f37e36935d77446fc9d1c1268"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#af3870d8f37e36935d77446fc9d1c1268">retryCount</a></td></tr>
<tr class="memdesc:af3870d8f37e36935d77446fc9d1c1268"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retry count. <a href="#af3870d8f37e36935d77446fc9d1c1268">More...</a><br/></td></tr>
<tr class="separator:af3870d8f37e36935d77446fc9d1c1268"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0c1a71abdd377256338df5b3c941c75"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ae0c1a71abdd377256338df5b3c941c75">longRunMaxLimit</a></td></tr>
<tr class="memdesc:ae0c1a71abdd377256338df5b3c941c75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Largest allowable number of consecutive samples of all 1, or all 0, that is allowed during the Entropy generation. <a href="#ae0c1a71abdd377256338df5b3c941c75">More...</a><br/></td></tr>
<tr class="separator:ae0c1a71abdd377256338df5b3c941c75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbe08ed6f9a5c445f5e0753fadc8bcba"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#acbe08ed6f9a5c445f5e0753fadc8bcba">monobitLimit</a></td></tr>
<tr class="memdesc:acbe08ed6f9a5c445f5e0753fadc8bcba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum and minimum limits for statistical check of number of ones/zero detected during entropy generation. <a href="#acbe08ed6f9a5c445f5e0753fadc8bcba">More...</a><br/></td></tr>
<tr class="separator:acbe08ed6f9a5c445f5e0753fadc8bcba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05e0d98d8f9062199a1179acc97581a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a05e0d98d8f9062199a1179acc97581a4">runBit1Limit</a></td></tr>
<tr class="memdesc:a05e0d98d8f9062199a1179acc97581a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 1 detected during entropy generation. <a href="#a05e0d98d8f9062199a1179acc97581a4">More...</a><br/></td></tr>
<tr class="separator:a05e0d98d8f9062199a1179acc97581a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fb88d2407735ebd8df0dfc75902a72e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a6fb88d2407735ebd8df0dfc75902a72e">runBit2Limit</a></td></tr>
<tr class="memdesc:a6fb88d2407735ebd8df0dfc75902a72e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 2 detected during entropy generation. <a href="#a6fb88d2407735ebd8df0dfc75902a72e">More...</a><br/></td></tr>
<tr class="separator:a6fb88d2407735ebd8df0dfc75902a72e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1041555f2fbaedadbf7b9ba310a7d72b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a1041555f2fbaedadbf7b9ba310a7d72b">runBit3Limit</a></td></tr>
<tr class="memdesc:a1041555f2fbaedadbf7b9ba310a7d72b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 3 detected during entropy generation. <a href="#a1041555f2fbaedadbf7b9ba310a7d72b">More...</a><br/></td></tr>
<tr class="separator:a1041555f2fbaedadbf7b9ba310a7d72b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37e6243bb2381d40255c10d860b4fed3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a37e6243bb2381d40255c10d860b4fed3">runBit4Limit</a></td></tr>
<tr class="memdesc:a37e6243bb2381d40255c10d860b4fed3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 4 detected during entropy generation. <a href="#a37e6243bb2381d40255c10d860b4fed3">More...</a><br/></td></tr>
<tr class="separator:a37e6243bb2381d40255c10d860b4fed3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a702e81749fc05e836847f71e6d5f8dd8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a702e81749fc05e836847f71e6d5f8dd8">runBit5Limit</a></td></tr>
<tr class="memdesc:a702e81749fc05e836847f71e6d5f8dd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 5 detected during entropy generation. <a href="#a702e81749fc05e836847f71e6d5f8dd8">More...</a><br/></td></tr>
<tr class="separator:a702e81749fc05e836847f71e6d5f8dd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e629c65f299286641b8b40a9fb93111"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a9e629c65f299286641b8b40a9fb93111">runBit6PlusLimit</a></td></tr>
<tr class="memdesc:a9e629c65f299286641b8b40a9fb93111"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum and minimum limits for statistical check of number of runs of length 6 or more detected during entropy generation. <a href="#a9e629c65f299286641b8b40a9fb93111">More...</a><br/></td></tr>
<tr class="separator:a9e629c65f299286641b8b40a9fb93111"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb53ed4ec399d9b80ca53d33ac6c6d74"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#afb53ed4ec399d9b80ca53d33ac6c6d74">pokerLimit</a></td></tr>
<tr class="memdesc:afb53ed4ec399d9b80ca53d33ac6c6d74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum and minimum limits for statistical check of "Poker Test". <a href="#afb53ed4ec399d9b80ca53d33ac6c6d74">More...</a><br/></td></tr>
<tr class="separator:afb53ed4ec399d9b80ca53d33ac6c6d74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4f832762f67021a65530caf4dcafe5a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ab4f832762f67021a65530caf4dcafe5a">frequencyCountLimit</a></td></tr>
<tr class="memdesc:ab4f832762f67021a65530caf4dcafe5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum and minimum limits for statistical check of entropy sample frequency count. <a href="#ab4f832762f67021a65530caf4dcafe5a">More...</a><br/></td></tr>
<tr class="separator:ab4f832762f67021a65530caf4dcafe5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a29129f1a5b47676d2b1386004161d2bb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool _trng_user_config::lock</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a97acdb955a51ea515fe72b7048efd52f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#gac029fe64631b9305b9b58f40bbe782ad">trng_clock_mode_t</a> _trng_user_config::clockMode</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a4ae5348399979e0b535e741417545f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga91590689c2d3c009892847a310588dfb">trng_ring_osc_div_t</a> _trng_user_config::ringOscDiv</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a8adf402929396a04de4cf981956e70d0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga2de9f7d76b4b85280422205789f314f3">trng_sample_mode_t</a> _trng_user_config::sampleMode</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a7070e1295b5735b031e4302103fac77d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t _trng_user_config::entropyDelay</td>
</tr>
</table>
</div><div class="memdoc">
<p>Defines the length (in system clocks) of each Entropy sample taken. </p>
</div>
</div>
<a class="anchor" id="a94f09b210075570590c3bef47fb6889d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t _trng_user_config::sampleSize</td>
</tr>
</table>
</div><div class="memdoc">
<p>Defines the total number of Entropy samples that will be taken during Entropy generation. </p>
</div>
</div>
<a class="anchor" id="a175eecf4ec28fd2d0f23a5bd8508da65"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t _trng_user_config::sparseBitLimit</td>
</tr>
</table>
</div><div class="memdoc">
<p>This limit is used only for during von Neumann sampling (enabled by TRNG_HAL_SetSampleMode()). Samples are discarded if two consecutive raw samples are both 0 or both 1. If this discarding occurs for a long period of time, it indicates that there is insufficient Entropy. </p>
</div>
</div>
<a class="anchor" id="af3870d8f37e36935d77446fc9d1c1268"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t _trng_user_config::retryCount</td>
</tr>
</table>
</div><div class="memdoc">
<p>It defines the number of times a statistical check may fails during the TRNG Entropy Generation before generating an error. </p>
</div>
</div>
<a class="anchor" id="ae0c1a71abdd377256338df5b3c941c75"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t _trng_user_config::longRunMaxLimit</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="acbe08ed6f9a5c445f5e0753fadc8bcba"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a> _trng_user_config::monobitLimit</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a05e0d98d8f9062199a1179acc97581a4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a> _trng_user_config::runBit1Limit</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a6fb88d2407735ebd8df0dfc75902a72e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a> _trng_user_config::runBit2Limit</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a1041555f2fbaedadbf7b9ba310a7d72b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a> _trng_user_config::runBit3Limit</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a37e6243bb2381d40255c10d860b4fed3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a> _trng_user_config::runBit4Limit</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a702e81749fc05e836847f71e6d5f8dd8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a> _trng_user_config::runBit5Limit</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a9e629c65f299286641b8b40a9fb93111"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a> _trng_user_config::runBit6PlusLimit</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="afb53ed4ec399d9b80ca53d33ac6c6d74"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a> _trng_user_config::pokerLimit</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ab4f832762f67021a65530caf4dcafe5a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a> _trng_user_config::frequencyCountLimit</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga0d809ab2bf96ed21a28c531679c1cffe"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_TRNG_DRIVER_VERSION&#160;&#160;&#160;(<a class="el" href="a00260.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 0, 16))</td>
</tr>
</table>
</div><div class="memdoc">
<p>Current version: 2.0.16</p>
<p>Change log:</p>
<ul>
<li>version 2.0.16<ul>
<li>Added support for Dual oscillator mode.</li>
</ul>
</li>
<li>version 2.0.15<ul>
<li>Changed TRNG_USER_CONFIG_DEFAULT_XXX values according to latest reccomended by design team.</li>
</ul>
</li>
<li>version 2.0.14<ul>
<li>add support for RW610 and RW612</li>
</ul>
</li>
<li>version 2.0.13<ul>
<li>After deepsleep it might return error, added clearing bits in <a class="el" href="a00077.html#gaac12716aedb0b05e8be3e96433c8ad56" title="Gets random data. ">TRNG_GetRandomData()</a> and generating new entropy.</li>
<li>Modified reloading entropy in <a class="el" href="a00077.html#gaac12716aedb0b05e8be3e96433c8ad56" title="Gets random data. ">TRNG_GetRandomData()</a>, for some data length it doesn't reloading entropy correctly.</li>
</ul>
</li>
<li>version 2.0.12<ul>
<li>For KW34A4_SERIES, KW35A4_SERIES, KW36A4_SERIES set TRNG_USER_CONFIG_DEFAULT_OSC_DIV to kTRNG_RingOscDiv8.</li>
</ul>
</li>
<li>version 2.0.11<ul>
<li>Add clearing pending errors in <a class="el" href="a00077.html#gaefef4539a93045832f10d28f094d26ea" title="Initializes the TRNG. ">TRNG_Init()</a>.</li>
</ul>
</li>
<li>version 2.0.10<ul>
<li>Fixed doxygen issues.</li>
</ul>
</li>
<li>version 2.0.9<ul>
<li>Fix HIS_CCM metrics issues.</li>
</ul>
</li>
<li>version 2.0.8<ul>
<li>For K32L2A41A_SERIES set TRNG_USER_CONFIG_DEFAULT_OSC_DIV to kTRNG_RingOscDiv4.</li>
</ul>
</li>
<li>version 2.0.7<ul>
<li>Fix MISRA 2004 issue rule 12.5.</li>
</ul>
</li>
<li>version 2.0.6<ul>
<li>For KW35Z4_SERIES set TRNG_USER_CONFIG_DEFAULT_OSC_DIV to kTRNG_RingOscDiv8.</li>
</ul>
</li>
<li>version 2.0.5<ul>
<li>Add possibility to define default TRNG configuration by device specific preprocessor macros for FRQMIN, FRQMAX and OSCDIV.</li>
</ul>
</li>
<li>version 2.0.4<ul>
<li>Fix MISRA-2012 issues.</li>
</ul>
</li>
<li>Version 2.0.3<ul>
<li>update TRNG_Init to restart entropy generation</li>
</ul>
</li>
<li>Version 2.0.2<ul>
<li>fix MISRA issues</li>
</ul>
</li>
<li>Version 2.0.1<ul>
<li>add support for KL8x and KL28Z</li>
<li>update default OSCDIV for K81 to divide by 2 </li>
</ul>
</li>
</ul>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="ga2de9f7d76b4b85280422205789f314f3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00077.html#ga101a182b6425f63c070d960b23adc28e">_trng_sample_mode</a> <a class="el" href="a00077.html#ga2de9f7d76b4b85280422205789f314f3">trng_sample_mode_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Used by trng_config_t. </p>
</div>
</div>
<a class="anchor" id="gac029fe64631b9305b9b58f40bbe782ad"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00077.html#gadf8e7ff7c029a63058334f5f381be5af">_trng_clock_mode</a> <a class="el" href="a00077.html#gac029fe64631b9305b9b58f40bbe782ad">trng_clock_mode_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Used by trng_config_t. </p>
</div>
</div>
<a class="anchor" id="ga91590689c2d3c009892847a310588dfb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00077.html#gafc4c4e44dc0724bcb166cd9881eaf3ef">_trng_ring_osc_div</a> <a class="el" href="a00077.html#ga91590689c2d3c009892847a310588dfb">trng_ring_osc_div_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Used by trng_config_t. </p>
</div>
</div>
<a class="anchor" id="ga13d04154be80fe1b500d9410881a6e32"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00077.html#a00505">_trng_statistical_check_limit</a> <a class="el" href="a00077.html#ga13d04154be80fe1b500d9410881a6e32">trng_statistical_check_limit_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Used by trng_config_t. </p>
</div>
</div>
<a class="anchor" id="ga61121c5471ea471783aacba6fecce71e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00077.html#a00506">_trng_user_config</a> <a class="el" href="a00077.html#ga61121c5471ea471783aacba6fecce71e">trng_config_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>This structure initializes the TRNG by calling the <a class="el" href="a00077.html#gaefef4539a93045832f10d28f094d26ea" title="Initializes the TRNG. ">TRNG_Init()</a> function. It contains all TRNG configurations. </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga101a182b6425f63c070d960b23adc28e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00077.html#ga101a182b6425f63c070d960b23adc28e">_trng_sample_mode</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Used by trng_config_t. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga101a182b6425f63c070d960b23adc28eaf9f812a5ba8dddf6800fe42db487f5e7"></a>kTRNG_SampleModeVonNeumann</em>&nbsp;</td><td class="fielddoc">
<p>Use von Neumann data in both Entropy shifter and Statistical Checker. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga101a182b6425f63c070d960b23adc28ea2411d65d49169b9244b0c975442ff898"></a>kTRNG_SampleModeRaw</em>&nbsp;</td><td class="fielddoc">
<p>Use raw data into both Entropy shifter and Statistical Checker. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga101a182b6425f63c070d960b23adc28ea12725a856bdf7ea64e16156fc1f6792c"></a>kTRNG_SampleModeVonNeumannRaw</em>&nbsp;</td><td class="fielddoc">
<p>Use von Neumann data in Entropy shifter. </p>
<p>Use raw data into Statistical Checker. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gadf8e7ff7c029a63058334f5f381be5af"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00077.html#gadf8e7ff7c029a63058334f5f381be5af">_trng_clock_mode</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Used by trng_config_t. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggadf8e7ff7c029a63058334f5f381be5afa10eb7dda9879280deaab08f87158ebbc"></a>kTRNG_ClockModeRingOscillator</em>&nbsp;</td><td class="fielddoc">
<p>Ring oscillator is used to operate the TRNG (default). </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggadf8e7ff7c029a63058334f5f381be5afa066582671741cf64617d6cde5d929937"></a>kTRNG_ClockModeSystem</em>&nbsp;</td><td class="fielddoc">
<p>System clock is used to operate the TRNG. </p>
<p>This is for test use only, and indeterminate results may occur. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gafc4c4e44dc0724bcb166cd9881eaf3ef"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00077.html#gafc4c4e44dc0724bcb166cd9881eaf3ef">_trng_ring_osc_div</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Used by trng_config_t. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggafc4c4e44dc0724bcb166cd9881eaf3efa557465d3f4d88b544fcf818085032b51"></a>kTRNG_RingOscDiv0</em>&nbsp;</td><td class="fielddoc">
<p>Ring oscillator with no divide. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafc4c4e44dc0724bcb166cd9881eaf3efaf420c1e0c4bd6a0a181464866ae70764"></a>kTRNG_RingOscDiv2</em>&nbsp;</td><td class="fielddoc">
<p>Ring oscillator divided-by-2. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafc4c4e44dc0724bcb166cd9881eaf3efad03f20e54add497bca2cab5084e409d8"></a>kTRNG_RingOscDiv4</em>&nbsp;</td><td class="fielddoc">
<p>Ring oscillator divided-by-4. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafc4c4e44dc0724bcb166cd9881eaf3efa207ca5ecd9403ce8299085a1bf2f9ca2"></a>kTRNG_RingOscDiv8</em>&nbsp;</td><td class="fielddoc">
<p>Ring oscillator divided-by-8. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga3f90793dd83a0ac2249fdcb8fa762c6a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> TRNG_GetDefaultConfig </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00077.html#ga61121c5471ea471783aacba6fecce71e">trng_config_t</a> *&#160;</td>
<td class="paramname"><em>userConfig</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function initializes the configuration structure to default values. The default values are platform dependent.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">userConfig</td><td>User configuration structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If successful, returns the kStatus_TRNG_Success. Otherwise, it returns an error. </dd></dl>
</div>
</div>
<a class="anchor" id="gaefef4539a93045832f10d28f094d26ea"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> TRNG_Init </td>
<td>(</td>
<td class="paramtype">TRNG_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="a00077.html#ga61121c5471ea471783aacba6fecce71e">trng_config_t</a> *&#160;</td>
<td class="paramname"><em>userConfig</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function initializes the TRNG. When called, the TRNG entropy generation starts immediately.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>TRNG base address </td></tr>
<tr><td class="paramname">userConfig</td><td>Pointer to the initialization configuration structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If successful, returns the kStatus_TRNG_Success. Otherwise, it returns an error. </dd></dl>
</div>
</div>
<a class="anchor" id="gacdcc7542e374e611c888008a227b878c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void TRNG_Deinit </td>
<td>(</td>
<td class="paramtype">TRNG_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 TRNG.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>TRNG base address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaac12716aedb0b05e8be3e96433c8ad56"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> TRNG_GetRandomData </td>
<td>(</td>
<td class="paramtype">TRNG_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 TRNG.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>TRNG 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>
</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>