📄 usart_8c.html.svn-base
字号:
<a name="l00271"></a>00271 usart->ifr = irda_filter;<a name="l00272"></a>00272 <a name="l00273"></a>00273 <span class="comment">/* Activate "low-pass filtering" of input */</span><a name="l00274"></a>00274 usart->mr |= (1 << AVR32_USART_MR_FILTER_OFFSET);<a name="l00275"></a>00275 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00276"></a>00276 }</pre></div><p><p>Here is the call graph for this function:<p><center><img src="usart_8c_8db29da20412777c74c322d0fae89ecb_cgraph.png" border="0" usemap="#usart_8c_8db29da20412777c74c322d0fae89ecb_cgraph_map" alt=""></center><map name="usart_8c_8db29da20412777c74c322d0fae89ecb_cgraph_map"><area href="testsuite_2bravo__validation_2usart_2usart_8c.html#093c5ad113e1ab43603c0d815ad8dc54" shape="rect" coords="167,8,285,32" alt=""></map> </td> </tr></table><a class="anchor" name="8e201d6c020402a4b2864d67ae8f4935"></a><!-- doxytag: member="usart.c::usart_init_iso7816" ref="8e201d6c020402a4b2864d67ae8f4935" args="(volatile struct avr32_usart_t *usart, const struct iso7816_options_t *opt, int t, const long cpu_hz)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">int usart_init_iso7816 </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">volatile struct avr32_usart_t * </td> <td class="mdname" nowrap> <em>usart</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const struct <a class="el" href="structiso7816__options__t.html">iso7816_options_t</a> * </td> <td class="mdname" nowrap> <em>opt</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>t</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const long </td> <td class="mdname" nowrap> <em>cpu_hz</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><p>Definition at line <a class="el" href="usart_8c-source.html#l00333">333</a> of file <a class="el" href="usart_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="l00334"></a>00334 {<a name="l00335"></a>00335 <span class="keywordtype">int</span> retval;<a name="l00336"></a>00336 <a name="l00337"></a>00337 <span class="comment">/* Reset the usart and shutdown RX and TX */</span><a name="l00338"></a>00338 <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#31cf4d67fd204fb4684fff9d7994cb4c">usart_reset</a>(usart);<a name="l00339"></a>00339 <a name="l00340"></a>00340 <span class="keywordflow">if</span> (opt == 0)<a name="l00341"></a>00341 <span class="comment">/* Null pointer */</span><a name="l00342"></a>00342 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00343"></a>00343 <a name="l00344"></a>00344 <span class="comment">/* Don't care about charlength, parity or channelmode; All these fields</span><a name="l00345"></a>00345 <span class="comment"> are ignored in iso7816 mode. 8bit characters and even parity is always</span><a name="l00346"></a>00346 <span class="comment"> used */</span><a name="l00347"></a>00347 <a name="l00348"></a>00348 <span class="keywordflow">if</span> (t == 0)<a name="l00349"></a>00349 {<a name="l00350"></a>00350 <span class="comment">/* Set USART mode to ISO7816, T=0 */</span><a name="l00351"></a>00351 <span class="comment">/* The T=0 protocol always use 2 stop bits */</span><a name="l00352"></a>00352 usart->mr = (<a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#af44f2a4560d84b228624189aad26d5e">USART_MODE_ISO7816_T0</a> << AVR32_USART_MR_USART_MODE_OFFSET) |<a name="l00353"></a>00353 (2 << AVR32_USART_MR_NBSTOP_OFFSET) |<a name="l00354"></a>00354 (opt-><a class="code" href="structiso7816__options__t.html#96af893cd6275fd35a063a235f489a82">bit_order</a> << AVR32_USART_MR_MSBF_OFFSET); <span class="comment">/* Allow MSBF in T=0 */</span><a name="l00355"></a>00355 }<a name="l00356"></a>00356 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t == 1)<a name="l00357"></a>00357 {<a name="l00358"></a>00358 <span class="comment">/* Only LSB first in the T=1 protocol */</span><a name="l00359"></a>00359 <span class="keywordflow">if</span> (opt-><a class="code" href="structiso7816__options__t.html#96af893cd6275fd35a063a235f489a82">bit_order</a> != 0)<a name="l00360"></a>00360 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00361"></a>00361 <span class="comment">/* max_iterations field is only used in T=0 mode */</span><a name="l00362"></a>00362 <span class="keywordflow">if</span> (opt-><a class="code" href="structiso7816__options__t.html#4c74df529ed76d2962f54cd1f0f5027f">max_iterations</a> != 0)<a name="l00363"></a>00363 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00364"></a>00364 <span class="comment">/* Set USART mode to ISO7816, T=1 */</span><a name="l00365"></a>00365 usart->mr = (<a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#20cc4cd0b851232cd6b3680713792a44">USART_MODE_ISO7816_T1</a> << AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00366"></a>00366 <span class="comment">/* The T=1 protocol always use 1 stop bit (no change needed) */</span><a name="l00367"></a>00367 }<a name="l00368"></a>00368 <span class="keywordflow">else</span><a name="l00369"></a>00369 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00370"></a>00370 <a name="l00371"></a>00371 <span class="keywordflow">if</span> ((retval = <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#38c10272f6d0b8e873a213dd39d5d1cf">usart_set_baudrate</a>(usart, opt-><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="l00372"></a>00372 <span class="keywordflow">return</span> retval;<a name="l00373"></a>00373 <a name="l00374"></a>00374 <span class="comment">/* Set FIDI register: bit rate = selected clock/FI_DI_ratio/16 */</span><a name="l00375"></a>00375 usart->fidi = opt-><a class="code" href="structiso7816__options__t.html#bf0d2900a6f8f97c0163176f2600551c">fidi_ratio</a>;<a name="l00376"></a>00376 <span class="comment">/* Set ISO7816 spesific options in the MODE register */</span><a name="l00377"></a>00377 usart->mr |= (opt-><a class="code" href="structiso7816__options__t.html#128f4d404bb0369177a591eb8a0a9269">inhibit_nack</a> << AVR32_USART_MR_INACK_OFFSET) |<a name="l00378"></a>00378 (opt-><a class="code" href="structiso7816__options__t.html#b8d335e18629f4fcf625e1a7e23e35be">dis_suc_nack</a> << AVR32_USART_MR_DSNACK_OFFSET) |<a name="l00379"></a>00379 (opt-><a class="code" href="structiso7816__options__t.html#4c74df529ed76d2962f54cd1f0f5027f">max_iterations</a> << AVR32_USART_MR_MAX_ITERATION_OFFSET) |<a name="l00380"></a>00380 (1 << AVR32_USART_MR_CLKO_OFFSET); <span class="comment">/* Enable clock output */</span><a name="l00381"></a>00381 <a name="l00382"></a>00382 <span class="comment">/* Setup complete; enable input */</span><a name="l00383"></a>00383 <span class="comment">/* Leave TX disabled for now */</span><a name="l00384"></a>00384 usart->cr |= (1<<AVR32_USART_CR_RXEN_OFFSET);<a name="l00385"></a>00385 <a name="l00386"></a>00386 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00387"></a>00387 }</pre></div><p><p>Here is the call graph for this function:<p><center><img src="usart_8c_8e201d6c020402a4b2864d67ae8f4935_cgraph.png" border="0" usemap="#usart_8c_8e201d6c020402a4b2864d67ae8f4935_cgraph_map" alt=""></center><map name="usart_8c_8e201d6c020402a4b2864d67ae8f4935_cgraph_map"><area href="testsuite_2bravo__validation_2pdc_2usart_8c.html#31cf4d67fd204fb4684fff9d7994cb4c" shape="rect" coords="211,8,299,32" alt=""><area href="testsuite_2bravo__validation_2pdc_2usart_8c.html#38c10272f6d0b8e873a213dd39d5d1cf" shape="rect" coords="187,56,323,80" alt=""></map> </td> </tr></table><a class="anchor" name="10edfa287366908edc4182421d00008b"></a><!-- doxytag: member="usart.c::usart_init_modem" ref="10edfa287366908edc4182421d00008b" args="(volatile struct avr32_usart_t *usart, struct usart_options_t *opt, long cpu_hz)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">int usart_init_modem </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">volatile struct avr32_usart_t * </td> <td class="mdname" nowrap> <em>usart</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>struct <a class="el" href="structusart__options__t.html">usart_options_t</a> * </td> <td class="mdname" nowrap> <em>opt</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>long </td> <td class="mdname" nowrap> <em>cpu_hz</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><p>Definition at line <a class="el" href="usart_8c-source.html#l00285">285</a> of file <a class="el" href="usart_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="l00286"></a>00286 {<a name="l00287"></a>00287 <span class="keywordtype">int</span> retval;<a name="l00288"></a>00288 <a name="l00289"></a>00289 <span class="comment">/* First: Setup standard RS323 */</span><a name="l00290"></a>00290 <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="l00291"></a>00291 <span class="keywordflow">return</span> retval;<a name="l00292"></a>00292 <a name="l00293"></a>00293 <span class="comment">/* Clear previous mode */</span><a name="l00294"></a>00294 usart-> mr &= ~(0xf << AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00295"></a>00295 <span class="comment">/* Set Modem mode */</span><a name="l00296"></a>00296 usart-> mr |= (<a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#e01dfbdf6f2d1c148b0320e19f8fa98e">USART_MODE_MODEM</a> << AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00297"></a>00297 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00298"></a>00298 }</pre></div><p><p>Here is the call graph for this function:<p><center><img src="usart_8c_10edfa287366908edc4182421d00008b_cgraph.png" border="0" usemap="#usart_8c_10edfa287366908edc4182421d00008b_cgraph_map" alt=""></center><map name="usart_8c_10edfa287366908edc4182421d00008b_cgraph_map"><area href="testsuite_2bravo__validation_2usart_2usart_8c.html#093c5ad113e1ab43603c0d815ad8dc54" shape="rect" coords="183,8,301,32" alt=""></map> </td> </tr></table><a class="anchor" name="48c8d76fc9fdde84b94a6e09184a6446"></a><!-- doxytag: member="usart.c::usart_init_rs232" ref="48c8d76fc9fdde84b94a6e09184a6446" args="(volatile struct avr32_usart_t *usart, struct usart_options_t *opt, long cpu_hz)" --><p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -