blob: a4d75a0626776330552647f335436b89bacc98ef [file] [log] [blame]
<!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"/>
<title>CMSIS DSP Software Library: Vector Inverse Clarke Transform</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.7.2 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
<div class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="examples.html"><span>Examples</span></a></li>
<li id="searchli">
<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>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<h1>Vector Inverse Clarke Transform<br/>
<small>
[<a class="el" href="group__group_controller.html">Controller Functions</a>]</small>
</h1> </div>
</div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static __INLINE void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__inv__clarke.html#ga137f0396d837477b899ecae89f075a50">arm_inv_clarke_f32</a> (<a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> Ialpha, <a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> Ibeta, <a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> *pIa, <a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> *pIb)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static __INLINE void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__inv__clarke.html#ga2d0c60f114f095a2f27442d98781ba02">arm_inv_clarke_q31</a> (<a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> Ialpha, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> Ibeta, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> *pIa, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> *pIb)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases.</p>
<p>The function operates on a single sample of data and each call to the function returns the processed output. The library provides separate functions for Q31 and floating-point data types. </p>
<dl class="user"><dt><b>Algorithm</b></dt><dd><div align="center">
<img src="clarkeInvFormula.gif" alt="clarkeInvFormula.gif"/>
</div>
where <code>pIa</code> and <code>pIb</code> are the instantaneous stator phases and <code>Ialpha</code> and <code>Ibeta</code> are the two coordinates of time invariant vector. </dd></dl>
<dl class="user"><dt><b>Fixed-Point Behavior</b></dt><dd>Care must be taken when using the Q31 version of the Clarke transform. In particular, the overflow and saturation behavior of the accumulator used must be considered. Refer to the function specific documentation below for usage guidelines. </dd></dl>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga137f0396d837477b899ecae89f075a50"></a><!-- doxytag: member="arm_math.h::arm_inv_clarke_f32" ref="ga137f0396d837477b899ecae89f075a50" args="(float32_t Ialpha, float32_t Ibeta, float32_t *pIa, float32_t *pIb)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static __INLINE void arm_inv_clarke_f32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a>&#160;</td>
<td class="paramname"> <em>Ialpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a>&#160;</td>
<td class="paramname"> <em>Ibeta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> *&#160;</td>
<td class="paramname"> <em>pIa</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> *&#160;</td>
<td class="paramname"> <em>pIb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Floating-point Inverse Clarke transform. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">Ialpha</td><td>input two-phase orthogonal vector axis alpha </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">Ibeta</td><td>input two-phase orthogonal vector axis beta </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">*pIa</td><td>points to output three-phase coordinate <code>a</code> </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">*pIb</td><td>points to output three-phase coordinate <code>b</code> </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>none. </dd></dl>
<p>Definition at line <a class="el" href="arm__math_8h_source.html#l05009">5009</a> of file <a class="el" href="arm__math_8h_source.html">arm_math.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga2d0c60f114f095a2f27442d98781ba02"></a><!-- doxytag: member="arm_math.h::arm_inv_clarke_q31" ref="ga2d0c60f114f095a2f27442d98781ba02" args="(q31_t Ialpha, q31_t Ibeta, q31_t *pIa, q31_t *pIb)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static __INLINE void arm_inv_clarke_q31 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a>&#160;</td>
<td class="paramname"> <em>Ialpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a>&#160;</td>
<td class="paramname"> <em>Ibeta</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> *&#160;</td>
<td class="paramname"> <em>pIa</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> *&#160;</td>
<td class="paramname"> <em>pIb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Inverse Clarke transform for Q31 version. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">Ialpha</td><td>input two-phase orthogonal vector axis alpha </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">Ibeta</td><td>input two-phase orthogonal vector axis beta </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">*pIa</td><td>points to output three-phase coordinate <code>a</code> </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">*pIb</td><td>points to output three-phase coordinate <code>b</code> </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>none.</dd></dl>
<p><b>Scaling and Overflow Behavior:</b> </p>
<dl class="user"><dt><b></b></dt><dd>The function is implemented using an internal 32-bit accumulator. The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. There is saturation on the subtraction, hence there is no risk of overflow. </dd></dl>
<p>Definition at line <a class="el" href="arm__math_8h_source.html#l05038">5038</a> of file <a class="el" href="arm__math_8h_source.html">arm_math.h</a>.</p>
</div>
</div>
</div>
<!--- 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>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Defines</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Fri Jul 15 2011 13:16:22 for CMSIS DSP Software Library by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.2 </small></address>
</body>
</html>