⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testsuite_2bravo__validation_2usart_2usart_8c.html

📁 avr32100.zip Embedded demo
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<p><p>Definition at line <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00280">280</a> of file <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00085">iso7816_options_t::bit_order</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00073">iso7816_options_t::dis_suc_nack</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00056">iso7816_options_t::fidi_ratio</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00065">iso7816_options_t::inhibit_nack</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00050">iso7816_options_t::iso7816_hz</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00078">iso7816_options_t::max_iterations</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00194">USART_INVALID_INPUT</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00072">USART_MODE_ISO7816_T0</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00074">USART_MODE_ISO7816_T1</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00027">usart_reset()</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00065">usart_set_baudrate()</a>, and <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00189">USART_SUCCESS</a>.<div class="fragment"><pre class="fragment"><a name="l00281"></a>00281 {<a name="l00282"></a>00282         <span class="keywordtype">int</span> retval;<a name="l00283"></a>00283 <a name="l00284"></a>00284         <span class="comment">/* Reset the usart and shutdown RX and TX */</span><a name="l00285"></a>00285         <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#31cf4d67fd204fb4684fff9d7994cb4c">usart_reset</a>(usart);<a name="l00286"></a>00286 <a name="l00287"></a>00287         <span class="keywordflow">if</span> (opt == 0)<a name="l00288"></a>00288                 <span class="comment">/* Null pointer */</span><a name="l00289"></a>00289                 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00290"></a>00290 <a name="l00291"></a>00291         <span class="comment">/* Don't care about charlength, parity or channelmode; All these fields</span><a name="l00292"></a>00292 <span class="comment">           are ignored in iso7816 mode. 8bit characters and even parity is always</span><a name="l00293"></a>00293 <span class="comment">           used */</span><a name="l00294"></a>00294 <a name="l00295"></a>00295         <span class="keywordflow">if</span> (t == 0)<a name="l00296"></a>00296         {<a name="l00297"></a>00297                 <span class="comment">/* Set USART mode to ISO7816, T=0 */</span><a name="l00298"></a>00298                 <span class="comment">/* The T=0 protocol always use 2 stop bits */</span><a name="l00299"></a>00299                 usart-&gt;mr = (<a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#af44f2a4560d84b228624189aad26d5e">USART_MODE_ISO7816_T0</a> &lt;&lt; AVR32_USART_MR_USART_MODE_OFFSET) |<a name="l00300"></a>00300                             (2 &lt;&lt; AVR32_USART_MR_NBSTOP_OFFSET) |<a name="l00301"></a>00301                             (opt-&gt;<a class="code" href="structiso7816__options__t.html#96af893cd6275fd35a063a235f489a82">bit_order</a> &lt;&lt; AVR32_USART_MR_MSBF_OFFSET); <span class="comment">/* Allow MSBF in T=0 */</span><a name="l00302"></a>00302         }<a name="l00303"></a>00303         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t == 1)<a name="l00304"></a>00304         {<a name="l00305"></a>00305                 <span class="comment">/* Only LSB first in the T=1 protocol */</span><a name="l00306"></a>00306                 <span class="keywordflow">if</span> (opt-&gt;<a class="code" href="structiso7816__options__t.html#96af893cd6275fd35a063a235f489a82">bit_order</a> != 0)<a name="l00307"></a>00307                         <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00308"></a>00308                 <span class="comment">/* max_iterations field is only used in T=0 mode */</span><a name="l00309"></a>00309                 <span class="keywordflow">if</span> (opt-&gt;<a class="code" href="structiso7816__options__t.html#4c74df529ed76d2962f54cd1f0f5027f">max_iterations</a> != 0)<a name="l00310"></a>00310                         <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00311"></a>00311                 <span class="comment">/* Set USART mode to ISO7816, T=1 */</span><a name="l00312"></a>00312                 usart-&gt;mr = (<a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#20cc4cd0b851232cd6b3680713792a44">USART_MODE_ISO7816_T1</a> &lt;&lt; AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00313"></a>00313                 <span class="comment">/* The T=1 protocol always use 1 stop bit (no change needed) */</span><a name="l00314"></a>00314         }<a name="l00315"></a>00315         <span class="keywordflow">else</span><a name="l00316"></a>00316                 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00317"></a>00317 <a name="l00318"></a>00318         <span class="keywordflow">if</span> ((retval = <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#38c10272f6d0b8e873a213dd39d5d1cf">usart_set_baudrate</a>(usart, opt-&gt;<a class="code" href="structiso7816__options__t.html#6670bdcae159decd3ff5c00f6f3f4fcc">iso7816_hz</a>, cpu_hz)) != <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>)<a name="l00319"></a>00319                 <span class="keywordflow">return</span> retval;<a name="l00320"></a>00320 <a name="l00321"></a>00321         <span class="comment">/* Set FIDI register: bit rate = selected clock/FI_DI_ratio/16 */</span><a name="l00322"></a>00322         usart-&gt;fidi = opt-&gt;<a class="code" href="structiso7816__options__t.html#bf0d2900a6f8f97c0163176f2600551c">fidi_ratio</a>;<a name="l00323"></a>00323         <span class="comment">/* Set ISO7816 spesific options in the MODE register */</span><a name="l00324"></a>00324         usart-&gt;mr |= (opt-&gt;<a class="code" href="structiso7816__options__t.html#128f4d404bb0369177a591eb8a0a9269">inhibit_nack</a> &lt;&lt; AVR32_USART_MR_INACK_OFFSET) |<a name="l00325"></a>00325                      (opt-&gt;<a class="code" href="structiso7816__options__t.html#b8d335e18629f4fcf625e1a7e23e35be">dis_suc_nack</a> &lt;&lt; AVR32_USART_MR_DSNACK_OFFSET) |<a name="l00326"></a>00326                      (opt-&gt;<a class="code" href="structiso7816__options__t.html#4c74df529ed76d2962f54cd1f0f5027f">max_iterations</a> &lt;&lt; AVR32_USART_MR_MAX_ITERATION_OFFSET) |<a name="l00327"></a>00327                      (1 &lt;&lt; AVR32_USART_MR_CLKO_OFFSET); <span class="comment">/* Enable clock output */</span><a name="l00328"></a>00328 <a name="l00329"></a>00329         <span class="comment">/* Setup complete; enable input */</span><a name="l00330"></a>00330         <span class="comment">/* Leave TX disabled for now */</span><a name="l00331"></a>00331         usart-&gt;cr |= (1&lt;&lt;AVR32_USART_CR_RXEN_OFFSET);<a name="l00332"></a>00332 <a name="l00333"></a>00333         <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00334"></a>00334 }</pre></div><p><p>Here is the call graph for this function:</div></div><p><a class="anchor" name="5788e19292e7392d88925587f565f31b"></a><!-- doxytag: member="usart.c::usart_init_modem" ref="5788e19292e7392d88925587f565f31b" args="(volatile avr32_usart_t *usart, struct usart_options_t *opt, long cpu_hz)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">int usart_init_modem           </td>          <td>(</td>          <td class="paramtype">volatile avr32_usart_t *&nbsp;</td>          <td class="paramname"> <em>usart</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">struct <a class="el" href="structusart__options__t.html">usart_options_t</a> *&nbsp;</td>          <td class="paramname"> <em>opt</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">long&nbsp;</td>          <td class="paramname"> <em>cpu_hz</em></td><td>&nbsp;</td>        </tr>        <tr>          <td></td>          <td>)</td>          <td></td><td></td><td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p><p>Definition at line <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00228">228</a> of file <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00095">usart_init_rs232()</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00070">USART_MODE_MODEM</a>, and <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00189">USART_SUCCESS</a>.<div class="fragment"><pre class="fragment"><a name="l00229"></a>00229 {<a name="l00230"></a>00230         <span class="keywordtype">int</span> retval;<a name="l00231"></a>00231 <a name="l00232"></a>00232         <span class="comment">/* First: Setup standard RS323 */</span><a name="l00233"></a>00233         <span class="keywordflow">if</span> ((retval = <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#093c5ad113e1ab43603c0d815ad8dc54">usart_init_rs232</a>(usart, opt, cpu_hz)) != <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>)<a name="l00234"></a>00234                 <span class="keywordflow">return</span> retval;<a name="l00235"></a>00235 <a name="l00236"></a>00236         <span class="comment">/* Clear previous mode */</span><a name="l00237"></a>00237         usart-&gt; mr &amp;= ~(0xf &lt;&lt; AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00238"></a>00238         <span class="comment">/* Set Modem mode */</span><a name="l00239"></a>00239         usart-&gt; mr |= (<a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#e01dfbdf6f2d1c148b0320e19f8fa98e">USART_MODE_MODEM</a> &lt;&lt; AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00240"></a>00240         <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00241"></a>00241 }</pre></div><p><p>Here is the call graph for this function:</div></div><p><a class="anchor" name="093c5ad113e1ab43603c0d815ad8dc54"></a><!-- doxytag: member="usart.c::usart_init_rs232" ref="093c5ad113e1ab43603c0d815ad8dc54" args="(volatile avr32_usart_t *usart, struct usart_options_t *opt, long cpu_hz)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">int usart_init_rs232           </td>          <td>(</td>          <td class="paramtype">volatile avr32_usart_t *&nbsp;</td>          <td class="paramname"> <em>usart</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">struct <a class="el" href="structusart__options__t.html">usart_options_t</a> *&nbsp;</td>          <td class="paramname"> <em>opt</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">long&nbsp;</td>          <td class="paramname"> <em>cpu_hz</em></td><td>&nbsp;</td>        </tr>        <tr>          <td></td>          <td>)</td>          <td></td><td></td><td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Setup the usart to use the standard RS232 protocol <dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td valign="top"></td><td valign="top"><em>*usart</em>&nbsp;</td><td>Base address of the usart </td></tr>    <tr><td valign="top"></td><td valign="top"><em>*opt</em>&nbsp;</td><td>Options needed to set up RS232 communcation (see <a class="el" href="structusart__options__t.html">usart_options_t</a>) </td></tr>  </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>USART_SUCCESS or USART_INVALID_INPUT </dd></dl><p>Definition at line <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00095">95</a> of file <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html">usart.c</a>.<p>Referenced by <a class="el" href="print__funcs_8c-source.html#l00003">init_dbg_rs232()</a>, <a class="el" href="usart__backup_8c-source.html#l00069">main()</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00163">usart_init_handshaking()</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00204">usart_init_IrDA()</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00228">usart_init_modem()</a>, and <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00253">usart_init_rs485()</a>.<div class="fragment"><pre class="fragment"><a name="l00096"></a>00096 {<a name="l00097"></a>00097         <span class="keywordtype">int</span> retval;<a name="l00098"></a>00098 <a name="l00099"></a>00099         <span class="comment">/* Reset the usart and shutdown RX and TX */</span><a name="l00100"></a>00100         <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#31cf4d67fd204fb4684fff9d7994cb4c">usart_reset</a>(usart);<a name="l00101"></a>00101 <a name="l00102"></a>00102         <span class="comment">/* Control input values */</span><a name="l00103"></a>00103         <span class="keywordflow">if</span> (opt == 0) <span class="comment">/* Null pointer */</span><a name="l00104"></a>00104                 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00105"></a>00105         <span class="keywordflow">if</span> (opt-&gt;<a class="code" href="structusart__options__t.html#a6b77cc05829d2e70ee7f96194c6ce23">charlength</a> &lt; 5 || opt-&gt;<a class="code" href="structusart__options__t.html#a6b77cc05829d2e70ee7f96194c6ce23">charlength</a> &gt; 9)<a name="l00106"></a>00106                 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00107"></a>00107         <span class="keywordflow">if</span> (opt-&gt;<a class="code" href="structusart__options__t.html#85401f7a6f516a5883adc0538dc27f8e">paritytype</a> &gt; 7)<a name="l00108"></a>00108                 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00109"></a>00109         <span class="keywordflow">if</span> (opt-&gt;<a class="code" href="structusart__options__t.html#433a6ede2186d42b4cf19ef4b370cd61">stopbits</a> &gt; 2+255)<a name="l00110"></a>00110                 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00111"></a>00111         <span class="keywordflow">if</span> (opt-&gt;<a class="code" href="structusart__options__t.html#0dc365b8779891743180e9b69116f5ea">channelmode</a> &gt; 3)<a name="l00112"></a>00112                 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00113"></a>00113 <a name="l00114"></a>00114         <span class="keywordflow">if</span> ((retval = <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#38c10272f6d0b8e873a213dd39d5d1cf">usart_set_baudrate</a>(usart, opt-&gt;<a class="code" href="structusart__options__t.html#276ad428776a25b8247762bd2c82b35b">baudrate</a>, cpu_hz)) != \<a name="l00115"></a>00115              <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>)<a name="l00116"></a>00116                 <span class="keywordflow">return</span> retval;<a name="l00117"></a>00117 <a name="l00118"></a>00118         <span class="keywordflow">if</span> (opt-&gt;<a class="code" href="structusart__options__t.html#a6b77cc05829d2e70ee7f96194c6ce23">charlength</a> == 9) {<a name="l00119"></a>00119                 <span class="comment">/* Charlength set to 9 bits; MODE9 dominates CHRL */</span><a name="l00120"></a>00120                 usart-&gt;mr |= (1&lt;&lt;AVR32_USART_MR_MODE9_OFFSET);<a name="l00121"></a>00121         } <span class="keywordflow">else</span> {<a name="l00122"></a>00122                 <span class="comment">/* CHRL gives the charlength( - 5) when USART_MODE9=0 */</span>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -