MCUXpresso_MIMXRT1052xxxxB/docs/MCUXpresso SDK API Referenc.../a00017.html

1781 lines
105 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: CSI: CMOS Sensor Interface</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('a00017.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="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">CSI: CMOS Sensor Interface</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<p>The MCUXpresso SDK provides a driver for the CMOS Sensor Interface (CSI)</p>
<p>The CSI enables the chip to connect directly to external CMOS image sensors. The CSI driver provides functional APIs and transactional APIs for the CSI module. The functional APIs implement the basic functions, so the user can construct them for a special use case. The transactional APIs provide a queue mechanism in order for the user to submit an empty frame buffer and get a fully-filled frame buffer easily.</p>
<h1><a class="anchor" id="CSIFBQ"></a>
Frame Buffer Queue</h1>
<p>The CSI transactional functions maintain a frame buffer queue. The queue size is defined by the macro CSI_DRIVER_QUEUE_SIZE. The queue size is 4 by default, but the user can override it by redefining the macro value in the project setting.<br/>
To use transactional APIs, first call <a class="el" href="a00017.html#gaff15e4c1cd458f686e4f296ce3d417d5">CSI_TransferCreateHandle</a> to create a handle to save the CSI driver state. This function initializes the frame buffer queue to empty status.<br/>
After the handle is created, the function <a class="el" href="a00017.html#ga807a6677a22856cf8ad1e37253b14d44">CSI_TransferSubmitEmptyBuffer</a> can be used to submit the empty frame buffer to the queue. If the queue does not have room to save the new empty frame buffers, this function returns with an error. It is not necessary to check the queue rooms before submitting an empty frame buffer. After this step, the application can call <a class="el" href="a00017.html#ga65a17c86c64297a09857e435588a65d6">CSI_TransferStart</a> to start the transfer. There must be at least two empty buffers in the queue, otherwise this function returns an error. The incoming frames are saved to the empty buffers one by one, and a callback is provided when every frame completed. To get the fully-filled frame buffer, call the function <a class="el" href="a00017.html#ga36f7bf646f55c098fb12d6fa387d6424">CSI_TransferGetFullBuffer</a>. This function returns an error if the frame buffer queue does not have full buffers. Therefore, it is not necessary to check the full buffer number in the queue before this function.<br/>
To stop the transfer, call the function <a class="el" href="a00017.html#gac20498234465760225985287ff862751">CSI_TransferStop</a> at anytime. If the queue has some full frame buffers, the application can still read them out after this stop function.<br/>
Once the transfer is started by calling <a class="el" href="a00017.html#ga65a17c86c64297a09857e435588a65d6">CSI_TransferStart</a>, the CSI device starts to receive frames and save into buffer. The CSI devices does not stop until <a class="el" href="a00017.html#gac20498234465760225985287ff862751">CSI_TransferStop</a> is called. If application does not submit empty buffer to CSI driver, the CSI driver always writes to the last submited empty buffer, this buffer will never be sent into full buffer queue until new empty buffer submited. In other words, one frame buffer is reserved by CSI driver, if application submits N empty buffers, it could get (N-1) full buffers.</p>
<h1><a class="anchor" id="CSIFRAG"></a>
Fragment Mode</h1>
<p>The frame buffer queue mechanism needs large memory, it is not suitable for some special case, for example, no SDRAM used. Fragment mode is designed for this purpose, it needs two types of buffers:</p>
<ol type="1">
<li>DMA buffer. It could be as small as (camera frame width x 2 x 2) bytes, CSI DMA writes the input data to this buffer.</li>
<li>Frame buffer. The input data is copied to this buffer at last. What is more, user could define a window (in other words, region of interest), only image in this window will be copied to the frame buffer. If input data is YUV422 format, user can only save Y component optionally.</li>
</ol>
<p>Limitations:</p>
<ol type="1">
<li>Fragment mode could not be used together with frame buffer queue mode.</li>
<li>In fragment mode, user should pay attention to the system payload. When the payload is high, the image capture might be broken.</li>
</ol>
<h1><a class="anchor" id="CSICase"></a>
Typical use case</h1>
<p>Refer to the driver examples codes located at &lt;SDK_ROOT&gt;/boards/&lt;BOARD&gt;/driver_examples/csi </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:a00335"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a00335">_csi_config</a></td></tr>
<tr class="memdesc:a00335"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configuration to initialize the CSI module. <a href="a00017.html#a00335">More...</a><br/></td></tr>
<tr class="separator:a00335"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00336"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a00336">_csi_handle</a></td></tr>
<tr class="memdesc:a00336"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI handle structure. <a href="a00017.html#a00336">More...</a><br/></td></tr>
<tr class="separator:a00336"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga6f3f169f7ba5517e946634a28add89e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga6f3f169f7ba5517e946634a28add89e1">CSI_DRIVER_QUEUE_SIZE</a>&#160;&#160;&#160;4U</td></tr>
<tr class="memdesc:ga6f3f169f7ba5517e946634a28add89e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of the frame buffer queue used in CSI transactional function. <a href="#ga6f3f169f7ba5517e946634a28add89e1">More...</a><br/></td></tr>
<tr class="separator:ga6f3f169f7ba5517e946634a28add89e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga24e366c9c656595ba3258f0e6bc59c74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga24e366c9c656595ba3258f0e6bc59c74">CSI_DRIVER_FRAG_MODE</a>&#160;&#160;&#160;0U</td></tr>
<tr class="memdesc:ga24e366c9c656595ba3258f0e6bc59c74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable fragment capture function or not. <a href="#ga24e366c9c656595ba3258f0e6bc59c74">More...</a><br/></td></tr>
<tr class="separator:ga24e366c9c656595ba3258f0e6bc59c74"><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:ga38c28eea487217a99433bc441abcd017"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00017.html#ga612584939135a10bf4b198e805785762">_csi_work_mode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga38c28eea487217a99433bc441abcd017">csi_work_mode_t</a></td></tr>
<tr class="memdesc:ga38c28eea487217a99433bc441abcd017"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI work mode. <a href="#ga38c28eea487217a99433bc441abcd017">More...</a><br/></td></tr>
<tr class="separator:ga38c28eea487217a99433bc441abcd017"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad0d5e8a230f4021a71ef3792ee99f8d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad0d5e8a230f4021a71ef3792ee99f8d7"></a>
typedef enum <a class="el" href="a00017.html#ga230259b1b2d94e1c0049171840fbb049">_csi_data_bus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gad0d5e8a230f4021a71ef3792ee99f8d7">csi_data_bus_t</a></td></tr>
<tr class="memdesc:gad0d5e8a230f4021a71ef3792ee99f8d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI data bus witdh. <br/></td></tr>
<tr class="separator:gad0d5e8a230f4021a71ef3792ee99f8d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7d2e9074e11fec0878ae4199b708eb31"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00017.html#a00335">_csi_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga7d2e9074e11fec0878ae4199b708eb31">csi_config_t</a></td></tr>
<tr class="memdesc:ga7d2e9074e11fec0878ae4199b708eb31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configuration to initialize the CSI module. <a href="#ga7d2e9074e11fec0878ae4199b708eb31">More...</a><br/></td></tr>
<tr class="separator:ga7d2e9074e11fec0878ae4199b708eb31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3ed868a78c932aa1904d48c0d65cf650"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00017.html#gac3edbdbf7abc89ac49f0a44af06f6f24">_csi_fifo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga3ed868a78c932aa1904d48c0d65cf650">csi_fifo_t</a></td></tr>
<tr class="memdesc:ga3ed868a78c932aa1904d48c0d65cf650"><td class="mdescLeft">&#160;</td><td class="mdescRight">The CSI FIFO, used for FIFO operation. <a href="#ga3ed868a78c932aa1904d48c0d65cf650">More...</a><br/></td></tr>
<tr class="separator:ga3ed868a78c932aa1904d48c0d65cf650"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga68a7e9c86a91b7ffb6547cf762ef6f3f"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga68a7e9c86a91b7ffb6547cf762ef6f3f">csi_transfer_callback_t</a> )(CSI_Type *base, <a class="el" href="a00017.html#a00336">csi_handle_t</a> *handle, <a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> status, void *userData)</td></tr>
<tr class="memdesc:ga68a7e9c86a91b7ffb6547cf762ef6f3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI transfer callback function. <a href="#ga68a7e9c86a91b7ffb6547cf762ef6f3f">More...</a><br/></td></tr>
<tr class="separator:ga68a7e9c86a91b7ffb6547cf762ef6f3f"><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:gab04a0655cd1e3bcac5e8f48c18df1a57"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br/>
&#160;&#160;<a class="el" href="a00017.html#ggab04a0655cd1e3bcac5e8f48c18df1a57a14ddc6ba82ee752fdfe1f4b0e64d5533">kStatus_CSI_NoEmptyBuffer</a> = MAKE_STATUS(kStatusGroup_CSI, 0),
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggab04a0655cd1e3bcac5e8f48c18df1a57a4fb022ca8ae559e96d18524e7ea09a5f">kStatus_CSI_NoFullBuffer</a> = MAKE_STATUS(kStatusGroup_CSI, 1),
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggab04a0655cd1e3bcac5e8f48c18df1a57a6517cec370f757b84ba21eb690e51635">kStatus_CSI_QueueFull</a> = MAKE_STATUS(kStatusGroup_CSI, 2),
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggab04a0655cd1e3bcac5e8f48c18df1a57ac9a47e7b267d5ece60e04306d2e245d2">kStatus_CSI_FrameDone</a> = MAKE_STATUS(kStatusGroup_CSI, 3)
<br/>
}</td></tr>
<tr class="memdesc:gab04a0655cd1e3bcac5e8f48c18df1a57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error codes for the CSI driver. <a href="a00017.html#gab04a0655cd1e3bcac5e8f48c18df1a57">More...</a><br/></td></tr>
<tr class="separator:gab04a0655cd1e3bcac5e8f48c18df1a57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga612584939135a10bf4b198e805785762"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga612584939135a10bf4b198e805785762">_csi_work_mode</a> { <br/>
&#160;&#160;<a class="el" href="a00017.html#gga612584939135a10bf4b198e805785762ab707b88b2c5b3ca70afe6b78f2988571">kCSI_GatedClockMode</a> = CSI_CR1_GCLK_MODE(1U),
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga612584939135a10bf4b198e805785762aefff73d6d0ed48e20bb12df629036633">kCSI_NonGatedClockMode</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga612584939135a10bf4b198e805785762abab5a5dfbcc1c77bc66513760fdb0ddf">kCSI_CCIR656ProgressiveMode</a> = CSI_CR1_CCIR_EN(1U)
<br/>
}</td></tr>
<tr class="memdesc:ga612584939135a10bf4b198e805785762"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI work mode. <a href="a00017.html#ga612584939135a10bf4b198e805785762">More...</a><br/></td></tr>
<tr class="separator:ga612584939135a10bf4b198e805785762"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga230259b1b2d94e1c0049171840fbb049"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga230259b1b2d94e1c0049171840fbb049">_csi_data_bus</a> { <br/>
&#160;&#160;<a class="el" href="a00017.html#gga230259b1b2d94e1c0049171840fbb049ae6e9f2234f6b659241d9d504457e04dd">kCSI_DataBus8Bit</a>,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga230259b1b2d94e1c0049171840fbb049ab41330fa7ebc27664112a4b592b53626">kCSI_DataBus16Bit</a>,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga230259b1b2d94e1c0049171840fbb049ad26851c8a6a7be5e501625034e0f6a99">kCSI_DataBus24Bit</a>
<br/>
}</td></tr>
<tr class="memdesc:ga230259b1b2d94e1c0049171840fbb049"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI data bus witdh. <a href="a00017.html#ga230259b1b2d94e1c0049171840fbb049">More...</a><br/></td></tr>
<tr class="separator:ga230259b1b2d94e1c0049171840fbb049"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafda41057e6d13039ca0d139b89abde64"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gafda41057e6d13039ca0d139b89abde64">_csi_polarity_flags</a> { <br/>
&#160;&#160;<a class="el" href="a00017.html#ggafda41057e6d13039ca0d139b89abde64aa1f34086d7ab2823fc0036e30e0b5889">kCSI_HsyncActiveLow</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggafda41057e6d13039ca0d139b89abde64aab952a4e21500ee629a8bd16ece03b3f">kCSI_HsyncActiveHigh</a> = CSI_CR1_HSYNC_POL_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggafda41057e6d13039ca0d139b89abde64aa98b2058628ba0d2bff537f81df0bfc9">kCSI_DataLatchOnRisingEdge</a> = CSI_CR1_REDGE_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggafda41057e6d13039ca0d139b89abde64a86d385db0cc0163dc5a0a44aad733a80">kCSI_DataLatchOnFallingEdge</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggafda41057e6d13039ca0d139b89abde64a4926dcbdf349c2cf3d8dd88d12f4bb9f">kCSI_VsyncActiveHigh</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggafda41057e6d13039ca0d139b89abde64a9c1a612c6d6e49ba13091df9d6046aab">kCSI_VsyncActiveLow</a> = CSI_CR1_SOF_POL_MASK
<br/>
}</td></tr>
<tr class="memdesc:gafda41057e6d13039ca0d139b89abde64"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI signal polarity. <a href="a00017.html#gafda41057e6d13039ca0d139b89abde64">More...</a><br/></td></tr>
<tr class="separator:gafda41057e6d13039ca0d139b89abde64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac3edbdbf7abc89ac49f0a44af06f6f24"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gac3edbdbf7abc89ac49f0a44af06f6f24">_csi_fifo</a> { <br/>
&#160;&#160;<a class="el" href="a00017.html#ggac3edbdbf7abc89ac49f0a44af06f6f24a2665957976c094c559d20661126fc914">kCSI_RxFifo</a> = (1U &lt;&lt; 0U),
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac3edbdbf7abc89ac49f0a44af06f6f24a36df4b7466c177205c81d8fd4fe8dfa4">kCSI_StatFifo</a> = (1U &lt;&lt; 1U),
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac3edbdbf7abc89ac49f0a44af06f6f24a960822cab30b37b78e71b03754b1adfc">kCSI_AllFifo</a> = 0x01 | 0x02
<br/>
}</td></tr>
<tr class="memdesc:gac3edbdbf7abc89ac49f0a44af06f6f24"><td class="mdescLeft">&#160;</td><td class="mdescRight">The CSI FIFO, used for FIFO operation. <a href="a00017.html#gac3edbdbf7abc89ac49f0a44af06f6f24">More...</a><br/></td></tr>
<tr class="separator:gac3edbdbf7abc89ac49f0a44af06f6f24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga445b9c8db2ffe230018ced411b88cc3e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga445b9c8db2ffe230018ced411b88cc3e">_csi_interrupt_enable</a> { <br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ea7346f16c89a990476f2551ceb7b40065">kCSI_EndOfFrameInterruptEnable</a> = CSI_CR1_EOF_INT_EN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ead360f344cb258fc94c31091c60a9921c">kCSI_ChangeOfFieldInterruptEnable</a> = CSI_CR1_COF_INT_EN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ead3eae43cd538d4963a92537e10857375">kCSI_StatFifoOverrunInterruptEnable</a> = CSI_CR1_SF_OR_INTEN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3eabe9ee51fbfa0916ac89d43cf1dceec5a">kCSI_RxFifoOverrunInterruptEnable</a> = CSI_CR1_RF_OR_INTEN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ea88e9447b7f3d6730a8817418a9149bdf">kCSI_StatFifoDmaDoneInterruptEnable</a> = CSI_CR1_SFF_DMA_DONE_INTEN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ea25e1d2b38d337c7ac800a14ed153496a">kCSI_StatFifoFullInterruptEnable</a> = CSI_CR1_STATFF_INTEN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3eab51980279060e64d99dea0b615b1a6eb">kCSI_RxBuffer1DmaDoneInterruptEnable</a> = CSI_CR1_FB2_DMA_DONE_INTEN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3eaa93e6aebf81cc468b6827ecae5e996e3">kCSI_RxBuffer0DmaDoneInterruptEnable</a> = CSI_CR1_FB1_DMA_DONE_INTEN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ea32b521a89db1b0a953e54ff82ddaafe1">kCSI_RxFifoFullInterruptEnable</a> = CSI_CR1_RXFF_INTEN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ea1f737081cd588e20b0e37adda571380a">kCSI_StartOfFrameInterruptEnable</a> = CSI_CR1_SOF_INTEN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ea426a30446ecdcd5a8ef11d7114587afc">kCSI_EccErrorInterruptEnable</a> = CSI_CR3_ECC_INT_EN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3eae5a566edbf0dbd027cbd20bc6649fb00">kCSI_AhbResErrorInterruptEnable</a> = CSI_CR3_HRESP_ERR_EN_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ea485b9acd1e879204a29e1351eef0f34b">kCSI_BaseAddrChangeErrorInterruptEnable</a> = CSI_CR18_BASEADDR_CHANGE_ERROR_IE_MASK &lt;&lt; 6U,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ea53b2171811b48986f94d99640bc293e6">kCSI_Field0DoneInterruptEnable</a> = CSI_CR18_FIELD0_DONE_IE_MASK &lt;&lt; 6U,
<br/>
&#160;&#160;<a class="el" href="a00017.html#gga445b9c8db2ffe230018ced411b88cc3ea51b6eae094b905ec5c42f09330ab0cc2">kCSI_Field1DoneInterruptEnable</a> = CSI_CR18_DMA_FIELD1_DONE_IE_MASK &lt;&lt; 6U
<br/>
}</td></tr>
<tr class="memdesc:ga445b9c8db2ffe230018ced411b88cc3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI feature interrupt source. <a href="a00017.html#ga445b9c8db2ffe230018ced411b88cc3e">More...</a><br/></td></tr>
<tr class="separator:ga445b9c8db2ffe230018ced411b88cc3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac962030ce8597d68455e55874a51721f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gac962030ce8597d68455e55874a51721f">_csi_flags</a> { <br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa32acc9a0622596c7f830e6d70568931c">kCSI_RxFifoDataReadyFlag</a> = CSI_SR_DRDY_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa3e02610408a6ebfe221869a1923009ba">kCSI_EccErrorFlag</a> = CSI_SR_ECC_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa984df7af7f9825fb4659d11f42463f44">kCSI_AhbResErrorFlag</a> = CSI_SR_HRESP_ERR_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fabe92f518f5c2f0ccbe55ebdcf4c29e89">kCSI_ChangeOfFieldFlag</a> = CSI_SR_COF_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fab337940c172c17058f8cde8bb676378f">kCSI_Field0PresentFlag</a> = CSI_SR_F1_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa157a47bde1ba661fdf22ca2ae61b3c0b">kCSI_Field1PresentFlag</a> = CSI_SR_F2_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa064c85b25c414abdeb86d501eb57360c">kCSI_StartOfFrameFlag</a> = CSI_SR_SOF_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fac6409ca23ef24a10e22fb9582213f2bc">kCSI_EndOfFrameFlag</a> = CSI_SR_EOF_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fabdd835d96491b90bf5ae39dc5e4b0497">kCSI_RxFifoFullFlag</a> = CSI_SR_RxFF_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa27f18871d1b522ca628722a3fb80b89d">kCSI_RxBuffer1DmaDoneFlag</a> = CSI_SR_DMA_TSF_DONE_FB2_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa3168d94660e46e761c0639a1a20b74ee">kCSI_RxBuffer0DmaDoneFlag</a> = CSI_SR_DMA_TSF_DONE_FB1_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa920018020044eb07e3ffed1f423208a5">kCSI_StatFifoFullFlag</a> = CSI_SR_STATFF_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa961784728b693f7741adb7b17ebe425b">kCSI_StatFifoDmaDoneFlag</a> = CSI_SR_DMA_TSF_DONE_SFF_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa0350ec81b55a8180eaffcd8b1f537cdf">kCSI_StatFifoOverrunFlag</a> = CSI_SR_SF_OR_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fab01731bc864c9b47644a6de2bc2f88d5">kCSI_RxFifoOverrunFlag</a> = CSI_SR_RF_OR_INT_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa2676d308e2677cc91f47ae0661355d10">kCSI_Field0DoneFlag</a> = CSI_SR_DMA_FIELD0_DONE_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa6e7f6d415b0e9848c2f33f25ea9c0036">kCSI_Field1DoneFlag</a> = CSI_SR_DMA_FIELD1_DONE_MASK,
<br/>
&#160;&#160;<a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa254be4a91697e3bf3146a663454c2e60">kCSI_BaseAddrChangeErrorFlag</a> = CSI_SR_BASEADDR_CHHANGE_ERROR_MASK
<br/>
}</td></tr>
<tr class="memdesc:gac962030ce8597d68455e55874a51721f"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI status flags. <a href="a00017.html#gac962030ce8597d68455e55874a51721f">More...</a><br/></td></tr>
<tr class="separator:gac962030ce8597d68455e55874a51721f"><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:ga763b9b92933249b8711f9a61b98efe58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga763b9b92933249b8711f9a61b98efe58"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>FSL_CSI_DRIVER_VERSION</b>&#160;&#160;&#160;(<a class="el" href="a00272.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 1, 5))</td></tr>
<tr class="separator:ga763b9b92933249b8711f9a61b98efe58"><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:ga6ab1581b894e0addd36e259454d894fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga6ab1581b894e0addd36e259454d894fb">CSI_Init</a> (CSI_Type *base, const <a class="el" href="a00017.html#ga7d2e9074e11fec0878ae4199b708eb31">csi_config_t</a> *config)</td></tr>
<tr class="memdesc:ga6ab1581b894e0addd36e259454d894fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the CSI. <a href="#ga6ab1581b894e0addd36e259454d894fb">More...</a><br/></td></tr>
<tr class="separator:ga6ab1581b894e0addd36e259454d894fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga29130aa6333127427e9945203a941c31"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga29130aa6333127427e9945203a941c31">CSI_Deinit</a> (CSI_Type *base)</td></tr>
<tr class="memdesc:ga29130aa6333127427e9945203a941c31"><td class="mdescLeft">&#160;</td><td class="mdescRight">De-initialize the CSI. <a href="#ga29130aa6333127427e9945203a941c31">More...</a><br/></td></tr>
<tr class="separator:ga29130aa6333127427e9945203a941c31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaf0c3b036356a13b113c190762035317"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gaaf0c3b036356a13b113c190762035317">CSI_Reset</a> (CSI_Type *base)</td></tr>
<tr class="memdesc:gaaf0c3b036356a13b113c190762035317"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the CSI. <a href="#gaaf0c3b036356a13b113c190762035317">More...</a><br/></td></tr>
<tr class="separator:gaaf0c3b036356a13b113c190762035317"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga44bd4343d5866367abc152651f3d8a03"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga44bd4343d5866367abc152651f3d8a03">CSI_GetDefaultConfig</a> (<a class="el" href="a00017.html#ga7d2e9074e11fec0878ae4199b708eb31">csi_config_t</a> *config)</td></tr>
<tr class="memdesc:ga44bd4343d5866367abc152651f3d8a03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the default configuration for to initialize the CSI. <a href="#ga44bd4343d5866367abc152651f3d8a03">More...</a><br/></td></tr>
<tr class="separator:ga44bd4343d5866367abc152651f3d8a03"><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>
Module operation</h2></td></tr>
<tr class="memitem:gaa9a972883f2e04aefb94bac426fa9c72"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gaa9a972883f2e04aefb94bac426fa9c72">CSI_ClearFifo</a> (CSI_Type *base, <a class="el" href="a00017.html#ga3ed868a78c932aa1904d48c0d65cf650">csi_fifo_t</a> fifo)</td></tr>
<tr class="memdesc:gaa9a972883f2e04aefb94bac426fa9c72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the CSI FIFO. <a href="#gaa9a972883f2e04aefb94bac426fa9c72">More...</a><br/></td></tr>
<tr class="separator:gaa9a972883f2e04aefb94bac426fa9c72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd61e583724350ad66feacf6cb55e86c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gabd61e583724350ad66feacf6cb55e86c">CSI_ReflashFifoDma</a> (CSI_Type *base, <a class="el" href="a00017.html#ga3ed868a78c932aa1904d48c0d65cf650">csi_fifo_t</a> fifo)</td></tr>
<tr class="memdesc:gabd61e583724350ad66feacf6cb55e86c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reflash the CSI FIFO DMA. <a href="#gabd61e583724350ad66feacf6cb55e86c">More...</a><br/></td></tr>
<tr class="separator:gabd61e583724350ad66feacf6cb55e86c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga266530ad9e8aa0e0e4977317b5cd9899"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga266530ad9e8aa0e0e4977317b5cd9899">CSI_EnableFifoDmaRequest</a> (CSI_Type *base, <a class="el" href="a00017.html#ga3ed868a78c932aa1904d48c0d65cf650">csi_fifo_t</a> fifo, bool enable)</td></tr>
<tr class="memdesc:ga266530ad9e8aa0e0e4977317b5cd9899"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable or disable the CSI FIFO DMA request. <a href="#ga266530ad9e8aa0e0e4977317b5cd9899">More...</a><br/></td></tr>
<tr class="separator:ga266530ad9e8aa0e0e4977317b5cd9899"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gace757ddd954a29a1a11c0bdc119b17ad"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gace757ddd954a29a1a11c0bdc119b17ad">CSI_Start</a> (CSI_Type *base)</td></tr>
<tr class="memdesc:gace757ddd954a29a1a11c0bdc119b17ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start to receive data. <a href="#gace757ddd954a29a1a11c0bdc119b17ad">More...</a><br/></td></tr>
<tr class="separator:gace757ddd954a29a1a11c0bdc119b17ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga49731f4255e64f48eb0f26628296c13e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga49731f4255e64f48eb0f26628296c13e">CSI_Stop</a> (CSI_Type *base)</td></tr>
<tr class="memdesc:ga49731f4255e64f48eb0f26628296c13e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop to receiving data. <a href="#ga49731f4255e64f48eb0f26628296c13e">More...</a><br/></td></tr>
<tr class="separator:ga49731f4255e64f48eb0f26628296c13e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga17f23deb7d61ad8d88b10165e512d50d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga17f23deb7d61ad8d88b10165e512d50d">CSI_SetRxBufferAddr</a> (CSI_Type *base, uint8_t index, uint32_t addr)</td></tr>
<tr class="memdesc:ga17f23deb7d61ad8d88b10165e512d50d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the RX frame buffer address. <a href="#ga17f23deb7d61ad8d88b10165e512d50d">More...</a><br/></td></tr>
<tr class="separator:ga17f23deb7d61ad8d88b10165e512d50d"><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:ga433cf3d4d36b2d602b2e41b415abd85f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga433cf3d4d36b2d602b2e41b415abd85f">CSI_EnableInterrupts</a> (CSI_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:ga433cf3d4d36b2d602b2e41b415abd85f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables CSI interrupt requests. <a href="#ga433cf3d4d36b2d602b2e41b415abd85f">More...</a><br/></td></tr>
<tr class="separator:ga433cf3d4d36b2d602b2e41b415abd85f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaef95a89e63407cdb28b9dbf81ce4fe5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gaaef95a89e63407cdb28b9dbf81ce4fe5">CSI_DisableInterrupts</a> (CSI_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:gaaef95a89e63407cdb28b9dbf81ce4fe5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable CSI interrupt requests. <a href="#gaaef95a89e63407cdb28b9dbf81ce4fe5">More...</a><br/></td></tr>
<tr class="separator:gaaef95a89e63407cdb28b9dbf81ce4fe5"><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:gac756a072ac5afdb9567632d02d13e73f"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gac756a072ac5afdb9567632d02d13e73f">CSI_GetStatusFlags</a> (CSI_Type *base)</td></tr>
<tr class="memdesc:gac756a072ac5afdb9567632d02d13e73f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the CSI status flags. <a href="#gac756a072ac5afdb9567632d02d13e73f">More...</a><br/></td></tr>
<tr class="separator:gac756a072ac5afdb9567632d02d13e73f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9368862568891bbdb29b0a6287801506"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga9368862568891bbdb29b0a6287801506">CSI_ClearStatusFlags</a> (CSI_Type *base, uint32_t statusMask)</td></tr>
<tr class="memdesc:ga9368862568891bbdb29b0a6287801506"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the CSI status flag. <a href="#ga9368862568891bbdb29b0a6287801506">More...</a><br/></td></tr>
<tr class="separator:ga9368862568891bbdb29b0a6287801506"><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>
Transactional</h2></td></tr>
<tr class="memitem:gaff15e4c1cd458f686e4f296ce3d417d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gaff15e4c1cd458f686e4f296ce3d417d5">CSI_TransferCreateHandle</a> (CSI_Type *base, <a class="el" href="a00017.html#a00336">csi_handle_t</a> *handle, <a class="el" href="a00017.html#ga68a7e9c86a91b7ffb6547cf762ef6f3f">csi_transfer_callback_t</a> callback, void *userData)</td></tr>
<tr class="memdesc:gaff15e4c1cd458f686e4f296ce3d417d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the CSI handle. <a href="#gaff15e4c1cd458f686e4f296ce3d417d5">More...</a><br/></td></tr>
<tr class="separator:gaff15e4c1cd458f686e4f296ce3d417d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga65a17c86c64297a09857e435588a65d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga65a17c86c64297a09857e435588a65d6">CSI_TransferStart</a> (CSI_Type *base, <a class="el" href="a00017.html#a00336">csi_handle_t</a> *handle)</td></tr>
<tr class="memdesc:ga65a17c86c64297a09857e435588a65d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the transfer using transactional functions. <a href="#ga65a17c86c64297a09857e435588a65d6">More...</a><br/></td></tr>
<tr class="separator:ga65a17c86c64297a09857e435588a65d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac20498234465760225985287ff862751"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gac20498234465760225985287ff862751">CSI_TransferStop</a> (CSI_Type *base, <a class="el" href="a00017.html#a00336">csi_handle_t</a> *handle)</td></tr>
<tr class="memdesc:gac20498234465760225985287ff862751"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the transfer using transactional functions. <a href="#gac20498234465760225985287ff862751">More...</a><br/></td></tr>
<tr class="separator:gac20498234465760225985287ff862751"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga807a6677a22856cf8ad1e37253b14d44"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga807a6677a22856cf8ad1e37253b14d44">CSI_TransferSubmitEmptyBuffer</a> (CSI_Type *base, <a class="el" href="a00017.html#a00336">csi_handle_t</a> *handle, uint32_t frameBuffer)</td></tr>
<tr class="memdesc:ga807a6677a22856cf8ad1e37253b14d44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Submit empty frame buffer to queue. <a href="#ga807a6677a22856cf8ad1e37253b14d44">More...</a><br/></td></tr>
<tr class="separator:ga807a6677a22856cf8ad1e37253b14d44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga36f7bf646f55c098fb12d6fa387d6424"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ga36f7bf646f55c098fb12d6fa387d6424">CSI_TransferGetFullBuffer</a> (CSI_Type *base, <a class="el" href="a00017.html#a00336">csi_handle_t</a> *handle, uint32_t *frameBuffer)</td></tr>
<tr class="memdesc:ga36f7bf646f55c098fb12d6fa387d6424"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get one full frame buffer from queue. <a href="#ga36f7bf646f55c098fb12d6fa387d6424">More...</a><br/></td></tr>
<tr class="separator:ga36f7bf646f55c098fb12d6fa387d6424"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa8118210b401dacd2257dbb75c6a6310"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#gaa8118210b401dacd2257dbb75c6a6310">CSI_TransferHandleIRQ</a> (CSI_Type *base, <a class="el" href="a00017.html#a00336">csi_handle_t</a> *handle)</td></tr>
<tr class="memdesc:gaa8118210b401dacd2257dbb75c6a6310"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI IRQ handle function. <a href="#gaa8118210b401dacd2257dbb75c6a6310">More...</a><br/></td></tr>
<tr class="separator:gaa8118210b401dacd2257dbb75c6a6310"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00335" id="a00335"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _csi_config</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:aa87f4e4a75b55dd3c5abb5c60c04f342"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#aa87f4e4a75b55dd3c5abb5c60c04f342">width</a></td></tr>
<tr class="memdesc:aa87f4e4a75b55dd3c5abb5c60c04f342"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pixels of the input frame. <a href="#aa87f4e4a75b55dd3c5abb5c60c04f342">More...</a><br/></td></tr>
<tr class="separator:aa87f4e4a75b55dd3c5abb5c60c04f342"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad23fb85c17aca752f6ad942892407d2a"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ad23fb85c17aca752f6ad942892407d2a">height</a></td></tr>
<tr class="memdesc:ad23fb85c17aca752f6ad942892407d2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lines of the input frame. <a href="#ad23fb85c17aca752f6ad942892407d2a">More...</a><br/></td></tr>
<tr class="separator:ad23fb85c17aca752f6ad942892407d2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa941eb41b6d5f8d71091a1947326a183"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#aa941eb41b6d5f8d71091a1947326a183">polarityFlags</a></td></tr>
<tr class="memdesc:aa941eb41b6d5f8d71091a1947326a183"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timing signal polarity flags, OR'ed value of <a class="el" href="a00017.html#gafda41057e6d13039ca0d139b89abde64">_csi_polarity_flags</a>. <a href="#aa941eb41b6d5f8d71091a1947326a183">More...</a><br/></td></tr>
<tr class="separator:aa941eb41b6d5f8d71091a1947326a183"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a527fe46ba2e0bc0c0b9b802719b9d6e1"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a527fe46ba2e0bc0c0b9b802719b9d6e1">bytesPerPixel</a></td></tr>
<tr class="memdesc:a527fe46ba2e0bc0c0b9b802719b9d6e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bytes per pixel, valid values are: <a href="#a527fe46ba2e0bc0c0b9b802719b9d6e1">More...</a><br/></td></tr>
<tr class="separator:a527fe46ba2e0bc0c0b9b802719b9d6e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a3fc579a852f34bddbf0f3de5141dd9"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a9a3fc579a852f34bddbf0f3de5141dd9">linePitch_Bytes</a></td></tr>
<tr class="memdesc:a9a3fc579a852f34bddbf0f3de5141dd9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frame buffer line pitch, must be 8-byte aligned. <a href="#a9a3fc579a852f34bddbf0f3de5141dd9">More...</a><br/></td></tr>
<tr class="separator:a9a3fc579a852f34bddbf0f3de5141dd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af01a2fa8deb8edb1e2cc4b10d9711b0b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00017.html#ga38c28eea487217a99433bc441abcd017">csi_work_mode_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#af01a2fa8deb8edb1e2cc4b10d9711b0b">workMode</a></td></tr>
<tr class="memdesc:af01a2fa8deb8edb1e2cc4b10d9711b0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI work mode. <a href="#af01a2fa8deb8edb1e2cc4b10d9711b0b">More...</a><br/></td></tr>
<tr class="separator:af01a2fa8deb8edb1e2cc4b10d9711b0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc5877102571c3b2fad7e68d81291a27"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00017.html#gad0d5e8a230f4021a71ef3792ee99f8d7">csi_data_bus_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#adc5877102571c3b2fad7e68d81291a27">dataBus</a></td></tr>
<tr class="memdesc:adc5877102571c3b2fad7e68d81291a27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data bus width. <a href="#adc5877102571c3b2fad7e68d81291a27">More...</a><br/></td></tr>
<tr class="separator:adc5877102571c3b2fad7e68d81291a27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a616fc7c4c54c446c200b80b9b45f4b05"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a616fc7c4c54c446c200b80b9b45f4b05">useExtVsync</a></td></tr>
<tr class="memdesc:a616fc7c4c54c446c200b80b9b45f4b05"><td class="mdescLeft">&#160;</td><td class="mdescRight">In CCIR656 progressive mode, set true to use external VSYNC signal, set false to use internal VSYNC signal decoded from SOF. <a href="#a616fc7c4c54c446c200b80b9b45f4b05">More...</a><br/></td></tr>
<tr class="separator:a616fc7c4c54c446c200b80b9b45f4b05"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="aa87f4e4a75b55dd3c5abb5c60c04f342"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t _csi_config::width</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ad23fb85c17aca752f6ad942892407d2a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t _csi_config::height</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aa941eb41b6d5f8d71091a1947326a183"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _csi_config::polarityFlags</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a527fe46ba2e0bc0c0b9b802719b9d6e1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t _csi_config::bytesPerPixel</td>
</tr>
</table>
</div><div class="memdoc">
<ul>
<li>2: Used for RGB565, YUV422, and so on.</li>
<li>4: Used for XRGB8888, XYUV444, and so on. </li>
</ul>
</div>
</div>
<a class="anchor" id="a9a3fc579a852f34bddbf0f3de5141dd9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t _csi_config::linePitch_Bytes</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="af01a2fa8deb8edb1e2cc4b10d9711b0b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00017.html#ga38c28eea487217a99433bc441abcd017">csi_work_mode_t</a> _csi_config::workMode</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="adc5877102571c3b2fad7e68d81291a27"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00017.html#gad0d5e8a230f4021a71ef3792ee99f8d7">csi_data_bus_t</a> _csi_config::dataBus</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a616fc7c4c54c446c200b80b9b45f4b05"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool _csi_config::useExtVsync</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<a name="a00336" id="a00336"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _csi_handle</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><p>Please see the user guide for the details of the CSI driver queue mechanism. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:af5f2235f8567d7997b08a1940175e297"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#af5f2235f8567d7997b08a1940175e297">frameBufferQueue</a> [CSI_DRIVER_ACTUAL_QUEUE_SIZE]</td></tr>
<tr class="memdesc:af5f2235f8567d7997b08a1940175e297"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frame buffer queue. <a href="#af5f2235f8567d7997b08a1940175e297">More...</a><br/></td></tr>
<tr class="separator:af5f2235f8567d7997b08a1940175e297"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06c77a80fe42b345ac0f922445efd416"><td class="memItemLeft" align="right" valign="top">volatile uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a06c77a80fe42b345ac0f922445efd416">queueWriteIdx</a></td></tr>
<tr class="memdesc:a06c77a80fe42b345ac0f922445efd416"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to save incoming item. <a href="#a06c77a80fe42b345ac0f922445efd416">More...</a><br/></td></tr>
<tr class="separator:a06c77a80fe42b345ac0f922445efd416"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cac71e25437352d6aab02cf98b19482"><td class="memItemLeft" align="right" valign="top">volatile uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a3cac71e25437352d6aab02cf98b19482">queueReadIdx</a></td></tr>
<tr class="memdesc:a3cac71e25437352d6aab02cf98b19482"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to read out the item. <a href="#a3cac71e25437352d6aab02cf98b19482">More...</a><br/></td></tr>
<tr class="separator:a3cac71e25437352d6aab02cf98b19482"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79061b46f379dbdadaceabbe7919b037"><td class="memItemLeft" align="right" valign="top">void *volatile&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a79061b46f379dbdadaceabbe7919b037">emptyBuffer</a></td></tr>
<tr class="memdesc:a79061b46f379dbdadaceabbe7919b037"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to maintain the empty frame buffers. <a href="#a79061b46f379dbdadaceabbe7919b037">More...</a><br/></td></tr>
<tr class="separator:a79061b46f379dbdadaceabbe7919b037"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addbb81150dbfefa8ed9a89ee094e5953"><td class="memItemLeft" align="right" valign="top">volatile uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#addbb81150dbfefa8ed9a89ee094e5953">emptyBufferCnt</a></td></tr>
<tr class="memdesc:addbb81150dbfefa8ed9a89ee094e5953"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty frame buffers count. <a href="#addbb81150dbfefa8ed9a89ee094e5953">More...</a><br/></td></tr>
<tr class="separator:addbb81150dbfefa8ed9a89ee094e5953"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac982c0d3585d6109c08f250b5e2ba94"><td class="memItemLeft" align="right" valign="top">volatile uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#aac982c0d3585d6109c08f250b5e2ba94">activeBufferNum</a></td></tr>
<tr class="memdesc:aac982c0d3585d6109c08f250b5e2ba94"><td class="mdescLeft">&#160;</td><td class="mdescRight">How many frame buffers are in progres currently. <a href="#aac982c0d3585d6109c08f250b5e2ba94">More...</a><br/></td></tr>
<tr class="separator:aac982c0d3585d6109c08f250b5e2ba94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d27f39310ca972f7cd96e83165435a6"><td class="memItemLeft" align="right" valign="top">volatile bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a5d27f39310ca972f7cd96e83165435a6">transferStarted</a></td></tr>
<tr class="memdesc:a5d27f39310ca972f7cd96e83165435a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">User has called <a class="el" href="a00017.html#ga65a17c86c64297a09857e435588a65d6">CSI_TransferStart</a> to start frame receiving. <a href="#a5d27f39310ca972f7cd96e83165435a6">More...</a><br/></td></tr>
<tr class="separator:a5d27f39310ca972f7cd96e83165435a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74c5d4ac3ea58518a9188d861e101ce8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00017.html#ga68a7e9c86a91b7ffb6547cf762ef6f3f">csi_transfer_callback_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a74c5d4ac3ea58518a9188d861e101ce8">callback</a></td></tr>
<tr class="memdesc:a74c5d4ac3ea58518a9188d861e101ce8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function. <a href="#a74c5d4ac3ea58518a9188d861e101ce8">More...</a><br/></td></tr>
<tr class="separator:a74c5d4ac3ea58518a9188d861e101ce8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bc56dcea99a9ceeeb2fe84d516476f7"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a4bc56dcea99a9ceeeb2fe84d516476f7">userData</a></td></tr>
<tr class="memdesc:a4bc56dcea99a9ceeeb2fe84d516476f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSI callback function parameter. <a href="#a4bc56dcea99a9ceeeb2fe84d516476f7">More...</a><br/></td></tr>
<tr class="separator:a4bc56dcea99a9ceeeb2fe84d516476f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="af5f2235f8567d7997b08a1940175e297"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _csi_handle::frameBufferQueue[CSI_DRIVER_ACTUAL_QUEUE_SIZE]</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a06c77a80fe42b345ac0f922445efd416"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">volatile uint8_t _csi_handle::queueWriteIdx</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a3cac71e25437352d6aab02cf98b19482"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">volatile uint8_t _csi_handle::queueReadIdx</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a79061b46f379dbdadaceabbe7919b037"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* volatile _csi_handle::emptyBuffer</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="addbb81150dbfefa8ed9a89ee094e5953"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">volatile uint8_t _csi_handle::emptyBufferCnt</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aac982c0d3585d6109c08f250b5e2ba94"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">volatile uint8_t _csi_handle::activeBufferNum</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a5d27f39310ca972f7cd96e83165435a6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">volatile bool _csi_handle::transferStarted</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a74c5d4ac3ea58518a9188d861e101ce8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00017.html#ga68a7e9c86a91b7ffb6547cf762ef6f3f">csi_transfer_callback_t</a> _csi_handle::callback</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a4bc56dcea99a9ceeeb2fe84d516476f7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* _csi_handle::userData</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga6f3f169f7ba5517e946634a28add89e1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CSI_DRIVER_QUEUE_SIZE&#160;&#160;&#160;4U</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga24e366c9c656595ba3258f0e6bc59c74"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CSI_DRIVER_FRAG_MODE&#160;&#160;&#160;0U</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="ga38c28eea487217a99433bc441abcd017"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00017.html#ga612584939135a10bf4b198e805785762">_csi_work_mode</a> <a class="el" href="a00017.html#ga38c28eea487217a99433bc441abcd017">csi_work_mode_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>The CCIR656 interlace mode is not supported currently. </p>
</div>
</div>
<a class="anchor" id="ga7d2e9074e11fec0878ae4199b708eb31"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00017.html#a00335">_csi_config</a> <a class="el" href="a00017.html#ga7d2e9074e11fec0878ae4199b708eb31">csi_config_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga3ed868a78c932aa1904d48c0d65cf650"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="a00017.html#gac3edbdbf7abc89ac49f0a44af06f6f24">_csi_fifo</a> <a class="el" href="a00017.html#ga3ed868a78c932aa1904d48c0d65cf650">csi_fifo_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga68a7e9c86a91b7ffb6547cf762ef6f3f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(* csi_transfer_callback_t)(CSI_Type *base, <a class="el" href="a00017.html#a00336">csi_handle_t</a> *handle, <a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> status, void *userData)</td>
</tr>
</table>
</div><div class="memdoc">
<p>When a new frame is received and saved to the frame buffer queue, the callback is called and the pass the status <a class="el" href="a00017.html#ggab04a0655cd1e3bcac5e8f48c18df1a57ac9a47e7b267d5ece60e04306d2e245d2">kStatus_CSI_FrameDone</a> to upper layer. </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="gab04a0655cd1e3bcac5e8f48c18df1a57"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">anonymous enum</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="ggab04a0655cd1e3bcac5e8f48c18df1a57a14ddc6ba82ee752fdfe1f4b0e64d5533"></a>kStatus_CSI_NoEmptyBuffer</em>&nbsp;</td><td class="fielddoc">
<p>No empty frame buffer in queue to load to CSI. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggab04a0655cd1e3bcac5e8f48c18df1a57a4fb022ca8ae559e96d18524e7ea09a5f"></a>kStatus_CSI_NoFullBuffer</em>&nbsp;</td><td class="fielddoc">
<p>No full frame buffer in queue to read out. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggab04a0655cd1e3bcac5e8f48c18df1a57a6517cec370f757b84ba21eb690e51635"></a>kStatus_CSI_QueueFull</em>&nbsp;</td><td class="fielddoc">
<p>Queue is full, no room to save new empty buffer. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggab04a0655cd1e3bcac5e8f48c18df1a57ac9a47e7b267d5ece60e04306d2e245d2"></a>kStatus_CSI_FrameDone</em>&nbsp;</td><td class="fielddoc">
<p>New frame received and saved to queue. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga612584939135a10bf4b198e805785762"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00017.html#ga612584939135a10bf4b198e805785762">_csi_work_mode</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>The CCIR656 interlace mode is not supported currently. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga612584939135a10bf4b198e805785762ab707b88b2c5b3ca70afe6b78f2988571"></a>kCSI_GatedClockMode</em>&nbsp;</td><td class="fielddoc">
<p>HSYNC, VSYNC, and PIXCLK signals are used. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga612584939135a10bf4b198e805785762aefff73d6d0ed48e20bb12df629036633"></a>kCSI_NonGatedClockMode</em>&nbsp;</td><td class="fielddoc">
<p>VSYNC, and PIXCLK signals are used. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga612584939135a10bf4b198e805785762abab5a5dfbcc1c77bc66513760fdb0ddf"></a>kCSI_CCIR656ProgressiveMode</em>&nbsp;</td><td class="fielddoc">
<p>CCIR656 progressive mode. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga230259b1b2d94e1c0049171840fbb049"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00017.html#ga230259b1b2d94e1c0049171840fbb049">_csi_data_bus</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="gga230259b1b2d94e1c0049171840fbb049ae6e9f2234f6b659241d9d504457e04dd"></a>kCSI_DataBus8Bit</em>&nbsp;</td><td class="fielddoc">
<p>8-bit data bus. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga230259b1b2d94e1c0049171840fbb049ab41330fa7ebc27664112a4b592b53626"></a>kCSI_DataBus16Bit</em>&nbsp;</td><td class="fielddoc">
<p>16-bit data bus. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga230259b1b2d94e1c0049171840fbb049ad26851c8a6a7be5e501625034e0f6a99"></a>kCSI_DataBus24Bit</em>&nbsp;</td><td class="fielddoc">
<p>24-bit data bus. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gafda41057e6d13039ca0d139b89abde64"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00017.html#gafda41057e6d13039ca0d139b89abde64">_csi_polarity_flags</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="ggafda41057e6d13039ca0d139b89abde64aa1f34086d7ab2823fc0036e30e0b5889"></a>kCSI_HsyncActiveLow</em>&nbsp;</td><td class="fielddoc">
<p>HSYNC is active low. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafda41057e6d13039ca0d139b89abde64aab952a4e21500ee629a8bd16ece03b3f"></a>kCSI_HsyncActiveHigh</em>&nbsp;</td><td class="fielddoc">
<p>HSYNC is active high. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafda41057e6d13039ca0d139b89abde64aa98b2058628ba0d2bff537f81df0bfc9"></a>kCSI_DataLatchOnRisingEdge</em>&nbsp;</td><td class="fielddoc">
<p>Pixel data latched at rising edge of pixel clock. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafda41057e6d13039ca0d139b89abde64a86d385db0cc0163dc5a0a44aad733a80"></a>kCSI_DataLatchOnFallingEdge</em>&nbsp;</td><td class="fielddoc">
<p>Pixel data latched at falling edge of pixel clock. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafda41057e6d13039ca0d139b89abde64a4926dcbdf349c2cf3d8dd88d12f4bb9f"></a>kCSI_VsyncActiveHigh</em>&nbsp;</td><td class="fielddoc">
<p>VSYNC is active high. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggafda41057e6d13039ca0d139b89abde64a9c1a612c6d6e49ba13091df9d6046aab"></a>kCSI_VsyncActiveLow</em>&nbsp;</td><td class="fielddoc">
<p>VSYNC is active low. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gac3edbdbf7abc89ac49f0a44af06f6f24"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00017.html#gac3edbdbf7abc89ac49f0a44af06f6f24">_csi_fifo</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="ggac3edbdbf7abc89ac49f0a44af06f6f24a2665957976c094c559d20661126fc914"></a>kCSI_RxFifo</em>&nbsp;</td><td class="fielddoc">
<p>RXFIFO. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac3edbdbf7abc89ac49f0a44af06f6f24a36df4b7466c177205c81d8fd4fe8dfa4"></a>kCSI_StatFifo</em>&nbsp;</td><td class="fielddoc">
<p>STAT FIFO. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac3edbdbf7abc89ac49f0a44af06f6f24a960822cab30b37b78e71b03754b1adfc"></a>kCSI_AllFifo</em>&nbsp;</td><td class="fielddoc">
<p>Both RXFIFO and STAT FIFO. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga445b9c8db2ffe230018ced411b88cc3e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00017.html#ga445b9c8db2ffe230018ced411b88cc3e">_csi_interrupt_enable</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="gga445b9c8db2ffe230018ced411b88cc3ea7346f16c89a990476f2551ceb7b40065"></a>kCSI_EndOfFrameInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>End of frame interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3ead360f344cb258fc94c31091c60a9921c"></a>kCSI_ChangeOfFieldInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>Change of field interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3ead3eae43cd538d4963a92537e10857375"></a>kCSI_StatFifoOverrunInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>STAT FIFO overrun interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3eabe9ee51fbfa0916ac89d43cf1dceec5a"></a>kCSI_RxFifoOverrunInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>RXFIFO overrun interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3ea88e9447b7f3d6730a8817418a9149bdf"></a>kCSI_StatFifoDmaDoneInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>STAT FIFO DMA done interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3ea25e1d2b38d337c7ac800a14ed153496a"></a>kCSI_StatFifoFullInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>STAT FIFO full interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3eab51980279060e64d99dea0b615b1a6eb"></a>kCSI_RxBuffer1DmaDoneInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>RX frame buffer 1 DMA transfer done. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3eaa93e6aebf81cc468b6827ecae5e996e3"></a>kCSI_RxBuffer0DmaDoneInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>RX frame buffer 0 DMA transfer done. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3ea32b521a89db1b0a953e54ff82ddaafe1"></a>kCSI_RxFifoFullInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>RXFIFO full interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3ea1f737081cd588e20b0e37adda571380a"></a>kCSI_StartOfFrameInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>Start of frame (SOF) interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3ea426a30446ecdcd5a8ef11d7114587afc"></a>kCSI_EccErrorInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>ECC error detection interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3eae5a566edbf0dbd027cbd20bc6649fb00"></a>kCSI_AhbResErrorInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>AHB response Error interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3ea485b9acd1e879204a29e1351eef0f34b"></a>kCSI_BaseAddrChangeErrorInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>The DMA output buffer base address changes before DMA completed. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3ea53b2171811b48986f94d99640bc293e6"></a>kCSI_Field0DoneInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>Field 0 done interrupt enable. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga445b9c8db2ffe230018ced411b88cc3ea51b6eae094b905ec5c42f09330ab0cc2"></a>kCSI_Field1DoneInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>Field 1 done interrupt enable. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gac962030ce8597d68455e55874a51721f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00017.html#gac962030ce8597d68455e55874a51721f">_csi_flags</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>The following status register flags can be cleared:</p>
<ul>
<li>kCSI_EccErrorFlag</li>
<li>kCSI_AhbResErrorFlag</li>
<li>kCSI_ChangeOfFieldFlag</li>
<li>kCSI_StartOfFrameFlag</li>
<li>kCSI_EndOfFrameFlag</li>
<li>kCSI_RxBuffer1DmaDoneFlag</li>
<li>kCSI_RxBuffer0DmaDoneFlag</li>
<li>kCSI_StatFifoDmaDoneFlag</li>
<li>kCSI_StatFifoOverrunFlag</li>
<li>kCSI_RxFifoOverrunFlag</li>
<li>kCSI_Field0DoneFlag</li>
<li>kCSI_Field1DoneFlag</li>
<li>kCSI_BaseAddrChangeErrorFlag </li>
</ul>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa32acc9a0622596c7f830e6d70568931c"></a>kCSI_RxFifoDataReadyFlag</em>&nbsp;</td><td class="fielddoc">
<p>RXFIFO data ready. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa3e02610408a6ebfe221869a1923009ba"></a>kCSI_EccErrorFlag</em>&nbsp;</td><td class="fielddoc">
<p>ECC error detected. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa984df7af7f9825fb4659d11f42463f44"></a>kCSI_AhbResErrorFlag</em>&nbsp;</td><td class="fielddoc">
<p>Hresponse (AHB bus response) Error. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fabe92f518f5c2f0ccbe55ebdcf4c29e89"></a>kCSI_ChangeOfFieldFlag</em>&nbsp;</td><td class="fielddoc">
<p>Change of field. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fab337940c172c17058f8cde8bb676378f"></a>kCSI_Field0PresentFlag</em>&nbsp;</td><td class="fielddoc">
<p>Field 0 present in CCIR mode. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa157a47bde1ba661fdf22ca2ae61b3c0b"></a>kCSI_Field1PresentFlag</em>&nbsp;</td><td class="fielddoc">
<p>Field 1 present in CCIR mode. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa064c85b25c414abdeb86d501eb57360c"></a>kCSI_StartOfFrameFlag</em>&nbsp;</td><td class="fielddoc">
<p>Start of frame (SOF) detected. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fac6409ca23ef24a10e22fb9582213f2bc"></a>kCSI_EndOfFrameFlag</em>&nbsp;</td><td class="fielddoc">
<p>End of frame (EOF) detected. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fabdd835d96491b90bf5ae39dc5e4b0497"></a>kCSI_RxFifoFullFlag</em>&nbsp;</td><td class="fielddoc">
<p>RXFIFO full (Number of data reaches trigger level). </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa27f18871d1b522ca628722a3fb80b89d"></a>kCSI_RxBuffer1DmaDoneFlag</em>&nbsp;</td><td class="fielddoc">
<p>RX frame buffer 1 DMA transfer done. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa3168d94660e46e761c0639a1a20b74ee"></a>kCSI_RxBuffer0DmaDoneFlag</em>&nbsp;</td><td class="fielddoc">
<p>RX frame buffer 0 DMA transfer done. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa920018020044eb07e3ffed1f423208a5"></a>kCSI_StatFifoFullFlag</em>&nbsp;</td><td class="fielddoc">
<p>STAT FIFO full (Reach trigger level). </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa961784728b693f7741adb7b17ebe425b"></a>kCSI_StatFifoDmaDoneFlag</em>&nbsp;</td><td class="fielddoc">
<p>STAT FIFO DMA transfer done. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa0350ec81b55a8180eaffcd8b1f537cdf"></a>kCSI_StatFifoOverrunFlag</em>&nbsp;</td><td class="fielddoc">
<p>STAT FIFO overrun. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fab01731bc864c9b47644a6de2bc2f88d5"></a>kCSI_RxFifoOverrunFlag</em>&nbsp;</td><td class="fielddoc">
<p>RXFIFO overrun. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa2676d308e2677cc91f47ae0661355d10"></a>kCSI_Field0DoneFlag</em>&nbsp;</td><td class="fielddoc">
<p>Field 0 transfer done. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa6e7f6d415b0e9848c2f33f25ea9c0036"></a>kCSI_Field1DoneFlag</em>&nbsp;</td><td class="fielddoc">
<p>Field 1 transfer done. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac962030ce8597d68455e55874a51721fa254be4a91697e3bf3146a663454c2e60"></a>kCSI_BaseAddrChangeErrorFlag</em>&nbsp;</td><td class="fielddoc">
<p>The DMA output buffer base address changes before DMA completed. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga6ab1581b894e0addd36e259454d894fb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> CSI_Init </td>
<td>(</td>
<td class="paramtype">CSI_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="a00017.html#ga7d2e9074e11fec0878ae4199b708eb31">csi_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function enables the CSI peripheral clock, and resets the CSI registers.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">config</td><td>Pointer to the configuration 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>Initialize successfully. </td></tr>
<tr><td class="paramname">kStatus_InvalidArgument</td><td>Initialize failed because of invalid argument. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga29130aa6333127427e9945203a941c31"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CSI_Deinit </td>
<td>(</td>
<td class="paramtype">CSI_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 CSI peripheral clock.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaaf0c3b036356a13b113c190762035317"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CSI_Reset </td>
<td>(</td>
<td class="paramtype">CSI_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function resets the CSI peripheral registers to default status.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga44bd4343d5866367abc152651f3d8a03"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CSI_GetDefaultConfig </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00017.html#ga7d2e9074e11fec0878ae4199b708eb31">csi_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The default configuration value is:</p>
<div class="fragment"><div class="line">config-&gt;width = 320U;</div>
<div class="line">config-&gt;height = 240U;</div>
<div class="line">config-&gt;polarityFlags = <a class="code" href="a00017.html#ggafda41057e6d13039ca0d139b89abde64aab952a4e21500ee629a8bd16ece03b3f">kCSI_HsyncActiveHigh</a> | <a class="code" href="a00017.html#ggafda41057e6d13039ca0d139b89abde64aa98b2058628ba0d2bff537f81df0bfc9">kCSI_DataLatchOnRisingEdge</a>;</div>
<div class="line">config-&gt;bytesPerPixel = 2U;</div>
<div class="line">config-&gt;linePitch_Bytes = 320U * 2U;</div>
<div class="line">config-&gt;workMode = <a class="code" href="a00017.html#gga612584939135a10bf4b198e805785762ab707b88b2c5b3ca70afe6b78f2988571">kCSI_GatedClockMode</a>;</div>
<div class="line">config-&gt;dataBus = <a class="code" href="a00017.html#gga230259b1b2d94e1c0049171840fbb049ae6e9f2234f6b659241d9d504457e04dd">kCSI_DataBus8Bit</a>;</div>
<div class="line">config-&gt;useExtVsync = <span class="keyword">true</span>;</div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Pointer to the CSI configuration. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa9a972883f2e04aefb94bac426fa9c72"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CSI_ClearFifo </td>
<td>(</td>
<td class="paramtype">CSI_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="a00017.html#ga3ed868a78c932aa1904d48c0d65cf650">csi_fifo_t</a>&#160;</td>
<td class="paramname"><em>fifo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function clears the CSI FIFO.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">fifo</td><td>The FIFO to clear. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gabd61e583724350ad66feacf6cb55e86c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CSI_ReflashFifoDma </td>
<td>(</td>
<td class="paramtype">CSI_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="a00017.html#ga3ed868a78c932aa1904d48c0d65cf650">csi_fifo_t</a>&#160;</td>
<td class="paramname"><em>fifo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function reflashes the CSI FIFO DMA.</p>
<p>For RXFIFO, there are two frame buffers. When the CSI module started, it saves the frames to frame buffer 0 then frame buffer 1, the two buffers will be written by turns. After reflash DMA using this function, the CSI is reset to save frame to buffer 0.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">fifo</td><td>The FIFO DMA to reflash. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga266530ad9e8aa0e0e4977317b5cd9899"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CSI_EnableFifoDmaRequest </td>
<td>(</td>
<td class="paramtype">CSI_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="a00017.html#ga3ed868a78c932aa1904d48c0d65cf650">csi_fifo_t</a>&#160;</td>
<td class="paramname"><em>fifo</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>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">fifo</td><td>The FIFO DMA reques to enable or disable. </td></tr>
<tr><td class="paramname">enable</td><td>True to enable, false to disable. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gace757ddd954a29a1a11c0bdc119b17ad"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void CSI_Start </td>
<td>(</td>
<td class="paramtype">CSI_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>CSI peripheral base address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga49731f4255e64f48eb0f26628296c13e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void CSI_Stop </td>
<td>(</td>
<td class="paramtype">CSI_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>CSI peripheral base address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga17f23deb7d61ad8d88b10165e512d50d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CSI_SetRxBufferAddr </td>
<td>(</td>
<td class="paramtype">CSI_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>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>addr</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>CSI peripheral base address. </td></tr>
<tr><td class="paramname">index</td><td>Buffer index. </td></tr>
<tr><td class="paramname">addr</td><td>Frame buffer address to set. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga433cf3d4d36b2d602b2e41b415abd85f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CSI_EnableInterrupts </td>
<td>(</td>
<td class="paramtype">CSI_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>mask</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>CSI peripheral base address. </td></tr>
<tr><td class="paramname">mask</td><td>The interrupts to enable, pass in as OR'ed value of <a class="el" href="a00017.html#ga445b9c8db2ffe230018ced411b88cc3e">_csi_interrupt_enable</a>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaaef95a89e63407cdb28b9dbf81ce4fe5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CSI_DisableInterrupts </td>
<td>(</td>
<td class="paramtype">CSI_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>mask</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>CSI peripheral base address. </td></tr>
<tr><td class="paramname">mask</td><td>The interrupts to disable, pass in as OR'ed value of <a class="el" href="a00017.html#ga445b9c8db2ffe230018ced411b88cc3e">_csi_interrupt_enable</a>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac756a072ac5afdb9567632d02d13e73f"></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 CSI_GetStatusFlags </td>
<td>(</td>
<td class="paramtype">CSI_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>CSI peripheral base address. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status flag, it is OR'ed value of <a class="el" href="a00017.html#gac962030ce8597d68455e55874a51721f">_csi_flags</a>. </dd></dl>
</div>
</div>
<a class="anchor" id="ga9368862568891bbdb29b0a6287801506"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void CSI_ClearStatusFlags </td>
<td>(</td>
<td class="paramtype">CSI_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>The flags to clear are passed in as OR'ed value of <a class="el" href="a00017.html#gac962030ce8597d68455e55874a51721f">_csi_flags</a>. The following flags are cleared automatically by hardware:</p>
<ul>
<li><a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fabdd835d96491b90bf5ae39dc5e4b0497">kCSI_RxFifoFullFlag</a>,</li>
<li><a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa920018020044eb07e3ffed1f423208a5">kCSI_StatFifoFullFlag</a>,</li>
<li><a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fab337940c172c17058f8cde8bb676378f">kCSI_Field0PresentFlag</a>,</li>
<li><a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa157a47bde1ba661fdf22ca2ae61b3c0b">kCSI_Field1PresentFlag</a>,</li>
<li><a class="el" href="a00017.html#ggac962030ce8597d68455e55874a51721fa32acc9a0622596c7f830e6d70568931c">kCSI_RxFifoDataReadyFlag</a>,</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">statusMask</td><td>The status flags mask, OR'ed value of <a class="el" href="a00017.html#gac962030ce8597d68455e55874a51721f">_csi_flags</a>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaff15e4c1cd458f686e4f296ce3d417d5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> CSI_TransferCreateHandle </td>
<td>(</td>
<td class="paramtype">CSI_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="a00017.html#a00336">csi_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="a00017.html#ga68a7e9c86a91b7ffb6547cf762ef6f3f">csi_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>This function initializes CSI handle, it should be called before any other CSI transactional functions.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to the handle structure. </td></tr>
<tr><td class="paramname">callback</td><td>Callback function for CSI transfer. </td></tr>
<tr><td class="paramname">userData</td><td>Callback function parameter.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Handle created successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga65a17c86c64297a09857e435588a65d6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> CSI_TransferStart </td>
<td>(</td>
<td class="paramtype">CSI_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="a00017.html#a00336">csi_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">
<p>When the empty frame buffers have been submit to CSI driver using function <a class="el" href="a00017.html#ga807a6677a22856cf8ad1e37253b14d44">CSI_TransferSubmitEmptyBuffer</a>, user could call this function to start the transfer. The incoming frame will be saved to the empty frame buffer, and user could be optionally notified through callback function.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to the handle 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>Started successfully. </td></tr>
<tr><td class="paramname">kStatus_CSI_NoEmptyBuffer</td><td>Could not start because no empty frame buffer in queue. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac20498234465760225985287ff862751"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> CSI_TransferStop </td>
<td>(</td>
<td class="paramtype">CSI_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="a00017.html#a00336">csi_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">
<p>The driver does not clean the full frame buffers in queue. In other words, after calling this function, user still could get the full frame buffers in queue using function <a class="el" href="a00017.html#ga36f7bf646f55c098fb12d6fa387d6424">CSI_TransferGetFullBuffer</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to the handle 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>Stoped successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga807a6677a22856cf8ad1e37253b14d44"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> CSI_TransferSubmitEmptyBuffer </td>
<td>(</td>
<td class="paramtype">CSI_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="a00017.html#a00336">csi_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>frameBuffer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function could be called before <a class="el" href="a00017.html#ga65a17c86c64297a09857e435588a65d6">CSI_TransferStart</a> or after <a class="el" href="a00017.html#ga65a17c86c64297a09857e435588a65d6">CSI_TransferStart</a>. If there is no room in queue to store the empty frame buffer, this function returns error.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to the handle structure. </td></tr>
<tr><td class="paramname">frameBuffer</td><td>Empty frame buffer to submit.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Started successfully. </td></tr>
<tr><td class="paramname">kStatus_CSI_QueueFull</td><td>Could not submit because there is no room in queue. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga36f7bf646f55c098fb12d6fa387d6424"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00272.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> CSI_TransferGetFullBuffer </td>
<td>(</td>
<td class="paramtype">CSI_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="a00017.html#a00336">csi_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>frameBuffer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>After the transfer started using function <a class="el" href="a00017.html#ga65a17c86c64297a09857e435588a65d6">CSI_TransferStart</a>, the incoming frames will be saved to the empty frame buffers in queue. This function gets the full-filled frame buffer from the queue. If there is no full frame buffer in queue, this function returns error.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to the handle structure. </td></tr>
<tr><td class="paramname">frameBuffer</td><td>Full frame buffer.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Started successfully. </td></tr>
<tr><td class="paramname">kStatus_CSI_NoFullBuffer</td><td>There is no full frame buffer in queue. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa8118210b401dacd2257dbb75c6a6310"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CSI_TransferHandleIRQ </td>
<td>(</td>
<td class="paramtype">CSI_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="a00017.html#a00336">csi_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">
<p>This function handles the CSI IRQ request to work with CSI driver transactional APIs.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>CSI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>CSI handle pointer. </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>