1 <!-- HTML header for doxygen 1.8.20-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7 <meta name="generator" content="Doxygen 1.9.4"/>
8 <meta name="viewport" content="width=device-width, initial-scale=1"/>
9 <title>Raspberry Pi Pico SDK: hardware_uart</title>
10 <!-- <link href="tabs.css" rel="stylesheet" type="text/css"/> -->
11 <script type="text/javascript" src="jquery.js"></script>
12 <script type="text/javascript" src="dynsections.js"></script>
13 <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtreedata.js"></script>
16 <script type="text/javascript" src="navtree.js"></script>
17 <link href="search/search.css" rel="stylesheet" type="text/css"/>
18 <script type="text/javascript" src="search/searchdata.js"></script>
19 <script type="text/javascript" src="search/search.js"></script>
20 <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
21 <link href="doxygen.css" rel="stylesheet" type="text/css" />
22 <link href="normalise.css" rel="stylesheet" type="text/css"/>
23 <link href="main.css" rel="stylesheet" type="text/css"/>
24 <link href="styles.css" rel="stylesheet" type="text/css"/>
27 <div class="navigation-mobile">
28 <div class="logo--mobile">
29 <a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
31 <div class="navigation-toggle">
32 <span class="line-1"></span>
36 <span class="line-3"></span>
39 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
41 <a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
42 <span style="display: inline-block; margin-top: 10px;">
46 <div class="navigation-footer">
47 <img src="logo-mobile.svg" alt="Raspberry Pi">
48 <a href="https://www.raspberrypi.com/" target="_blank">By Raspberry Pi Ltd</a>
50 <!-- <div class="search">
52 <input type="search" name="search" id="search" placeholder="Search">
53 <input type="submit" value="Search">
56 <!-- Generated by Doxygen 1.9.4 -->
57 <script type="text/javascript">
58 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
59 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
62 <script type="text/javascript" src="menudata.js"></script>
63 <script type="text/javascript" src="menu.js"></script>
64 <script type="text/javascript">
65 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
67 initMenu('',true,false,'search.php','Search');
68 $(document).ready(function() { init_search(); });
72 <div id="main-nav"></div>
74 <div id="side-nav" class="ui-resizable side-nav-resizable">
76 <div id="nav-tree-contents">
77 <div id="nav-sync" class="sync"></div>
80 <div id="splitbar" style="-moz-user-select:none;"
81 class="ui-resizable-handle">
84 <script type="text/javascript">
85 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
86 $(document).ready(function(){initNavTree('group__hardware__uart.html',''); initResizable(); });
89 <div id="doc-content">
90 <!-- window showing the filter options -->
91 <div id="MSearchSelectWindow"
92 onmouseover="return searchBox.OnSearchSelectShow()"
93 onmouseout="return searchBox.OnSearchSelectHide()"
94 onkeydown="return searchBox.OnSearchSelectKey(event)">
97 <!-- iframe showing the search results (closed by default) -->
98 <div id="MSearchResultsWindow">
99 <iframe src="javascript:void(0)" frameborder="0"
100 name="MSearchResults" id="MSearchResults">
105 <div class="summary">
106 <a href="#define-members">Macros</a> |
107 <a href="#enum-members">Enumerations</a> |
108 <a href="#func-members">Functions</a> </div>
109 <div class="headertitle"><div class="title">hardware_uart<div class="ingroups"><a class="el" href="group__hardware.html">Hardware APIs</a></div></div></div>
111 <div class="contents">
113 <p>Hardware UART API.
114 <a href="#details">More...</a></p>
115 <table class="memberdecls">
116 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
117 Macros</h2></td></tr>
118 <tr class="memitem:ga12815b6262573d95c8a749f64cc85284"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga12815b6262573d95c8a749f64cc85284">UART_NUM</a>(uart)</td></tr>
119 <tr class="memdesc:ga12815b6262573d95c8a749f64cc85284"><td class="mdescLeft"> </td><td class="mdescRight">Returns the UART number for a UART instance. <a href="group__hardware__uart.html#ga12815b6262573d95c8a749f64cc85284">More...</a><br /></td></tr>
120 <tr class="separator:ga12815b6262573d95c8a749f64cc85284"><td class="memSeparator" colspan="2"> </td></tr>
121 <tr class="memitem:gadc5c5947dc577aac3d448fdb37647927"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#gadc5c5947dc577aac3d448fdb37647927">UART_INSTANCE</a>(num)</td></tr>
122 <tr class="memdesc:gadc5c5947dc577aac3d448fdb37647927"><td class="mdescLeft"> </td><td class="mdescRight">Returns the UART instance with the given UART number. <a href="group__hardware__uart.html#gadc5c5947dc577aac3d448fdb37647927">More...</a><br /></td></tr>
123 <tr class="separator:gadc5c5947dc577aac3d448fdb37647927"><td class="memSeparator" colspan="2"> </td></tr>
124 <tr class="memitem:ga10472af6afab1cb220b5fbd4aee63a16"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga10472af6afab1cb220b5fbd4aee63a16">UART_DREQ_NUM</a>(uart, is_tx)</td></tr>
125 <tr class="memdesc:ga10472af6afab1cb220b5fbd4aee63a16"><td class="mdescLeft"> </td><td class="mdescRight">Returns the <a class="el" href="group__hardware__dma.html#ga8def0ea481095c94f3a0dd0b4fed999e">dreq_num_t</a> used for pacing DMA transfers to or from this UART instance. If is_tx is true, then it is for transfers to the UART else for transfers from the UART. <a href="group__hardware__uart.html#ga10472af6afab1cb220b5fbd4aee63a16">More...</a><br /></td></tr>
126 <tr class="separator:ga10472af6afab1cb220b5fbd4aee63a16"><td class="memSeparator" colspan="2"> </td></tr>
127 <tr class="memitem:ga8b4f387572a62cc839eb004ce7c02e3f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga8b4f387572a62cc839eb004ce7c02e3f">UART_CLOCK_NUM</a>(uart)</td></tr>
128 <tr class="memdesc:ga8b4f387572a62cc839eb004ce7c02e3f"><td class="mdescLeft"> </td><td class="mdescRight">Returns <a class="el" href="group__hardware__clocks.html#ga824c11c2ae315e0b745f6dd3db936788">clock_num_t</a> of the clock for the given UART instance. <a href="group__hardware__uart.html#ga8b4f387572a62cc839eb004ce7c02e3f">More...</a><br /></td></tr>
129 <tr class="separator:ga8b4f387572a62cc839eb004ce7c02e3f"><td class="memSeparator" colspan="2"> </td></tr>
130 <tr class="memitem:ga7bceb145d3739e3923f64584eff6db59"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga7bceb145d3739e3923f64584eff6db59">UART_FUNCSEL_NUM</a>(uart, gpio)</td></tr>
131 <tr class="memdesc:ga7bceb145d3739e3923f64584eff6db59"><td class="mdescLeft"> </td><td class="mdescRight">Returns <a class="el" href="group__hardware__gpio.html#ga89b8e5e8a9c515260dea8d1fa96e72c9">gpio_function_t</a> needed to select the UART function for the given UART instance on the given GPIO number. <a href="group__hardware__uart.html#ga7bceb145d3739e3923f64584eff6db59">More...</a><br /></td></tr>
132 <tr class="separator:ga7bceb145d3739e3923f64584eff6db59"><td class="memSeparator" colspan="2"> </td></tr>
133 <tr class="memitem:ga8697ddad82a2cd5d889ce819d83783e3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga8697ddad82a2cd5d889ce819d83783e3">UART_IRQ_NUM</a>(uart)</td></tr>
134 <tr class="memdesc:ga8697ddad82a2cd5d889ce819d83783e3"><td class="mdescLeft"> </td><td class="mdescRight">Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for processor interrupts from the given UART instance. <a href="group__hardware__uart.html#ga8697ddad82a2cd5d889ce819d83783e3">More...</a><br /></td></tr>
135 <tr class="separator:ga8697ddad82a2cd5d889ce819d83783e3"><td class="memSeparator" colspan="2"> </td></tr>
136 <tr class="memitem:gaffef755f98d8fcec5f7b5147924fb4f9"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#gaffef755f98d8fcec5f7b5147924fb4f9">UART_RESET_NUM</a>(uart)</td></tr>
137 <tr class="memdesc:gaffef755f98d8fcec5f7b5147924fb4f9"><td class="mdescLeft"> </td><td class="mdescRight">Returns the <a class="el" href="group__hardware__resets.html#ga53804b75cce5eb3090d482b0af2a7ce0">reset_num_t</a> used to reset a given UART instance. <a href="group__hardware__uart.html#gaffef755f98d8fcec5f7b5147924fb4f9">More...</a><br /></td></tr>
138 <tr class="separator:gaffef755f98d8fcec5f7b5147924fb4f9"><td class="memSeparator" colspan="2"> </td></tr>
139 </table><table class="memberdecls">
140 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
141 Enumerations</h2></td></tr>
142 <tr class="memitem:ga6bcc37e31dd40c204b4ac6f6189e8878"><td class="memItemLeft" align="right" valign="top"><a id="ga6bcc37e31dd40c204b4ac6f6189e8878" name="ga6bcc37e31dd40c204b4ac6f6189e8878"></a>enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga6bcc37e31dd40c204b4ac6f6189e8878">uart_parity_t</a> { <b>UART_PARITY_NONE</b>
143 , <b>UART_PARITY_EVEN</b>
144 , <b>UART_PARITY_ODD</b>
146 <tr class="memdesc:ga6bcc37e31dd40c204b4ac6f6189e8878"><td class="mdescLeft"> </td><td class="mdescRight">UART Parity enumeration. <br /></td></tr>
147 <tr class="separator:ga6bcc37e31dd40c204b4ac6f6189e8878"><td class="memSeparator" colspan="2"> </td></tr>
148 </table><table class="memberdecls">
149 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
150 Functions</h2></td></tr>
151 <tr class="memitem:ga064c5c42afff8712a612d7ae50a58484"><td class="memItemLeft" align="right" valign="top">static uint </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga064c5c42afff8712a612d7ae50a58484">uart_get_index</a> (uart_inst_t *uart)</td></tr>
152 <tr class="memdesc:ga064c5c42afff8712a612d7ae50a58484"><td class="mdescLeft"> </td><td class="mdescRight">Convert UART instance to hardware instance number. <a href="group__hardware__uart.html#ga064c5c42afff8712a612d7ae50a58484">More...</a><br /></td></tr>
153 <tr class="separator:ga064c5c42afff8712a612d7ae50a58484"><td class="memSeparator" colspan="2"> </td></tr>
154 <tr class="memitem:gafd9aaeaae78307db7f51aa39f501b972"><td class="memItemLeft" align="right" valign="top">static uart_inst_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#gafd9aaeaae78307db7f51aa39f501b972">uart_get_instance</a> (uint num)</td></tr>
155 <tr class="memdesc:gafd9aaeaae78307db7f51aa39f501b972"><td class="mdescLeft"> </td><td class="mdescRight">Get the UART instance from an instance number. <a href="group__hardware__uart.html#gafd9aaeaae78307db7f51aa39f501b972">More...</a><br /></td></tr>
156 <tr class="separator:gafd9aaeaae78307db7f51aa39f501b972"><td class="memSeparator" colspan="2"> </td></tr>
157 <tr class="memitem:ga460772353a17df99adaf3352115c73d5"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structuart__hw__t.html">uart_hw_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga460772353a17df99adaf3352115c73d5">uart_get_hw</a> (uart_inst_t *uart)</td></tr>
158 <tr class="memdesc:ga460772353a17df99adaf3352115c73d5"><td class="mdescLeft"> </td><td class="mdescRight">Get the real hardware UART instance from a UART instance. <a href="group__hardware__uart.html#ga460772353a17df99adaf3352115c73d5">More...</a><br /></td></tr>
159 <tr class="separator:ga460772353a17df99adaf3352115c73d5"><td class="memSeparator" colspan="2"> </td></tr>
160 <tr class="memitem:ga5a55924eff530aff6db3b15fd872cda4"><td class="memItemLeft" align="right" valign="top">uint </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga5a55924eff530aff6db3b15fd872cda4">uart_init</a> (uart_inst_t *uart, uint baudrate)</td></tr>
161 <tr class="memdesc:ga5a55924eff530aff6db3b15fd872cda4"><td class="mdescLeft"> </td><td class="mdescRight">Initialise a UART. <a href="group__hardware__uart.html#ga5a55924eff530aff6db3b15fd872cda4">More...</a><br /></td></tr>
162 <tr class="separator:ga5a55924eff530aff6db3b15fd872cda4"><td class="memSeparator" colspan="2"> </td></tr>
163 <tr class="memitem:ga85b12f7d19f5087b22f26473039d2c4f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga85b12f7d19f5087b22f26473039d2c4f">uart_deinit</a> (uart_inst_t *uart)</td></tr>
164 <tr class="memdesc:ga85b12f7d19f5087b22f26473039d2c4f"><td class="mdescLeft"> </td><td class="mdescRight">DeInitialise a UART. <a href="group__hardware__uart.html#ga85b12f7d19f5087b22f26473039d2c4f">More...</a><br /></td></tr>
165 <tr class="separator:ga85b12f7d19f5087b22f26473039d2c4f"><td class="memSeparator" colspan="2"> </td></tr>
166 <tr class="memitem:gab7f2ad3380a44597d8dda42b2d2ddef9"><td class="memItemLeft" align="right" valign="top">uint </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#gab7f2ad3380a44597d8dda42b2d2ddef9">uart_set_baudrate</a> (uart_inst_t *uart, uint baudrate)</td></tr>
167 <tr class="memdesc:gab7f2ad3380a44597d8dda42b2d2ddef9"><td class="mdescLeft"> </td><td class="mdescRight">Set UART baud rate. <a href="group__hardware__uart.html#gab7f2ad3380a44597d8dda42b2d2ddef9">More...</a><br /></td></tr>
168 <tr class="separator:gab7f2ad3380a44597d8dda42b2d2ddef9"><td class="memSeparator" colspan="2"> </td></tr>
169 <tr class="memitem:ga54a9e298ebec96510e324bbab01247c7"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga54a9e298ebec96510e324bbab01247c7">uart_set_hw_flow</a> (uart_inst_t *uart, bool cts, bool rts)</td></tr>
170 <tr class="memdesc:ga54a9e298ebec96510e324bbab01247c7"><td class="mdescLeft"> </td><td class="mdescRight">Set UART flow control CTS/RTS. <a href="group__hardware__uart.html#ga54a9e298ebec96510e324bbab01247c7">More...</a><br /></td></tr>
171 <tr class="separator:ga54a9e298ebec96510e324bbab01247c7"><td class="memSeparator" colspan="2"> </td></tr>
172 <tr class="memitem:ga07e3c6ce7c1abf5e875b62964b8f841e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga07e3c6ce7c1abf5e875b62964b8f841e">uart_set_format</a> (uart_inst_t *uart, uint data_bits, uint stop_bits, <a class="el" href="group__hardware__uart.html#ga6bcc37e31dd40c204b4ac6f6189e8878">uart_parity_t</a> parity)</td></tr>
173 <tr class="memdesc:ga07e3c6ce7c1abf5e875b62964b8f841e"><td class="mdescLeft"> </td><td class="mdescRight">Set UART data format. <a href="group__hardware__uart.html#ga07e3c6ce7c1abf5e875b62964b8f841e">More...</a><br /></td></tr>
174 <tr class="separator:ga07e3c6ce7c1abf5e875b62964b8f841e"><td class="memSeparator" colspan="2"> </td></tr>
175 <tr class="memitem:ga1908247cb5f2468517b37d5a91798181"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga1908247cb5f2468517b37d5a91798181">uart_set_irqs_enabled</a> (uart_inst_t *uart, bool rx_has_data, bool tx_needs_data)</td></tr>
176 <tr class="memdesc:ga1908247cb5f2468517b37d5a91798181"><td class="mdescLeft"> </td><td class="mdescRight">Enable/Disable UART interrupt outputs. <a href="group__hardware__uart.html#ga1908247cb5f2468517b37d5a91798181">More...</a><br /></td></tr>
177 <tr class="separator:ga1908247cb5f2468517b37d5a91798181"><td class="memSeparator" colspan="2"> </td></tr>
178 <tr class="memitem:ga6397bfad56e634a2ab31b6953a44caa7"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga6397bfad56e634a2ab31b6953a44caa7">uart_is_enabled</a> (uart_inst_t *uart)</td></tr>
179 <tr class="memdesc:ga6397bfad56e634a2ab31b6953a44caa7"><td class="mdescLeft"> </td><td class="mdescRight">Test if specific UART is enabled. <a href="group__hardware__uart.html#ga6397bfad56e634a2ab31b6953a44caa7">More...</a><br /></td></tr>
180 <tr class="separator:ga6397bfad56e634a2ab31b6953a44caa7"><td class="memSeparator" colspan="2"> </td></tr>
181 <tr class="memitem:gac3daee9514dacfb76f3c04b131e2e41a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#gac3daee9514dacfb76f3c04b131e2e41a">uart_set_fifo_enabled</a> (uart_inst_t *uart, bool enabled)</td></tr>
182 <tr class="memdesc:gac3daee9514dacfb76f3c04b131e2e41a"><td class="mdescLeft"> </td><td class="mdescRight">Enable/Disable the FIFOs on specified UART. <a href="group__hardware__uart.html#gac3daee9514dacfb76f3c04b131e2e41a">More...</a><br /></td></tr>
183 <tr class="separator:gac3daee9514dacfb76f3c04b131e2e41a"><td class="memSeparator" colspan="2"> </td></tr>
184 <tr class="memitem:ga9d307ef71e3ce632be03bfd9bbe68117"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga9d307ef71e3ce632be03bfd9bbe68117">uart_is_writable</a> (uart_inst_t *uart)</td></tr>
185 <tr class="memdesc:ga9d307ef71e3ce632be03bfd9bbe68117"><td class="mdescLeft"> </td><td class="mdescRight">Determine if space is available in the TX FIFO. <a href="group__hardware__uart.html#ga9d307ef71e3ce632be03bfd9bbe68117">More...</a><br /></td></tr>
186 <tr class="separator:ga9d307ef71e3ce632be03bfd9bbe68117"><td class="memSeparator" colspan="2"> </td></tr>
187 <tr class="memitem:gaff99ad133c2c808b69d1e12054c09f4a"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#gaff99ad133c2c808b69d1e12054c09f4a">uart_tx_wait_blocking</a> (uart_inst_t *uart)</td></tr>
188 <tr class="memdesc:gaff99ad133c2c808b69d1e12054c09f4a"><td class="mdescLeft"> </td><td class="mdescRight">Wait for the UART TX fifo to be drained. <a href="group__hardware__uart.html#gaff99ad133c2c808b69d1e12054c09f4a">More...</a><br /></td></tr>
189 <tr class="separator:gaff99ad133c2c808b69d1e12054c09f4a"><td class="memSeparator" colspan="2"> </td></tr>
190 <tr class="memitem:ga4752e5d03dd98a08d95705f68784fd15"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga4752e5d03dd98a08d95705f68784fd15">uart_is_readable</a> (uart_inst_t *uart)</td></tr>
191 <tr class="memdesc:ga4752e5d03dd98a08d95705f68784fd15"><td class="mdescLeft"> </td><td class="mdescRight">Determine whether data is waiting in the RX FIFO. <a href="group__hardware__uart.html#ga4752e5d03dd98a08d95705f68784fd15">More...</a><br /></td></tr>
192 <tr class="separator:ga4752e5d03dd98a08d95705f68784fd15"><td class="memSeparator" colspan="2"> </td></tr>
193 <tr class="memitem:gada6a512414b1113a59725ddfbe23c4a5"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#gada6a512414b1113a59725ddfbe23c4a5">uart_write_blocking</a> (uart_inst_t *uart, const uint8_t *src, size_t len)</td></tr>
194 <tr class="memdesc:gada6a512414b1113a59725ddfbe23c4a5"><td class="mdescLeft"> </td><td class="mdescRight">Write to the UART for transmission. <a href="group__hardware__uart.html#gada6a512414b1113a59725ddfbe23c4a5">More...</a><br /></td></tr>
195 <tr class="separator:gada6a512414b1113a59725ddfbe23c4a5"><td class="memSeparator" colspan="2"> </td></tr>
196 <tr class="memitem:gae8a066ef7339e7b22f05049435469234"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#gae8a066ef7339e7b22f05049435469234">uart_read_blocking</a> (uart_inst_t *uart, uint8_t *dst, size_t len)</td></tr>
197 <tr class="memdesc:gae8a066ef7339e7b22f05049435469234"><td class="mdescLeft"> </td><td class="mdescRight">Read from the UART. <a href="group__hardware__uart.html#gae8a066ef7339e7b22f05049435469234">More...</a><br /></td></tr>
198 <tr class="separator:gae8a066ef7339e7b22f05049435469234"><td class="memSeparator" colspan="2"> </td></tr>
199 <tr class="memitem:ga64aa17c4b4382a59f7cb80c94f339d56"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga64aa17c4b4382a59f7cb80c94f339d56">uart_putc_raw</a> (uart_inst_t *uart, char c)</td></tr>
200 <tr class="memdesc:ga64aa17c4b4382a59f7cb80c94f339d56"><td class="mdescLeft"> </td><td class="mdescRight">Write single character to UART for transmission. <a href="group__hardware__uart.html#ga64aa17c4b4382a59f7cb80c94f339d56">More...</a><br /></td></tr>
201 <tr class="separator:ga64aa17c4b4382a59f7cb80c94f339d56"><td class="memSeparator" colspan="2"> </td></tr>
202 <tr class="memitem:ga21c2cc29dcdc99ad970024dca52665a5"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga21c2cc29dcdc99ad970024dca52665a5">uart_putc</a> (uart_inst_t *uart, char c)</td></tr>
203 <tr class="memdesc:ga21c2cc29dcdc99ad970024dca52665a5"><td class="mdescLeft"> </td><td class="mdescRight">Write single character to UART for transmission, with optional CR/LF conversions. <a href="group__hardware__uart.html#ga21c2cc29dcdc99ad970024dca52665a5">More...</a><br /></td></tr>
204 <tr class="separator:ga21c2cc29dcdc99ad970024dca52665a5"><td class="memSeparator" colspan="2"> </td></tr>
205 <tr class="memitem:ga94be41517216933ca961fd0464f74a6c"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga94be41517216933ca961fd0464f74a6c">uart_puts</a> (uart_inst_t *uart, const char *s)</td></tr>
206 <tr class="memdesc:ga94be41517216933ca961fd0464f74a6c"><td class="mdescLeft"> </td><td class="mdescRight">Write string to UART for transmission, doing any CR/LF conversions. <a href="group__hardware__uart.html#ga94be41517216933ca961fd0464f74a6c">More...</a><br /></td></tr>
207 <tr class="separator:ga94be41517216933ca961fd0464f74a6c"><td class="memSeparator" colspan="2"> </td></tr>
208 <tr class="memitem:ga652497b933112c1759f892a03c657fec"><td class="memItemLeft" align="right" valign="top">static char </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga652497b933112c1759f892a03c657fec">uart_getc</a> (uart_inst_t *uart)</td></tr>
209 <tr class="memdesc:ga652497b933112c1759f892a03c657fec"><td class="mdescLeft"> </td><td class="mdescRight">Read a single character from the UART. <a href="group__hardware__uart.html#ga652497b933112c1759f892a03c657fec">More...</a><br /></td></tr>
210 <tr class="separator:ga652497b933112c1759f892a03c657fec"><td class="memSeparator" colspan="2"> </td></tr>
211 <tr class="memitem:gaddb01507886acab5604a2eecc014b388"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#gaddb01507886acab5604a2eecc014b388">uart_set_break</a> (uart_inst_t *uart, bool en)</td></tr>
212 <tr class="memdesc:gaddb01507886acab5604a2eecc014b388"><td class="mdescLeft"> </td><td class="mdescRight">Assert a break condition on the UART transmission. <a href="group__hardware__uart.html#gaddb01507886acab5604a2eecc014b388">More...</a><br /></td></tr>
213 <tr class="separator:gaddb01507886acab5604a2eecc014b388"><td class="memSeparator" colspan="2"> </td></tr>
214 <tr class="memitem:ga4ea0b7b9252cd22e2395ca6070000f7a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga4ea0b7b9252cd22e2395ca6070000f7a">uart_set_translate_crlf</a> (uart_inst_t *uart, bool translate)</td></tr>
215 <tr class="memdesc:ga4ea0b7b9252cd22e2395ca6070000f7a"><td class="mdescLeft"> </td><td class="mdescRight">Set CR/LF conversion on UART. <a href="group__hardware__uart.html#ga4ea0b7b9252cd22e2395ca6070000f7a">More...</a><br /></td></tr>
216 <tr class="separator:ga4ea0b7b9252cd22e2395ca6070000f7a"><td class="memSeparator" colspan="2"> </td></tr>
217 <tr class="memitem:gaaa85ae059028b3f38e612e55042a8272"><td class="memItemLeft" align="right" valign="top"><a id="gaaa85ae059028b3f38e612e55042a8272" name="gaaa85ae059028b3f38e612e55042a8272"></a>
218 static void </td><td class="memItemRight" valign="bottom"><b>uart_default_tx_wait_blocking</b> (void)</td></tr>
219 <tr class="memdesc:gaaa85ae059028b3f38e612e55042a8272"><td class="mdescLeft"> </td><td class="mdescRight">Wait for the default UART's TX FIFO to be drained. <br /></td></tr>
220 <tr class="separator:gaaa85ae059028b3f38e612e55042a8272"><td class="memSeparator" colspan="2"> </td></tr>
221 <tr class="memitem:ga026539f355b6c6f5a044a5f4ee051f0e"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga026539f355b6c6f5a044a5f4ee051f0e">uart_is_readable_within_us</a> (uart_inst_t *uart, uint32_t us)</td></tr>
222 <tr class="memdesc:ga026539f355b6c6f5a044a5f4ee051f0e"><td class="mdescLeft"> </td><td class="mdescRight">Wait for up to a certain number of microseconds for the RX FIFO to be non empty. <a href="group__hardware__uart.html#ga026539f355b6c6f5a044a5f4ee051f0e">More...</a><br /></td></tr>
223 <tr class="separator:ga026539f355b6c6f5a044a5f4ee051f0e"><td class="memSeparator" colspan="2"> </td></tr>
224 <tr class="memitem:gaee105a6aeabd79da9244a098865e28cd"><td class="memItemLeft" align="right" valign="top">static uint </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#gaee105a6aeabd79da9244a098865e28cd">uart_get_dreq_num</a> (uart_inst_t *uart, bool is_tx)</td></tr>
225 <tr class="memdesc:gaee105a6aeabd79da9244a098865e28cd"><td class="mdescLeft"> </td><td class="mdescRight">Return the <a class="el" href="group__hardware__dma.html#ga8def0ea481095c94f3a0dd0b4fed999e">dreq_num_t</a> to use for pacing transfers to/from a particular UART instance. <a href="group__hardware__uart.html#gaee105a6aeabd79da9244a098865e28cd">More...</a><br /></td></tr>
226 <tr class="separator:gaee105a6aeabd79da9244a098865e28cd"><td class="memSeparator" colspan="2"> </td></tr>
227 <tr class="memitem:ga0759dec413fb5af3bcaa9691ba98bcb9"><td class="memItemLeft" align="right" valign="top">static uint </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga0759dec413fb5af3bcaa9691ba98bcb9">uart_get_reset_num</a> (uart_inst_t *uart)</td></tr>
228 <tr class="memdesc:ga0759dec413fb5af3bcaa9691ba98bcb9"><td class="mdescLeft"> </td><td class="mdescRight">Return the <a class="el" href="group__hardware__resets.html#ga53804b75cce5eb3090d482b0af2a7ce0">reset_num_t</a> to use for pacing transfers to/from a particular UART instance. <a href="group__hardware__uart.html#ga0759dec413fb5af3bcaa9691ba98bcb9">More...</a><br /></td></tr>
229 <tr class="separator:ga0759dec413fb5af3bcaa9691ba98bcb9"><td class="memSeparator" colspan="2"> </td></tr>
230 <tr class="memitem:ga4c45ff280c79aa60358d8241b7e5824b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a>   ((uart_inst_t *)uart0_hw)</td></tr>
231 <tr class="memdesc:ga4c45ff280c79aa60358d8241b7e5824b"><td class="mdescLeft"> </td><td class="mdescRight">Identifier for UART instance 0. <a href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">More...</a><br /></td></tr>
232 <tr class="separator:ga4c45ff280c79aa60358d8241b7e5824b"><td class="memSeparator" colspan="2"> </td></tr>
233 <tr class="memitem:gad94ac6d5e345a1f794174d9bb7c6f69c"><td class="memItemLeft" align="right" valign="top"><a id="gad94ac6d5e345a1f794174d9bb7c6f69c" name="gad94ac6d5e345a1f794174d9bb7c6f69c"></a>
234 #define </td><td class="memItemRight" valign="bottom"><b>uart1</b>   ((uart_inst_t *)uart1_hw)</td></tr>
235 <tr class="memdesc:gad94ac6d5e345a1f794174d9bb7c6f69c"><td class="mdescLeft"> </td><td class="mdescRight">Identifier for UART instance 1. <br /></td></tr>
236 <tr class="separator:gad94ac6d5e345a1f794174d9bb7c6f69c"><td class="memSeparator" colspan="2"> </td></tr>
238 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
239 <p >Hardware UART API. </p>
240 <p >RP-series microcontrollers have 2 identical instances of a UART peripheral, based on the ARM PL011. Each UART can be connected to a number of GPIO pins as defined in the GPIO muxing.</p>
241 <p >Only the TX, RX, RTS, and CTS signals are connected, meaning that the modem mode and IrDA mode of the PL011 are not supported.</p>
242 <h2><a class="anchor" id="uart_example"></a>
244 <div class="fragment"><div class="line"> <span class="keywordtype">int</span> main() {</div>
245 <div class="line"> </div>
246 <div class="line"> <span class="comment">// Set the GPIO pin mux to the UART - pin 0 is TX, 1 is RX; note use of UART_FUNCSEL_NUM for the general</span></div>
247 <div class="line"> <span class="comment">// case where the func sel used for UART depends on the pin number</span></div>
248 <div class="line"> <span class="comment">// Do this before calling uart_init to avoid losing data</span></div>
249 <div class="line"> <a class="code hl_function" href="group__hardware__gpio.html#ga22f6b90c4c7e0013b4b5341de0a44fc4">gpio_set_function</a>(0, <a class="code hl_define" href="group__hardware__uart.html#ga7bceb145d3739e3923f64584eff6db59">UART_FUNCSEL_NUM</a>(<a class="code hl_define" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a>, 0));</div>
250 <div class="line"> <a class="code hl_function" href="group__hardware__gpio.html#ga22f6b90c4c7e0013b4b5341de0a44fc4">gpio_set_function</a>(1, <a class="code hl_define" href="group__hardware__uart.html#ga7bceb145d3739e3923f64584eff6db59">UART_FUNCSEL_NUM</a>(<a class="code hl_define" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a>, 1));</div>
251 <div class="line"> </div>
252 <div class="line"> <span class="comment">// Initialise UART 0</span></div>
253 <div class="line"> <a class="code hl_function" href="group__hardware__uart.html#ga5a55924eff530aff6db3b15fd872cda4">uart_init</a>(<a class="code hl_define" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a>, 115200);</div>
254 <div class="line"> </div>
255 <div class="line"> <a class="code hl_function" href="group__hardware__uart.html#ga94be41517216933ca961fd0464f74a6c">uart_puts</a>(<a class="code hl_define" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a>, <span class="stringliteral">"Hello world!"</span>);</div>
256 <div class="line">}</div>
257 <div class="ttc" id="agroup__hardware__gpio_html_ga22f6b90c4c7e0013b4b5341de0a44fc4"><div class="ttname"><a href="group__hardware__gpio.html#ga22f6b90c4c7e0013b4b5341de0a44fc4">gpio_set_function</a></div><div class="ttdeci">void gpio_set_function(uint gpio, gpio_function_t fn)</div><div class="ttdoc">Select GPIO function.</div><div class="ttdef"><b>Definition:</b> gpio.c:38</div></div>
258 <div class="ttc" id="agroup__hardware__uart_html_ga4c45ff280c79aa60358d8241b7e5824b"><div class="ttname"><a href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a></div><div class="ttdeci">#define uart0</div><div class="ttdoc">Identifier for UART instance 0.</div><div class="ttdef"><b>Definition:</b> uart.h:86</div></div>
259 <div class="ttc" id="agroup__hardware__uart_html_ga5a55924eff530aff6db3b15fd872cda4"><div class="ttname"><a href="group__hardware__uart.html#ga5a55924eff530aff6db3b15fd872cda4">uart_init</a></div><div class="ttdeci">uint uart_init(uart_inst_t *uart, uint baudrate)</div><div class="ttdoc">Initialise a UART.</div><div class="ttdef"><b>Definition:</b> uart.c:42</div></div>
260 <div class="ttc" id="agroup__hardware__uart_html_ga7bceb145d3739e3923f64584eff6db59"><div class="ttname"><a href="group__hardware__uart.html#ga7bceb145d3739e3923f64584eff6db59">UART_FUNCSEL_NUM</a></div><div class="ttdeci">#define UART_FUNCSEL_NUM(uart, gpio)</div><div class="ttdoc">Returns gpio_function_t needed to select the UART function for the given UART instance on the given G...</div><div class="ttdef"><b>Definition:</b> uart.h:179</div></div>
261 <div class="ttc" id="agroup__hardware__uart_html_ga94be41517216933ca961fd0464f74a6c"><div class="ttname"><a href="group__hardware__uart.html#ga94be41517216933ca961fd0464f74a6c">uart_puts</a></div><div class="ttdeci">static void uart_puts(uart_inst_t *uart, const char *s)</div><div class="ttdoc">Write string to UART for transmission, doing any CR/LF conversions.</div><div class="ttdef"><b>Definition:</b> uart.h:524</div></div>
262 </div><!-- fragment --> <h2 class="groupheader">Macro Definition Documentation</h2>
263 <a id="ga4c45ff280c79aa60358d8241b7e5824b" name="ga4c45ff280c79aa60358d8241b7e5824b"></a>
264 <h2 class="memtitle"><span class="permalink"><a href="#ga4c45ff280c79aa60358d8241b7e5824b">◆ </a></span>uart0</h2>
266 <div class="memitem">
267 <div class="memproto">
268 <table class="memname">
270 <td class="memname">#define uart0   ((uart_inst_t *)uart0_hw)</td>
273 </div><div class="memdoc">
275 <p>Identifier for UART instance 0. </p>
276 <p >The UART identifiers for use in UART functions.</p>
277 <p >e.g. uart_init(uart1, 48000) </p>
281 <a id="ga8b4f387572a62cc839eb004ce7c02e3f" name="ga8b4f387572a62cc839eb004ce7c02e3f"></a>
282 <h2 class="memtitle"><span class="permalink"><a href="#ga8b4f387572a62cc839eb004ce7c02e3f">◆ </a></span>UART_CLOCK_NUM</h2>
284 <div class="memitem">
285 <div class="memproto">
286 <table class="memname">
288 <td class="memname">#define UART_CLOCK_NUM</td>
290 <td class="paramtype"> </td>
291 <td class="paramname">uart</td><td>)</td>
295 </div><div class="memdoc">
297 <p>Returns <a class="el" href="group__hardware__clocks.html#ga824c11c2ae315e0b745f6dd3db936788">clock_num_t</a> of the clock for the given UART instance. </p>
298 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
302 <a id="ga10472af6afab1cb220b5fbd4aee63a16" name="ga10472af6afab1cb220b5fbd4aee63a16"></a>
303 <h2 class="memtitle"><span class="permalink"><a href="#ga10472af6afab1cb220b5fbd4aee63a16">◆ </a></span>UART_DREQ_NUM</h2>
305 <div class="memitem">
306 <div class="memproto">
307 <table class="memname">
309 <td class="memname">#define UART_DREQ_NUM</td>
311 <td class="paramtype"> </td>
312 <td class="paramname">uart, </td>
315 <td class="paramkey"></td>
317 <td class="paramtype"> </td>
318 <td class="paramname">is_tx </td>
326 </div><div class="memdoc">
328 <p>Returns the <a class="el" href="group__hardware__dma.html#ga8def0ea481095c94f3a0dd0b4fed999e">dreq_num_t</a> used for pacing DMA transfers to or from this UART instance. If is_tx is true, then it is for transfers to the UART else for transfers from the UART. </p>
329 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
333 <a id="ga7bceb145d3739e3923f64584eff6db59" name="ga7bceb145d3739e3923f64584eff6db59"></a>
334 <h2 class="memtitle"><span class="permalink"><a href="#ga7bceb145d3739e3923f64584eff6db59">◆ </a></span>UART_FUNCSEL_NUM</h2>
336 <div class="memitem">
337 <div class="memproto">
338 <table class="memname">
340 <td class="memname">#define UART_FUNCSEL_NUM</td>
342 <td class="paramtype"> </td>
343 <td class="paramname">uart, </td>
346 <td class="paramkey"></td>
348 <td class="paramtype"> </td>
349 <td class="paramname">gpio </td>
357 </div><div class="memdoc">
359 <p>Returns <a class="el" href="group__hardware__gpio.html#ga89b8e5e8a9c515260dea8d1fa96e72c9">gpio_function_t</a> needed to select the UART function for the given UART instance on the given GPIO number. </p>
360 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
364 <a id="gadc5c5947dc577aac3d448fdb37647927" name="gadc5c5947dc577aac3d448fdb37647927"></a>
365 <h2 class="memtitle"><span class="permalink"><a href="#gadc5c5947dc577aac3d448fdb37647927">◆ </a></span>UART_INSTANCE</h2>
367 <div class="memitem">
368 <div class="memproto">
369 <table class="memname">
371 <td class="memname">#define UART_INSTANCE</td>
373 <td class="paramtype"> </td>
374 <td class="paramname">num</td><td>)</td>
378 </div><div class="memdoc">
380 <p>Returns the UART instance with the given UART number. </p>
381 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
385 <a id="ga8697ddad82a2cd5d889ce819d83783e3" name="ga8697ddad82a2cd5d889ce819d83783e3"></a>
386 <h2 class="memtitle"><span class="permalink"><a href="#ga8697ddad82a2cd5d889ce819d83783e3">◆ </a></span>UART_IRQ_NUM</h2>
388 <div class="memitem">
389 <div class="memproto">
390 <table class="memname">
392 <td class="memname">#define UART_IRQ_NUM</td>
394 <td class="paramtype"> </td>
395 <td class="paramname">uart</td><td>)</td>
399 </div><div class="memdoc">
401 <p>Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for processor interrupts from the given UART instance. </p>
402 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
406 <a id="ga12815b6262573d95c8a749f64cc85284" name="ga12815b6262573d95c8a749f64cc85284"></a>
407 <h2 class="memtitle"><span class="permalink"><a href="#ga12815b6262573d95c8a749f64cc85284">◆ </a></span>UART_NUM</h2>
409 <div class="memitem">
410 <div class="memproto">
411 <table class="memname">
413 <td class="memname">#define UART_NUM</td>
415 <td class="paramtype"> </td>
416 <td class="paramname">uart</td><td>)</td>
420 </div><div class="memdoc">
422 <p>Returns the UART number for a UART instance. </p>
423 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
427 <a id="gaffef755f98d8fcec5f7b5147924fb4f9" name="gaffef755f98d8fcec5f7b5147924fb4f9"></a>
428 <h2 class="memtitle"><span class="permalink"><a href="#gaffef755f98d8fcec5f7b5147924fb4f9">◆ </a></span>UART_RESET_NUM</h2>
430 <div class="memitem">
431 <div class="memproto">
432 <table class="memname">
434 <td class="memname">#define UART_RESET_NUM</td>
436 <td class="paramtype"> </td>
437 <td class="paramname">uart</td><td>)</td>
441 </div><div class="memdoc">
443 <p>Returns the <a class="el" href="group__hardware__resets.html#ga53804b75cce5eb3090d482b0af2a7ce0">reset_num_t</a> used to reset a given UART instance. </p>
444 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
448 <h2 class="groupheader">Function Documentation</h2>
449 <a id="ga85b12f7d19f5087b22f26473039d2c4f" name="ga85b12f7d19f5087b22f26473039d2c4f"></a>
450 <h2 class="memtitle"><span class="permalink"><a href="#ga85b12f7d19f5087b22f26473039d2c4f">◆ </a></span>uart_deinit()</h2>
452 <div class="memitem">
453 <div class="memproto">
454 <table class="memname">
456 <td class="memname">void uart_deinit </td>
458 <td class="paramtype">uart_inst_t * </td>
459 <td class="paramname"><em>uart</em></td><td>)</td>
463 </div><div class="memdoc">
465 <p>DeInitialise a UART. </p>
466 <p >Disable the UART if it is no longer used. Must be reinitialised before being used again.</p>
467 <dl class="params"><dt>Parameters</dt><dd>
468 <table class="params">
469 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
476 <a id="gaee105a6aeabd79da9244a098865e28cd" name="gaee105a6aeabd79da9244a098865e28cd"></a>
477 <h2 class="memtitle"><span class="permalink"><a href="#gaee105a6aeabd79da9244a098865e28cd">◆ </a></span>uart_get_dreq_num()</h2>
479 <div class="memitem">
480 <div class="memproto">
481 <table class="mlabels">
483 <td class="mlabels-left">
484 <table class="memname">
486 <td class="memname">static uint uart_get_dreq_num </td>
488 <td class="paramtype">uart_inst_t * </td>
489 <td class="paramname"><em>uart</em>, </td>
492 <td class="paramkey"></td>
494 <td class="paramtype">bool </td>
495 <td class="paramname"><em>is_tx</em> </td>
504 <td class="mlabels-right">
505 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
508 </div><div class="memdoc">
510 <p>Return the <a class="el" href="group__hardware__dma.html#ga8def0ea481095c94f3a0dd0b4fed999e">dreq_num_t</a> to use for pacing transfers to/from a particular UART instance. </p>
511 <dl class="params"><dt>Parameters</dt><dd>
512 <table class="params">
513 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
514 <tr><td class="paramname">is_tx</td><td>true for sending data to the UART instance, false for receiving data from the UART instance </td></tr>
521 <a id="ga460772353a17df99adaf3352115c73d5" name="ga460772353a17df99adaf3352115c73d5"></a>
522 <h2 class="memtitle"><span class="permalink"><a href="#ga460772353a17df99adaf3352115c73d5">◆ </a></span>uart_get_hw()</h2>
524 <div class="memitem">
525 <div class="memproto">
526 <table class="mlabels">
528 <td class="mlabels-left">
529 <table class="memname">
531 <td class="memname">static <a class="el" href="structuart__hw__t.html">uart_hw_t</a> * uart_get_hw </td>
533 <td class="paramtype">uart_inst_t * </td>
534 <td class="paramname"><em>uart</em></td><td>)</td>
539 <td class="mlabels-right">
540 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
543 </div><div class="memdoc">
545 <p>Get the real hardware UART instance from a UART instance. </p>
546 <p >This extra level of abstraction was added to facilitate adding PIO UARTs in the future. It currently does nothing, and costs nothing.</p>
547 <dl class="params"><dt>Parameters</dt><dd>
548 <table class="params">
549 <tr><td class="paramname">uart</td><td>UART instance </td></tr>
553 <dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="structuart__hw__t.html">uart_hw_t</a> pointer to the UART instance registers </dd></dl>
557 <a id="ga064c5c42afff8712a612d7ae50a58484" name="ga064c5c42afff8712a612d7ae50a58484"></a>
558 <h2 class="memtitle"><span class="permalink"><a href="#ga064c5c42afff8712a612d7ae50a58484">◆ </a></span>uart_get_index()</h2>
560 <div class="memitem">
561 <div class="memproto">
562 <table class="mlabels">
564 <td class="mlabels-left">
565 <table class="memname">
567 <td class="memname">static uint uart_get_index </td>
569 <td class="paramtype">uart_inst_t * </td>
570 <td class="paramname"><em>uart</em></td><td>)</td>
575 <td class="mlabels-right">
576 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
579 </div><div class="memdoc">
581 <p>Convert UART instance to hardware instance number. </p>
582 <dl class="params"><dt>Parameters</dt><dd>
583 <table class="params">
584 <tr><td class="paramname">uart</td><td>UART instance </td></tr>
588 <dl class="section return"><dt>Returns</dt><dd>Number of UART, 0 or 1. </dd></dl>
592 <a id="gafd9aaeaae78307db7f51aa39f501b972" name="gafd9aaeaae78307db7f51aa39f501b972"></a>
593 <h2 class="memtitle"><span class="permalink"><a href="#gafd9aaeaae78307db7f51aa39f501b972">◆ </a></span>uart_get_instance()</h2>
595 <div class="memitem">
596 <div class="memproto">
597 <table class="mlabels">
599 <td class="mlabels-left">
600 <table class="memname">
602 <td class="memname">static uart_inst_t * uart_get_instance </td>
604 <td class="paramtype">uint </td>
605 <td class="paramname"><em>num</em></td><td>)</td>
610 <td class="mlabels-right">
611 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
614 </div><div class="memdoc">
616 <p>Get the UART instance from an instance number. </p>
617 <dl class="params"><dt>Parameters</dt><dd>
618 <table class="params">
619 <tr><td class="paramname">uart</td><td>UART instance </td></tr>
623 <dl class="section return"><dt>Returns</dt><dd>Number of UART, 0 or 1 </dd></dl>
627 <a id="ga0759dec413fb5af3bcaa9691ba98bcb9" name="ga0759dec413fb5af3bcaa9691ba98bcb9"></a>
628 <h2 class="memtitle"><span class="permalink"><a href="#ga0759dec413fb5af3bcaa9691ba98bcb9">◆ </a></span>uart_get_reset_num()</h2>
630 <div class="memitem">
631 <div class="memproto">
632 <table class="mlabels">
634 <td class="mlabels-left">
635 <table class="memname">
637 <td class="memname">static uint uart_get_reset_num </td>
639 <td class="paramtype">uart_inst_t * </td>
640 <td class="paramname"><em>uart</em></td><td>)</td>
645 <td class="mlabels-right">
646 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
649 </div><div class="memdoc">
651 <p>Return the <a class="el" href="group__hardware__resets.html#ga53804b75cce5eb3090d482b0af2a7ce0">reset_num_t</a> to use for pacing transfers to/from a particular UART instance. </p>
652 <dl class="params"><dt>Parameters</dt><dd>
653 <table class="params">
654 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
655 <tr><td class="paramname">is_tx</td><td>true for sending data to the UART instance, false for receiving data from the UART instance </td></tr>
662 <a id="ga652497b933112c1759f892a03c657fec" name="ga652497b933112c1759f892a03c657fec"></a>
663 <h2 class="memtitle"><span class="permalink"><a href="#ga652497b933112c1759f892a03c657fec">◆ </a></span>uart_getc()</h2>
665 <div class="memitem">
666 <div class="memproto">
667 <table class="mlabels">
669 <td class="mlabels-left">
670 <table class="memname">
672 <td class="memname">static char uart_getc </td>
674 <td class="paramtype">uart_inst_t * </td>
675 <td class="paramname"><em>uart</em></td><td>)</td>
680 <td class="mlabels-right">
681 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
684 </div><div class="memdoc">
686 <p>Read a single character from the UART. </p>
687 <p >This function will block until a character has been read</p>
688 <dl class="params"><dt>Parameters</dt><dd>
689 <table class="params">
690 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
694 <dl class="section return"><dt>Returns</dt><dd>The character read. </dd></dl>
698 <a id="ga5a55924eff530aff6db3b15fd872cda4" name="ga5a55924eff530aff6db3b15fd872cda4"></a>
699 <h2 class="memtitle"><span class="permalink"><a href="#ga5a55924eff530aff6db3b15fd872cda4">◆ </a></span>uart_init()</h2>
701 <div class="memitem">
702 <div class="memproto">
703 <table class="memname">
705 <td class="memname">uint uart_init </td>
707 <td class="paramtype">uart_inst_t * </td>
708 <td class="paramname"><em>uart</em>, </td>
711 <td class="paramkey"></td>
713 <td class="paramtype">uint </td>
714 <td class="paramname"><em>baudrate</em> </td>
722 </div><div class="memdoc">
724 <p>Initialise a UART. </p>
725 <p >Put the UART into a known state, and enable it. Must be called before other functions.</p>
726 <p >This function always enables the FIFOs, and configures the UART for the following default line format:</p>
729 <li>No parity bit</li>
730 <li>One stop bit</li>
732 <dl class="section note"><dt>Note</dt><dd>There is no guarantee that the baudrate requested will be possible, the nearest will be chosen, and this function will return the configured baud rate.</dd></dl>
733 <dl class="params"><dt>Parameters</dt><dd>
734 <table class="params">
735 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
736 <tr><td class="paramname">baudrate</td><td>Baudrate of UART in Hz </td></tr>
740 <dl class="section return"><dt>Returns</dt><dd>Actual set baudrate </dd></dl>
744 <a id="ga6397bfad56e634a2ab31b6953a44caa7" name="ga6397bfad56e634a2ab31b6953a44caa7"></a>
745 <h2 class="memtitle"><span class="permalink"><a href="#ga6397bfad56e634a2ab31b6953a44caa7">◆ </a></span>uart_is_enabled()</h2>
747 <div class="memitem">
748 <div class="memproto">
749 <table class="mlabels">
751 <td class="mlabels-left">
752 <table class="memname">
754 <td class="memname">static bool uart_is_enabled </td>
756 <td class="paramtype">uart_inst_t * </td>
757 <td class="paramname"><em>uart</em></td><td>)</td>
762 <td class="mlabels-right">
763 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
766 </div><div class="memdoc">
768 <p>Test if specific UART is enabled. </p>
769 <dl class="params"><dt>Parameters</dt><dd>
770 <table class="params">
771 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
775 <dl class="section return"><dt>Returns</dt><dd>true if the UART is enabled </dd></dl>
779 <a id="ga4752e5d03dd98a08d95705f68784fd15" name="ga4752e5d03dd98a08d95705f68784fd15"></a>
780 <h2 class="memtitle"><span class="permalink"><a href="#ga4752e5d03dd98a08d95705f68784fd15">◆ </a></span>uart_is_readable()</h2>
782 <div class="memitem">
783 <div class="memproto">
784 <table class="mlabels">
786 <td class="mlabels-left">
787 <table class="memname">
789 <td class="memname">static bool uart_is_readable </td>
791 <td class="paramtype">uart_inst_t * </td>
792 <td class="paramname"><em>uart</em></td><td>)</td>
797 <td class="mlabels-right">
798 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
801 </div><div class="memdoc">
803 <p>Determine whether data is waiting in the RX FIFO. </p>
804 <dl class="params"><dt>Parameters</dt><dd>
805 <table class="params">
806 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
810 <dl class="section return"><dt>Returns</dt><dd>true if the RX FIFO is not empty, otherwise false. </dd></dl>
814 <a id="ga026539f355b6c6f5a044a5f4ee051f0e" name="ga026539f355b6c6f5a044a5f4ee051f0e"></a>
815 <h2 class="memtitle"><span class="permalink"><a href="#ga026539f355b6c6f5a044a5f4ee051f0e">◆ </a></span>uart_is_readable_within_us()</h2>
817 <div class="memitem">
818 <div class="memproto">
819 <table class="memname">
821 <td class="memname">bool uart_is_readable_within_us </td>
823 <td class="paramtype">uart_inst_t * </td>
824 <td class="paramname"><em>uart</em>, </td>
827 <td class="paramkey"></td>
829 <td class="paramtype">uint32_t </td>
830 <td class="paramname"><em>us</em> </td>
838 </div><div class="memdoc">
840 <p>Wait for up to a certain number of microseconds for the RX FIFO to be non empty. </p>
841 <dl class="params"><dt>Parameters</dt><dd>
842 <table class="params">
843 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
844 <tr><td class="paramname">us</td><td>the number of microseconds to wait at most (may be 0 for an instantaneous check) </td></tr>
848 <dl class="section return"><dt>Returns</dt><dd>true if the RX FIFO became non empty before the timeout, false otherwise </dd></dl>
852 <a id="ga9d307ef71e3ce632be03bfd9bbe68117" name="ga9d307ef71e3ce632be03bfd9bbe68117"></a>
853 <h2 class="memtitle"><span class="permalink"><a href="#ga9d307ef71e3ce632be03bfd9bbe68117">◆ </a></span>uart_is_writable()</h2>
855 <div class="memitem">
856 <div class="memproto">
857 <table class="mlabels">
859 <td class="mlabels-left">
860 <table class="memname">
862 <td class="memname">static bool uart_is_writable </td>
864 <td class="paramtype">uart_inst_t * </td>
865 <td class="paramname"><em>uart</em></td><td>)</td>
870 <td class="mlabels-right">
871 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
874 </div><div class="memdoc">
876 <p>Determine if space is available in the TX FIFO. </p>
877 <dl class="params"><dt>Parameters</dt><dd>
878 <table class="params">
879 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
883 <dl class="section return"><dt>Returns</dt><dd>false if no space available, true otherwise </dd></dl>
887 <a id="ga21c2cc29dcdc99ad970024dca52665a5" name="ga21c2cc29dcdc99ad970024dca52665a5"></a>
888 <h2 class="memtitle"><span class="permalink"><a href="#ga21c2cc29dcdc99ad970024dca52665a5">◆ </a></span>uart_putc()</h2>
890 <div class="memitem">
891 <div class="memproto">
892 <table class="mlabels">
894 <td class="mlabels-left">
895 <table class="memname">
897 <td class="memname">static void uart_putc </td>
899 <td class="paramtype">uart_inst_t * </td>
900 <td class="paramname"><em>uart</em>, </td>
903 <td class="paramkey"></td>
905 <td class="paramtype">char </td>
906 <td class="paramname"><em>c</em> </td>
915 <td class="mlabels-right">
916 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
919 </div><div class="memdoc">
921 <p>Write single character to UART for transmission, with optional CR/LF conversions. </p>
922 <p >This function will block until the character has been sent to the UART transmit buffer</p>
923 <dl class="params"><dt>Parameters</dt><dd>
924 <table class="params">
925 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
926 <tr><td class="paramname">c</td><td>The character to send </td></tr>
933 <a id="ga64aa17c4b4382a59f7cb80c94f339d56" name="ga64aa17c4b4382a59f7cb80c94f339d56"></a>
934 <h2 class="memtitle"><span class="permalink"><a href="#ga64aa17c4b4382a59f7cb80c94f339d56">◆ </a></span>uart_putc_raw()</h2>
936 <div class="memitem">
937 <div class="memproto">
938 <table class="mlabels">
940 <td class="mlabels-left">
941 <table class="memname">
943 <td class="memname">static void uart_putc_raw </td>
945 <td class="paramtype">uart_inst_t * </td>
946 <td class="paramname"><em>uart</em>, </td>
949 <td class="paramkey"></td>
951 <td class="paramtype">char </td>
952 <td class="paramname"><em>c</em> </td>
961 <td class="mlabels-right">
962 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
965 </div><div class="memdoc">
967 <p>Write single character to UART for transmission. </p>
968 <p >This function will block until the entire character has been sent to the UART transmit buffer</p>
969 <dl class="params"><dt>Parameters</dt><dd>
970 <table class="params">
971 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
972 <tr><td class="paramname">c</td><td>The character to send </td></tr>
979 <a id="ga94be41517216933ca961fd0464f74a6c" name="ga94be41517216933ca961fd0464f74a6c"></a>
980 <h2 class="memtitle"><span class="permalink"><a href="#ga94be41517216933ca961fd0464f74a6c">◆ </a></span>uart_puts()</h2>
982 <div class="memitem">
983 <div class="memproto">
984 <table class="mlabels">
986 <td class="mlabels-left">
987 <table class="memname">
989 <td class="memname">static void uart_puts </td>
991 <td class="paramtype">uart_inst_t * </td>
992 <td class="paramname"><em>uart</em>, </td>
995 <td class="paramkey"></td>
997 <td class="paramtype">const char * </td>
998 <td class="paramname"><em>s</em> </td>
1007 <td class="mlabels-right">
1008 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1011 </div><div class="memdoc">
1013 <p>Write string to UART for transmission, doing any CR/LF conversions. </p>
1014 <p >This function will block until the entire string has been sent to the UART transmit buffer</p>
1015 <dl class="params"><dt>Parameters</dt><dd>
1016 <table class="params">
1017 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1018 <tr><td class="paramname">s</td><td>The null terminated string to send </td></tr>
1025 <a id="gae8a066ef7339e7b22f05049435469234" name="gae8a066ef7339e7b22f05049435469234"></a>
1026 <h2 class="memtitle"><span class="permalink"><a href="#gae8a066ef7339e7b22f05049435469234">◆ </a></span>uart_read_blocking()</h2>
1028 <div class="memitem">
1029 <div class="memproto">
1030 <table class="mlabels">
1032 <td class="mlabels-left">
1033 <table class="memname">
1035 <td class="memname">static void uart_read_blocking </td>
1037 <td class="paramtype">uart_inst_t * </td>
1038 <td class="paramname"><em>uart</em>, </td>
1041 <td class="paramkey"></td>
1043 <td class="paramtype">uint8_t * </td>
1044 <td class="paramname"><em>dst</em>, </td>
1047 <td class="paramkey"></td>
1049 <td class="paramtype">size_t </td>
1050 <td class="paramname"><em>len</em> </td>
1059 <td class="mlabels-right">
1060 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1063 </div><div class="memdoc">
1065 <p>Read from the UART. </p>
1066 <p >This function blocks until len characters have been read from the UART</p>
1067 <dl class="params"><dt>Parameters</dt><dd>
1068 <table class="params">
1069 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1070 <tr><td class="paramname">dst</td><td>Buffer to accept received bytes </td></tr>
1071 <tr><td class="paramname">len</td><td>The number of bytes to receive. </td></tr>
1078 <a id="gab7f2ad3380a44597d8dda42b2d2ddef9" name="gab7f2ad3380a44597d8dda42b2d2ddef9"></a>
1079 <h2 class="memtitle"><span class="permalink"><a href="#gab7f2ad3380a44597d8dda42b2d2ddef9">◆ </a></span>uart_set_baudrate()</h2>
1081 <div class="memitem">
1082 <div class="memproto">
1083 <table class="memname">
1085 <td class="memname">uint uart_set_baudrate </td>
1087 <td class="paramtype">uart_inst_t * </td>
1088 <td class="paramname"><em>uart</em>, </td>
1091 <td class="paramkey"></td>
1093 <td class="paramtype">uint </td>
1094 <td class="paramname"><em>baudrate</em> </td>
1102 </div><div class="memdoc">
1104 <p>Set UART baud rate. </p>
1105 <p >Set baud rate as close as possible to requested, and return actual rate selected.</p>
1106 <p >The UART is paused for around two character periods whilst the settings are changed. Data received during this time may be dropped by the UART.</p>
1107 <p >Any characters still in the transmit buffer will be sent using the new updated baud rate. <a class="el" href="group__hardware__uart.html#gaff99ad133c2c808b69d1e12054c09f4a" title="Wait for the UART TX fifo to be drained.">uart_tx_wait_blocking()</a> can be called before this function to ensure all characters at the old baud rate have been sent before the rate is changed.</p>
1108 <p >This function should not be called from an interrupt context, and the UART interrupt should be disabled before calling this function.</p>
1109 <dl class="params"><dt>Parameters</dt><dd>
1110 <table class="params">
1111 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1112 <tr><td class="paramname">baudrate</td><td>Baudrate in Hz </td></tr>
1116 <dl class="section return"><dt>Returns</dt><dd>Actual set baudrate </dd></dl>
1120 <a id="gaddb01507886acab5604a2eecc014b388" name="gaddb01507886acab5604a2eecc014b388"></a>
1121 <h2 class="memtitle"><span class="permalink"><a href="#gaddb01507886acab5604a2eecc014b388">◆ </a></span>uart_set_break()</h2>
1123 <div class="memitem">
1124 <div class="memproto">
1125 <table class="memname">
1127 <td class="memname">void uart_set_break </td>
1129 <td class="paramtype">uart_inst_t * </td>
1130 <td class="paramname"><em>uart</em>, </td>
1133 <td class="paramkey"></td>
1135 <td class="paramtype">bool </td>
1136 <td class="paramname"><em>en</em> </td>
1144 </div><div class="memdoc">
1146 <p>Assert a break condition on the UART transmission. </p>
1147 <dl class="params"><dt>Parameters</dt><dd>
1148 <table class="params">
1149 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1150 <tr><td class="paramname">en</td><td>Assert break condition (TX held low) if true. Clear break condition if false. </td></tr>
1157 <a id="gac3daee9514dacfb76f3c04b131e2e41a" name="gac3daee9514dacfb76f3c04b131e2e41a"></a>
1158 <h2 class="memtitle"><span class="permalink"><a href="#gac3daee9514dacfb76f3c04b131e2e41a">◆ </a></span>uart_set_fifo_enabled()</h2>
1160 <div class="memitem">
1161 <div class="memproto">
1162 <table class="memname">
1164 <td class="memname">void uart_set_fifo_enabled </td>
1166 <td class="paramtype">uart_inst_t * </td>
1167 <td class="paramname"><em>uart</em>, </td>
1170 <td class="paramkey"></td>
1172 <td class="paramtype">bool </td>
1173 <td class="paramname"><em>enabled</em> </td>
1181 </div><div class="memdoc">
1183 <p>Enable/Disable the FIFOs on specified UART. </p>
1184 <p >The UART is paused for around two character periods whilst the settings are changed. Data received during this time may be dropped by the UART.</p>
1185 <p >Any characters still in the transmit FIFO will be lost if the FIFO is disabled. <a class="el" href="group__hardware__uart.html#gaff99ad133c2c808b69d1e12054c09f4a" title="Wait for the UART TX fifo to be drained.">uart_tx_wait_blocking()</a> can be called before this function to avoid this.</p>
1186 <p >This function should not be called from an interrupt context, and the UART interrupt should be disabled when calling this function.</p>
1187 <dl class="params"><dt>Parameters</dt><dd>
1188 <table class="params">
1189 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1190 <tr><td class="paramname">enabled</td><td>true to enable FIFO (default), false to disable </td></tr>
1197 <a id="ga07e3c6ce7c1abf5e875b62964b8f841e" name="ga07e3c6ce7c1abf5e875b62964b8f841e"></a>
1198 <h2 class="memtitle"><span class="permalink"><a href="#ga07e3c6ce7c1abf5e875b62964b8f841e">◆ </a></span>uart_set_format()</h2>
1200 <div class="memitem">
1201 <div class="memproto">
1202 <table class="memname">
1204 <td class="memname">void uart_set_format </td>
1206 <td class="paramtype">uart_inst_t * </td>
1207 <td class="paramname"><em>uart</em>, </td>
1210 <td class="paramkey"></td>
1212 <td class="paramtype">uint </td>
1213 <td class="paramname"><em>data_bits</em>, </td>
1216 <td class="paramkey"></td>
1218 <td class="paramtype">uint </td>
1219 <td class="paramname"><em>stop_bits</em>, </td>
1222 <td class="paramkey"></td>
1224 <td class="paramtype"><a class="el" href="group__hardware__uart.html#ga6bcc37e31dd40c204b4ac6f6189e8878">uart_parity_t</a> </td>
1225 <td class="paramname"><em>parity</em> </td>
1233 </div><div class="memdoc">
1235 <p>Set UART data format. </p>
1236 <p >Configure the data format (bits etc) for the UART.</p>
1237 <p >The UART is paused for around two character periods whilst the settings are changed. Data received during this time may be dropped by the UART.</p>
1238 <p >Any characters still in the transmit buffer will be sent using the new updated data format. <a class="el" href="group__hardware__uart.html#gaff99ad133c2c808b69d1e12054c09f4a" title="Wait for the UART TX fifo to be drained.">uart_tx_wait_blocking()</a> can be called before this function to ensure all characters needing the old format have been sent before the format is changed.</p>
1239 <p >This function should not be called from an interrupt context, and the UART interrupt should be disabled before calling this function.</p>
1240 <dl class="params"><dt>Parameters</dt><dd>
1241 <table class="params">
1242 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1243 <tr><td class="paramname">data_bits</td><td>Number of bits of data. 5..8 </td></tr>
1244 <tr><td class="paramname">stop_bits</td><td>Number of stop bits 1..2 </td></tr>
1245 <tr><td class="paramname">parity</td><td>Parity option. </td></tr>
1252 <a id="ga54a9e298ebec96510e324bbab01247c7" name="ga54a9e298ebec96510e324bbab01247c7"></a>
1253 <h2 class="memtitle"><span class="permalink"><a href="#ga54a9e298ebec96510e324bbab01247c7">◆ </a></span>uart_set_hw_flow()</h2>
1255 <div class="memitem">
1256 <div class="memproto">
1257 <table class="mlabels">
1259 <td class="mlabels-left">
1260 <table class="memname">
1262 <td class="memname">static void uart_set_hw_flow </td>
1264 <td class="paramtype">uart_inst_t * </td>
1265 <td class="paramname"><em>uart</em>, </td>
1268 <td class="paramkey"></td>
1270 <td class="paramtype">bool </td>
1271 <td class="paramname"><em>cts</em>, </td>
1274 <td class="paramkey"></td>
1276 <td class="paramtype">bool </td>
1277 <td class="paramname"><em>rts</em> </td>
1286 <td class="mlabels-right">
1287 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1290 </div><div class="memdoc">
1292 <p>Set UART flow control CTS/RTS. </p>
1293 <dl class="params"><dt>Parameters</dt><dd>
1294 <table class="params">
1295 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1296 <tr><td class="paramname">cts</td><td>If true enable flow control of TX by clear-to-send input </td></tr>
1297 <tr><td class="paramname">rts</td><td>If true enable assertion of request-to-send output by RX flow control </td></tr>
1304 <a id="ga1908247cb5f2468517b37d5a91798181" name="ga1908247cb5f2468517b37d5a91798181"></a>
1305 <h2 class="memtitle"><span class="permalink"><a href="#ga1908247cb5f2468517b37d5a91798181">◆ </a></span>uart_set_irqs_enabled()</h2>
1307 <div class="memitem">
1308 <div class="memproto">
1309 <table class="mlabels">
1311 <td class="mlabels-left">
1312 <table class="memname">
1314 <td class="memname">static void uart_set_irqs_enabled </td>
1316 <td class="paramtype">uart_inst_t * </td>
1317 <td class="paramname"><em>uart</em>, </td>
1320 <td class="paramkey"></td>
1322 <td class="paramtype">bool </td>
1323 <td class="paramname"><em>rx_has_data</em>, </td>
1326 <td class="paramkey"></td>
1328 <td class="paramtype">bool </td>
1329 <td class="paramname"><em>tx_needs_data</em> </td>
1338 <td class="mlabels-right">
1339 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1342 </div><div class="memdoc">
1344 <p>Enable/Disable UART interrupt outputs. </p>
1345 <p >Enable/Disable the UART's interrupt outputs. An interrupt handler should be installed prior to calling this function.</p>
1346 <dl class="params"><dt>Parameters</dt><dd>
1347 <table class="params">
1348 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1349 <tr><td class="paramname">rx_has_data</td><td>If true an interrupt will be fired when the RX FIFO contains data. </td></tr>
1350 <tr><td class="paramname">tx_needs_data</td><td>If true an interrupt will be fired when the TX FIFO needs data. </td></tr>
1357 <a id="ga4ea0b7b9252cd22e2395ca6070000f7a" name="ga4ea0b7b9252cd22e2395ca6070000f7a"></a>
1358 <h2 class="memtitle"><span class="permalink"><a href="#ga4ea0b7b9252cd22e2395ca6070000f7a">◆ </a></span>uart_set_translate_crlf()</h2>
1360 <div class="memitem">
1361 <div class="memproto">
1362 <table class="memname">
1364 <td class="memname">void uart_set_translate_crlf </td>
1366 <td class="paramtype">uart_inst_t * </td>
1367 <td class="paramname"><em>uart</em>, </td>
1370 <td class="paramkey"></td>
1372 <td class="paramtype">bool </td>
1373 <td class="paramname"><em>translate</em> </td>
1381 </div><div class="memdoc">
1383 <p>Set CR/LF conversion on UART. </p>
1384 <dl class="params"><dt>Parameters</dt><dd>
1385 <table class="params">
1386 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1387 <tr><td class="paramname">translate</td><td>If true, convert line feeds to carriage return on transmissions </td></tr>
1394 <a id="gaff99ad133c2c808b69d1e12054c09f4a" name="gaff99ad133c2c808b69d1e12054c09f4a"></a>
1395 <h2 class="memtitle"><span class="permalink"><a href="#gaff99ad133c2c808b69d1e12054c09f4a">◆ </a></span>uart_tx_wait_blocking()</h2>
1397 <div class="memitem">
1398 <div class="memproto">
1399 <table class="mlabels">
1401 <td class="mlabels-left">
1402 <table class="memname">
1404 <td class="memname">static void uart_tx_wait_blocking </td>
1406 <td class="paramtype">uart_inst_t * </td>
1407 <td class="paramname"><em>uart</em></td><td>)</td>
1412 <td class="mlabels-right">
1413 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1416 </div><div class="memdoc">
1418 <p>Wait for the UART TX fifo to be drained. </p>
1419 <dl class="params"><dt>Parameters</dt><dd>
1420 <table class="params">
1421 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1428 <a id="gada6a512414b1113a59725ddfbe23c4a5" name="gada6a512414b1113a59725ddfbe23c4a5"></a>
1429 <h2 class="memtitle"><span class="permalink"><a href="#gada6a512414b1113a59725ddfbe23c4a5">◆ </a></span>uart_write_blocking()</h2>
1431 <div class="memitem">
1432 <div class="memproto">
1433 <table class="mlabels">
1435 <td class="mlabels-left">
1436 <table class="memname">
1438 <td class="memname">static void uart_write_blocking </td>
1440 <td class="paramtype">uart_inst_t * </td>
1441 <td class="paramname"><em>uart</em>, </td>
1444 <td class="paramkey"></td>
1446 <td class="paramtype">const uint8_t * </td>
1447 <td class="paramname"><em>src</em>, </td>
1450 <td class="paramkey"></td>
1452 <td class="paramtype">size_t </td>
1453 <td class="paramname"><em>len</em> </td>
1462 <td class="mlabels-right">
1463 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1466 </div><div class="memdoc">
1468 <p>Write to the UART for transmission. </p>
1469 <p >This function will block until all the data has been sent to the UART transmit buffer hardware. Note: Serial data transmission will continue until the Tx FIFO and the transmit shift register (not programmer-accessible) are empty. To ensure the UART FIFO has been emptied, you can use <a class="el" href="group__hardware__uart.html#gaff99ad133c2c808b69d1e12054c09f4a">uart_tx_wait_blocking()</a></p>
1470 <dl class="params"><dt>Parameters</dt><dd>
1471 <table class="params">
1472 <tr><td class="paramname">uart</td><td>UART instance. <a class="el" href="group__hardware__uart.html#ga4c45ff280c79aa60358d8241b7e5824b">uart0</a> or <a class="el" href="group__hardware__uart.html#gad94ac6d5e345a1f794174d9bb7c6f69c">uart1</a> </td></tr>
1473 <tr><td class="paramname">src</td><td>The bytes to send </td></tr>
1474 <tr><td class="paramname">len</td><td>The number of bytes to send </td></tr>
1481 </div><!-- contents -->
1482 </div><!-- doc-content -->
1484 <script src="main.js"></script>