]> Git Repo - pico-vscode.git/blob - web/docs/group__hardware__spi.html
Merge branch 'main' into main
[pico-vscode.git] / web / docs / group__hardware__spi.html
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">
4 <head>
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_spi</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"/>
25 </head>
26 <body>
27         <div class="navigation-mobile">
28                 <div class="logo--mobile">
29                         <a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
30                 </div>
31                 <div class="navigation-toggle">
32                         <span class="line-1"></span>
33                         <span class="line-2">
34                                 <p>Menu Toggle</p>
35                         </span>
36                         <span class="line-3"></span>
37                 </div>
38         </div>
39         <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
40                 <div class="logo">
41                         <a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
42                         <span style="display: inline-block; margin-top: 10px;">
43                                 v2.0.0
44                         </span>
45                 </div>
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>
49                 </div>
50 <!--            <div class="search">
51                         <form>
52                                 <input type="search" name="search" id="search" placeholder="Search">
53                                 <input type="submit" value="Search">
54                         </form>
55                 </div> -->
56 <!-- Generated by Doxygen 1.9.4 -->
57 <script type="text/javascript">
58 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
59 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
60 /* @license-end */
61 </script>
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&amp;dn=expat.txt MIT */
66 $(function() {
67   initMenu('',true,false,'search.php','Search');
68   $(document).ready(function() { init_search(); });
69 });
70 /* @license-end */
71 </script>
72 <div id="main-nav"></div>
73 </div><!-- top -->
74 <div id="side-nav" class="ui-resizable side-nav-resizable">
75   <div id="nav-tree">
76     <div id="nav-tree-contents">
77       <div id="nav-sync" class="sync"></div>
78     </div>
79   </div>
80   <div id="splitbar" style="-moz-user-select:none;" 
81        class="ui-resizable-handle">
82   </div>
83 </div>
84 <script type="text/javascript">
85 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
86 $(document).ready(function(){initNavTree('group__hardware__spi.html',''); initResizable(); });
87 /* @license-end */
88 </script>
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)">
95 </div>
96
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">
101 </iframe>
102 </div>
103
104 <div class="header">
105   <div class="summary">
106 <a href="#define-members">Macros</a> &#124;
107 <a href="#enum-members">Enumerations</a> &#124;
108 <a href="#func-members">Functions</a>  </div>
109   <div class="headertitle"><div class="title">hardware_spi<div class="ingroups"><a class="el" href="group__hardware.html">Hardware APIs</a></div></div></div>
110 </div><!--header-->
111 <div class="contents">
112
113 <p>Hardware SPI 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:ga9d931d2e2e5b1dfd8d5f1dea80df4dbd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a>&#160;&#160;&#160;((<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *)spi0_hw)</td></tr>
119 <tr class="separator:ga9d931d2e2e5b1dfd8d5f1dea80df4dbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
120 <tr class="memitem:ga3de59ab064bc9405b059edce4366c694"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a>&#160;&#160;&#160;((<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *)spi1_hw)</td></tr>
121 <tr class="separator:ga3de59ab064bc9405b059edce4366c694"><td class="memSeparator" colspan="2">&#160;</td></tr>
122 <tr class="memitem:ga39308f1ccde24d91e0075059b380dd3a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga39308f1ccde24d91e0075059b380dd3a">SPI_NUM</a>(spi)</td></tr>
123 <tr class="memdesc:ga39308f1ccde24d91e0075059b380dd3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the SPI number for a SPI instance.  <a href="group__hardware__spi.html#ga39308f1ccde24d91e0075059b380dd3a">More...</a><br /></td></tr>
124 <tr class="separator:ga39308f1ccde24d91e0075059b380dd3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
125 <tr class="memitem:gae1d6ac7c86e9f76d5c1a38c6dfd978b9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#gae1d6ac7c86e9f76d5c1a38c6dfd978b9">SPI_INSTANCE</a>(num)</td></tr>
126 <tr class="memdesc:gae1d6ac7c86e9f76d5c1a38c6dfd978b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the SPI instance with the given SPI number.  <a href="group__hardware__spi.html#gae1d6ac7c86e9f76d5c1a38c6dfd978b9">More...</a><br /></td></tr>
127 <tr class="separator:gae1d6ac7c86e9f76d5c1a38c6dfd978b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
128 <tr class="memitem:gaa470b3363ffe872bba90d31814d33baa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#gaa470b3363ffe872bba90d31814d33baa">SPI_DREQ_NUM</a>(spi,  is_tx)</td></tr>
129 <tr class="memdesc:gaa470b3363ffe872bba90d31814d33baa"><td class="mdescLeft">&#160;</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 SPI instance. If is_tx is true, then it is for transfers to the SPI else for transfers from the SPI.  <a href="group__hardware__spi.html#gaa470b3363ffe872bba90d31814d33baa">More...</a><br /></td></tr>
130 <tr class="separator:gaa470b3363ffe872bba90d31814d33baa"><td class="memSeparator" colspan="2">&#160;</td></tr>
131 </table><table class="memberdecls">
132 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
133 Enumerations</h2></td></tr>
134 <tr class="memitem:ga9850de61d3f6dcacbfb4e5cc5a7d2951"><td class="memItemLeft" align="right" valign="top"><a id="ga9850de61d3f6dcacbfb4e5cc5a7d2951" name="ga9850de61d3f6dcacbfb4e5cc5a7d2951"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga9850de61d3f6dcacbfb4e5cc5a7d2951">spi_cpha_t</a> { <b>SPI_CPHA_0</b> = 0
135 , <b>SPI_CPHA_1</b> = 1
136  }</td></tr>
137 <tr class="memdesc:ga9850de61d3f6dcacbfb4e5cc5a7d2951"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumeration of SPI CPHA (clock phase) values. <br /></td></tr>
138 <tr class="separator:ga9850de61d3f6dcacbfb4e5cc5a7d2951"><td class="memSeparator" colspan="2">&#160;</td></tr>
139 <tr class="memitem:ga49a77d9a0320db6d3451a9dda2b8a24b"><td class="memItemLeft" align="right" valign="top"><a id="ga49a77d9a0320db6d3451a9dda2b8a24b" name="ga49a77d9a0320db6d3451a9dda2b8a24b"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga49a77d9a0320db6d3451a9dda2b8a24b">spi_cpol_t</a> { <b>SPI_CPOL_0</b> = 0
140 , <b>SPI_CPOL_1</b> = 1
141  }</td></tr>
142 <tr class="memdesc:ga49a77d9a0320db6d3451a9dda2b8a24b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumeration of SPI CPOL (clock polarity) values. <br /></td></tr>
143 <tr class="separator:ga49a77d9a0320db6d3451a9dda2b8a24b"><td class="memSeparator" colspan="2">&#160;</td></tr>
144 <tr class="memitem:gaa9e8effacf4291301048ef7df03d353e"><td class="memItemLeft" align="right" valign="top"><a id="gaa9e8effacf4291301048ef7df03d353e" name="gaa9e8effacf4291301048ef7df03d353e"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#gaa9e8effacf4291301048ef7df03d353e">spi_order_t</a> { <b>SPI_LSB_FIRST</b> = 0
145 , <b>SPI_MSB_FIRST</b> = 1
146  }</td></tr>
147 <tr class="memdesc:gaa9e8effacf4291301048ef7df03d353e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumeration of SPI bit-order values. <br /></td></tr>
148 <tr class="separator:gaa9e8effacf4291301048ef7df03d353e"><td class="memSeparator" colspan="2">&#160;</td></tr>
149 </table><table class="memberdecls">
150 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
151 Functions</h2></td></tr>
152 <tr class="memitem:ga1dba14fb5488b5e4a69b30678f774df0"><td class="memItemLeft" align="right" valign="top">uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga1dba14fb5488b5e4a69b30678f774df0">spi_init</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, uint baudrate)</td></tr>
153 <tr class="memdesc:ga1dba14fb5488b5e4a69b30678f774df0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialise SPI instances.  <a href="group__hardware__spi.html#ga1dba14fb5488b5e4a69b30678f774df0">More...</a><br /></td></tr>
154 <tr class="separator:ga1dba14fb5488b5e4a69b30678f774df0"><td class="memSeparator" colspan="2">&#160;</td></tr>
155 <tr class="memitem:gaf0c3a38c80cf84a80602755d7bac77e2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#gaf0c3a38c80cf84a80602755d7bac77e2">spi_deinit</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi)</td></tr>
156 <tr class="memdesc:gaf0c3a38c80cf84a80602755d7bac77e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitialise SPI instances.  <a href="group__hardware__spi.html#gaf0c3a38c80cf84a80602755d7bac77e2">More...</a><br /></td></tr>
157 <tr class="separator:gaf0c3a38c80cf84a80602755d7bac77e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
158 <tr class="memitem:ga37f4c04ce4165ac8c129226336a0b66c"><td class="memItemLeft" align="right" valign="top">uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga37f4c04ce4165ac8c129226336a0b66c">spi_set_baudrate</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, uint baudrate)</td></tr>
159 <tr class="memdesc:ga37f4c04ce4165ac8c129226336a0b66c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set SPI baudrate.  <a href="group__hardware__spi.html#ga37f4c04ce4165ac8c129226336a0b66c">More...</a><br /></td></tr>
160 <tr class="separator:ga37f4c04ce4165ac8c129226336a0b66c"><td class="memSeparator" colspan="2">&#160;</td></tr>
161 <tr class="memitem:gaa295443736ab03ac882f2d9383cac139"><td class="memItemLeft" align="right" valign="top">uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#gaa295443736ab03ac882f2d9383cac139">spi_get_baudrate</a> (const <a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi)</td></tr>
162 <tr class="memdesc:gaa295443736ab03ac882f2d9383cac139"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get SPI baudrate.  <a href="group__hardware__spi.html#gaa295443736ab03ac882f2d9383cac139">More...</a><br /></td></tr>
163 <tr class="separator:gaa295443736ab03ac882f2d9383cac139"><td class="memSeparator" colspan="2">&#160;</td></tr>
164 <tr class="memitem:ga88620398eae6e0f66b551be57a279273"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga88620398eae6e0f66b551be57a279273">spi_get_index</a> (const <a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi)</td></tr>
165 <tr class="memdesc:ga88620398eae6e0f66b551be57a279273"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert SPI instance to hardware instance number.  <a href="group__hardware__spi.html#ga88620398eae6e0f66b551be57a279273">More...</a><br /></td></tr>
166 <tr class="separator:ga88620398eae6e0f66b551be57a279273"><td class="memSeparator" colspan="2">&#160;</td></tr>
167 <tr class="memitem:ga137168d01d302239d52420ad4f895d44"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga137168d01d302239d52420ad4f895d44">spi_set_format</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, uint data_bits, <a class="el" href="group__hardware__spi.html#ga49a77d9a0320db6d3451a9dda2b8a24b">spi_cpol_t</a> cpol, <a class="el" href="group__hardware__spi.html#ga9850de61d3f6dcacbfb4e5cc5a7d2951">spi_cpha_t</a> cpha, __unused <a class="el" href="group__hardware__spi.html#gaa9e8effacf4291301048ef7df03d353e">spi_order_t</a> order)</td></tr>
168 <tr class="memdesc:ga137168d01d302239d52420ad4f895d44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure SPI.  <a href="group__hardware__spi.html#ga137168d01d302239d52420ad4f895d44">More...</a><br /></td></tr>
169 <tr class="separator:ga137168d01d302239d52420ad4f895d44"><td class="memSeparator" colspan="2">&#160;</td></tr>
170 <tr class="memitem:ga127e4bf0fc1d7d271d2e9160c6e3b722"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga127e4bf0fc1d7d271d2e9160c6e3b722">spi_set_slave</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, bool slave)</td></tr>
171 <tr class="memdesc:ga127e4bf0fc1d7d271d2e9160c6e3b722"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set SPI master/slave.  <a href="group__hardware__spi.html#ga127e4bf0fc1d7d271d2e9160c6e3b722">More...</a><br /></td></tr>
172 <tr class="separator:ga127e4bf0fc1d7d271d2e9160c6e3b722"><td class="memSeparator" colspan="2">&#160;</td></tr>
173 <tr class="memitem:ga0d7c020fac16f57ee8f805000713e405"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga0d7c020fac16f57ee8f805000713e405">spi_is_writable</a> (const <a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi)</td></tr>
174 <tr class="memdesc:ga0d7c020fac16f57ee8f805000713e405"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a write can be done on SPI device.  <a href="group__hardware__spi.html#ga0d7c020fac16f57ee8f805000713e405">More...</a><br /></td></tr>
175 <tr class="separator:ga0d7c020fac16f57ee8f805000713e405"><td class="memSeparator" colspan="2">&#160;</td></tr>
176 <tr class="memitem:ga20dcaa3037e92bbcbab50b8635f102ff"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga20dcaa3037e92bbcbab50b8635f102ff">spi_is_readable</a> (const <a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi)</td></tr>
177 <tr class="memdesc:ga20dcaa3037e92bbcbab50b8635f102ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a read can be done on SPI device.  <a href="group__hardware__spi.html#ga20dcaa3037e92bbcbab50b8635f102ff">More...</a><br /></td></tr>
178 <tr class="separator:ga20dcaa3037e92bbcbab50b8635f102ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
179 <tr class="memitem:ga5623d0396207ccbd3faa64a5d4f397c3"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga5623d0396207ccbd3faa64a5d4f397c3">spi_is_busy</a> (const <a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi)</td></tr>
180 <tr class="memdesc:ga5623d0396207ccbd3faa64a5d4f397c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether SPI is busy.  <a href="group__hardware__spi.html#ga5623d0396207ccbd3faa64a5d4f397c3">More...</a><br /></td></tr>
181 <tr class="separator:ga5623d0396207ccbd3faa64a5d4f397c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
182 <tr class="memitem:gabb840d4e3db64ea70fad6bb740717910"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#gabb840d4e3db64ea70fad6bb740717910">spi_write_read_blocking</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, const uint8_t *src, uint8_t *dst, size_t len)</td></tr>
183 <tr class="memdesc:gabb840d4e3db64ea70fad6bb740717910"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write/Read to/from an SPI device.  <a href="group__hardware__spi.html#gabb840d4e3db64ea70fad6bb740717910">More...</a><br /></td></tr>
184 <tr class="separator:gabb840d4e3db64ea70fad6bb740717910"><td class="memSeparator" colspan="2">&#160;</td></tr>
185 <tr class="memitem:ga541ec2a1eee4c7fee2134a8415f3b4c8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga541ec2a1eee4c7fee2134a8415f3b4c8">spi_write_blocking</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, const uint8_t *src, size_t len)</td></tr>
186 <tr class="memdesc:ga541ec2a1eee4c7fee2134a8415f3b4c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write to an SPI device, blocking.  <a href="group__hardware__spi.html#ga541ec2a1eee4c7fee2134a8415f3b4c8">More...</a><br /></td></tr>
187 <tr class="separator:ga541ec2a1eee4c7fee2134a8415f3b4c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
188 <tr class="memitem:ga40ce84e76797f81872f12557e537fc48"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga40ce84e76797f81872f12557e537fc48">spi_read_blocking</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, uint8_t repeated_tx_data, uint8_t *dst, size_t len)</td></tr>
189 <tr class="memdesc:ga40ce84e76797f81872f12557e537fc48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read from an SPI device.  <a href="group__hardware__spi.html#ga40ce84e76797f81872f12557e537fc48">More...</a><br /></td></tr>
190 <tr class="separator:ga40ce84e76797f81872f12557e537fc48"><td class="memSeparator" colspan="2">&#160;</td></tr>
191 <tr class="memitem:gad3b96ae828fec8af4b0617db7e904019"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#gad3b96ae828fec8af4b0617db7e904019">spi_write16_read16_blocking</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, const uint16_t *src, uint16_t *dst, size_t len)</td></tr>
192 <tr class="memdesc:gad3b96ae828fec8af4b0617db7e904019"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write/Read half words to/from an SPI device.  <a href="group__hardware__spi.html#gad3b96ae828fec8af4b0617db7e904019">More...</a><br /></td></tr>
193 <tr class="separator:gad3b96ae828fec8af4b0617db7e904019"><td class="memSeparator" colspan="2">&#160;</td></tr>
194 <tr class="memitem:gacff6be19b2de92a34b295597f3ae8572"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#gacff6be19b2de92a34b295597f3ae8572">spi_write16_blocking</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, const uint16_t *src, size_t len)</td></tr>
195 <tr class="memdesc:gacff6be19b2de92a34b295597f3ae8572"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write to an SPI device.  <a href="group__hardware__spi.html#gacff6be19b2de92a34b295597f3ae8572">More...</a><br /></td></tr>
196 <tr class="separator:gacff6be19b2de92a34b295597f3ae8572"><td class="memSeparator" colspan="2">&#160;</td></tr>
197 <tr class="memitem:ga743b7fbdf120a1b5fc098145e3ce8eaf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga743b7fbdf120a1b5fc098145e3ce8eaf">spi_read16_blocking</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, uint16_t repeated_tx_data, uint16_t *dst, size_t len)</td></tr>
198 <tr class="memdesc:ga743b7fbdf120a1b5fc098145e3ce8eaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read from an SPI device.  <a href="group__hardware__spi.html#ga743b7fbdf120a1b5fc098145e3ce8eaf">More...</a><br /></td></tr>
199 <tr class="separator:ga743b7fbdf120a1b5fc098145e3ce8eaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
200 <tr class="memitem:ga6241d6c368b1af1b83a12c1e75515486"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__spi.html#ga6241d6c368b1af1b83a12c1e75515486">spi_get_dreq</a> (<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *spi, bool is_tx)</td></tr>
201 <tr class="memdesc:ga6241d6c368b1af1b83a12c1e75515486"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the DREQ to use for pacing transfers to/from a particular SPI instance.  <a href="group__hardware__spi.html#ga6241d6c368b1af1b83a12c1e75515486">More...</a><br /></td></tr>
202 <tr class="separator:ga6241d6c368b1af1b83a12c1e75515486"><td class="memSeparator" colspan="2">&#160;</td></tr>
203 </table>
204 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
205 <p >Hardware SPI API. </p>
206 <p >RP-series microcontrollers have 2 identical instances of the Serial Peripheral Interface (SPI) controller.</p>
207 <p >The PrimeCell SSP is a master or slave interface for synchronous serial communication with peripheral devices that have Motorola SPI, National Semiconductor Microwire, or Texas Instruments synchronous serial interfaces.</p>
208 <p >Controller can be defined as master or slave using the <a class="el" href="group__hardware__spi.html#ga127e4bf0fc1d7d271d2e9160c6e3b722">spi_set_slave</a> function.</p>
209 <p >Each controller can be connected to a number of GPIO pins, see the datasheet GPIO function selection table for more information. </p>
210 <h2 class="groupheader">Macro Definition Documentation</h2>
211 <a id="ga9d931d2e2e5b1dfd8d5f1dea80df4dbd" name="ga9d931d2e2e5b1dfd8d5f1dea80df4dbd"></a>
212 <h2 class="memtitle"><span class="permalink"><a href="#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">&#9670;&nbsp;</a></span>spi0</h2>
213
214 <div class="memitem">
215 <div class="memproto">
216       <table class="memname">
217         <tr>
218           <td class="memname">#define spi0&#160;&#160;&#160;((<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *)spi0_hw)</td>
219         </tr>
220       </table>
221 </div><div class="memdoc">
222 <p >Identifier for the first (SPI 0) hardware SPI instance (for use in SPI functions).</p>
223 <p >e.g. spi_init(spi0, 48000) </p>
224
225 </div>
226 </div>
227 <a id="ga3de59ab064bc9405b059edce4366c694" name="ga3de59ab064bc9405b059edce4366c694"></a>
228 <h2 class="memtitle"><span class="permalink"><a href="#ga3de59ab064bc9405b059edce4366c694">&#9670;&nbsp;</a></span>spi1</h2>
229
230 <div class="memitem">
231 <div class="memproto">
232       <table class="memname">
233         <tr>
234           <td class="memname">#define spi1&#160;&#160;&#160;((<a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *)spi1_hw)</td>
235         </tr>
236       </table>
237 </div><div class="memdoc">
238 <p >Identifier for the second (SPI 1) hardware SPI instance (for use in SPI functions).</p>
239 <p >e.g. spi_init(spi1, 48000) </p>
240
241 </div>
242 </div>
243 <a id="gaa470b3363ffe872bba90d31814d33baa" name="gaa470b3363ffe872bba90d31814d33baa"></a>
244 <h2 class="memtitle"><span class="permalink"><a href="#gaa470b3363ffe872bba90d31814d33baa">&#9670;&nbsp;</a></span>SPI_DREQ_NUM</h2>
245
246 <div class="memitem">
247 <div class="memproto">
248       <table class="memname">
249         <tr>
250           <td class="memname">#define SPI_DREQ_NUM</td>
251           <td>(</td>
252           <td class="paramtype">&#160;</td>
253           <td class="paramname">spi, </td>
254         </tr>
255         <tr>
256           <td class="paramkey"></td>
257           <td></td>
258           <td class="paramtype">&#160;</td>
259           <td class="paramname">is_tx&#160;</td>
260         </tr>
261         <tr>
262           <td></td>
263           <td>)</td>
264           <td></td><td></td>
265         </tr>
266       </table>
267 </div><div class="memdoc">
268
269 <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 SPI instance. If is_tx is true, then it is for transfers to the SPI else for transfers from the SPI. </p>
270 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
271
272 </div>
273 </div>
274 <a id="gae1d6ac7c86e9f76d5c1a38c6dfd978b9" name="gae1d6ac7c86e9f76d5c1a38c6dfd978b9"></a>
275 <h2 class="memtitle"><span class="permalink"><a href="#gae1d6ac7c86e9f76d5c1a38c6dfd978b9">&#9670;&nbsp;</a></span>SPI_INSTANCE</h2>
276
277 <div class="memitem">
278 <div class="memproto">
279       <table class="memname">
280         <tr>
281           <td class="memname">#define SPI_INSTANCE</td>
282           <td>(</td>
283           <td class="paramtype">&#160;</td>
284           <td class="paramname">num</td><td>)</td>
285           <td></td>
286         </tr>
287       </table>
288 </div><div class="memdoc">
289
290 <p>Returns the SPI instance with the given SPI number. </p>
291 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
292
293 </div>
294 </div>
295 <a id="ga39308f1ccde24d91e0075059b380dd3a" name="ga39308f1ccde24d91e0075059b380dd3a"></a>
296 <h2 class="memtitle"><span class="permalink"><a href="#ga39308f1ccde24d91e0075059b380dd3a">&#9670;&nbsp;</a></span>SPI_NUM</h2>
297
298 <div class="memitem">
299 <div class="memproto">
300       <table class="memname">
301         <tr>
302           <td class="memname">#define SPI_NUM</td>
303           <td>(</td>
304           <td class="paramtype">&#160;</td>
305           <td class="paramname">spi</td><td>)</td>
306           <td></td>
307         </tr>
308       </table>
309 </div><div class="memdoc">
310
311 <p>Returns the SPI number for a SPI instance. </p>
312 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
313
314 </div>
315 </div>
316 <h2 class="groupheader">Function Documentation</h2>
317 <a id="gaf0c3a38c80cf84a80602755d7bac77e2" name="gaf0c3a38c80cf84a80602755d7bac77e2"></a>
318 <h2 class="memtitle"><span class="permalink"><a href="#gaf0c3a38c80cf84a80602755d7bac77e2">&#9670;&nbsp;</a></span>spi_deinit()</h2>
319
320 <div class="memitem">
321 <div class="memproto">
322       <table class="memname">
323         <tr>
324           <td class="memname">void spi_deinit </td>
325           <td>(</td>
326           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
327           <td class="paramname"><em>spi</em></td><td>)</td>
328           <td></td>
329         </tr>
330       </table>
331 </div><div class="memdoc">
332
333 <p>Deinitialise SPI instances. </p>
334 <p >Puts the SPI into a disabled state. Init will need to be called to re-enable the device functions.</p>
335 <dl class="params"><dt>Parameters</dt><dd>
336   <table class="params">
337     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
338   </table>
339   </dd>
340 </dl>
341
342 </div>
343 </div>
344 <a id="gaa295443736ab03ac882f2d9383cac139" name="gaa295443736ab03ac882f2d9383cac139"></a>
345 <h2 class="memtitle"><span class="permalink"><a href="#gaa295443736ab03ac882f2d9383cac139">&#9670;&nbsp;</a></span>spi_get_baudrate()</h2>
346
347 <div class="memitem">
348 <div class="memproto">
349       <table class="memname">
350         <tr>
351           <td class="memname">uint spi_get_baudrate </td>
352           <td>(</td>
353           <td class="paramtype">const <a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
354           <td class="paramname"><em>spi</em></td><td>)</td>
355           <td></td>
356         </tr>
357       </table>
358 </div><div class="memdoc">
359
360 <p>Get SPI baudrate. </p>
361 <p >Get SPI baudrate which was set by </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__spi.html#ga37f4c04ce4165ac8c129226336a0b66c" title="Set SPI baudrate.">spi_set_baudrate</a></dd></dl>
362 <dl class="params"><dt>Parameters</dt><dd>
363   <table class="params">
364     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
365   </table>
366   </dd>
367 </dl>
368 <dl class="section return"><dt>Returns</dt><dd>The actual baudrate set </dd></dl>
369
370 </div>
371 </div>
372 <a id="ga6241d6c368b1af1b83a12c1e75515486" name="ga6241d6c368b1af1b83a12c1e75515486"></a>
373 <h2 class="memtitle"><span class="permalink"><a href="#ga6241d6c368b1af1b83a12c1e75515486">&#9670;&nbsp;</a></span>spi_get_dreq()</h2>
374
375 <div class="memitem">
376 <div class="memproto">
377 <table class="mlabels">
378   <tr>
379   <td class="mlabels-left">
380       <table class="memname">
381         <tr>
382           <td class="memname">static uint spi_get_dreq </td>
383           <td>(</td>
384           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
385           <td class="paramname"><em>spi</em>, </td>
386         </tr>
387         <tr>
388           <td class="paramkey"></td>
389           <td></td>
390           <td class="paramtype">bool&#160;</td>
391           <td class="paramname"><em>is_tx</em>&#160;</td>
392         </tr>
393         <tr>
394           <td></td>
395           <td>)</td>
396           <td></td><td></td>
397         </tr>
398       </table>
399   </td>
400   <td class="mlabels-right">
401 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
402   </tr>
403 </table>
404 </div><div class="memdoc">
405
406 <p>Return the DREQ to use for pacing transfers to/from a particular SPI instance. </p>
407 <dl class="params"><dt>Parameters</dt><dd>
408   <table class="params">
409     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
410     <tr><td class="paramname">is_tx</td><td>true for sending data to the SPI instance, false for receiving data from the SPI instance </td></tr>
411   </table>
412   </dd>
413 </dl>
414
415 </div>
416 </div>
417 <a id="ga88620398eae6e0f66b551be57a279273" name="ga88620398eae6e0f66b551be57a279273"></a>
418 <h2 class="memtitle"><span class="permalink"><a href="#ga88620398eae6e0f66b551be57a279273">&#9670;&nbsp;</a></span>spi_get_index()</h2>
419
420 <div class="memitem">
421 <div class="memproto">
422 <table class="mlabels">
423   <tr>
424   <td class="mlabels-left">
425       <table class="memname">
426         <tr>
427           <td class="memname">static uint spi_get_index </td>
428           <td>(</td>
429           <td class="paramtype">const <a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
430           <td class="paramname"><em>spi</em></td><td>)</td>
431           <td></td>
432         </tr>
433       </table>
434   </td>
435   <td class="mlabels-right">
436 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
437   </tr>
438 </table>
439 </div><div class="memdoc">
440
441 <p>Convert SPI instance to hardware instance number. </p>
442 <dl class="params"><dt>Parameters</dt><dd>
443   <table class="params">
444     <tr><td class="paramname">spi</td><td>SPI instance </td></tr>
445   </table>
446   </dd>
447 </dl>
448 <dl class="section return"><dt>Returns</dt><dd>Number of SPI, 0 or 1. </dd></dl>
449
450 </div>
451 </div>
452 <a id="ga1dba14fb5488b5e4a69b30678f774df0" name="ga1dba14fb5488b5e4a69b30678f774df0"></a>
453 <h2 class="memtitle"><span class="permalink"><a href="#ga1dba14fb5488b5e4a69b30678f774df0">&#9670;&nbsp;</a></span>spi_init()</h2>
454
455 <div class="memitem">
456 <div class="memproto">
457       <table class="memname">
458         <tr>
459           <td class="memname">uint spi_init </td>
460           <td>(</td>
461           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
462           <td class="paramname"><em>spi</em>, </td>
463         </tr>
464         <tr>
465           <td class="paramkey"></td>
466           <td></td>
467           <td class="paramtype">uint&#160;</td>
468           <td class="paramname"><em>baudrate</em>&#160;</td>
469         </tr>
470         <tr>
471           <td></td>
472           <td>)</td>
473           <td></td><td></td>
474         </tr>
475       </table>
476 </div><div class="memdoc">
477
478 <p>Initialise SPI instances. </p>
479 <p >Puts the SPI into a known state, and enable it. Must be called before other functions.</p>
480 <dl class="section note"><dt>Note</dt><dd>There is no guarantee that the baudrate requested can be achieved exactly; the nearest will be chosen and returned</dd></dl>
481 <dl class="params"><dt>Parameters</dt><dd>
482   <table class="params">
483     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
484     <tr><td class="paramname">baudrate</td><td>Baudrate requested in Hz </td></tr>
485   </table>
486   </dd>
487 </dl>
488 <dl class="section return"><dt>Returns</dt><dd>the actual baud rate set </dd></dl>
489
490 </div>
491 </div>
492 <a id="ga5623d0396207ccbd3faa64a5d4f397c3" name="ga5623d0396207ccbd3faa64a5d4f397c3"></a>
493 <h2 class="memtitle"><span class="permalink"><a href="#ga5623d0396207ccbd3faa64a5d4f397c3">&#9670;&nbsp;</a></span>spi_is_busy()</h2>
494
495 <div class="memitem">
496 <div class="memproto">
497 <table class="mlabels">
498   <tr>
499   <td class="mlabels-left">
500       <table class="memname">
501         <tr>
502           <td class="memname">static bool spi_is_busy </td>
503           <td>(</td>
504           <td class="paramtype">const <a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
505           <td class="paramname"><em>spi</em></td><td>)</td>
506           <td></td>
507         </tr>
508       </table>
509   </td>
510   <td class="mlabels-right">
511 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
512   </tr>
513 </table>
514 </div><div class="memdoc">
515
516 <p>Check whether SPI is busy. </p>
517 <dl class="params"><dt>Parameters</dt><dd>
518   <table class="params">
519     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
520   </table>
521   </dd>
522 </dl>
523 <dl class="section return"><dt>Returns</dt><dd>true if SPI is busy </dd></dl>
524
525 </div>
526 </div>
527 <a id="ga20dcaa3037e92bbcbab50b8635f102ff" name="ga20dcaa3037e92bbcbab50b8635f102ff"></a>
528 <h2 class="memtitle"><span class="permalink"><a href="#ga20dcaa3037e92bbcbab50b8635f102ff">&#9670;&nbsp;</a></span>spi_is_readable()</h2>
529
530 <div class="memitem">
531 <div class="memproto">
532 <table class="mlabels">
533   <tr>
534   <td class="mlabels-left">
535       <table class="memname">
536         <tr>
537           <td class="memname">static bool spi_is_readable </td>
538           <td>(</td>
539           <td class="paramtype">const <a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
540           <td class="paramname"><em>spi</em></td><td>)</td>
541           <td></td>
542         </tr>
543       </table>
544   </td>
545   <td class="mlabels-right">
546 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
547   </tr>
548 </table>
549 </div><div class="memdoc">
550
551 <p>Check whether a read can be done on SPI device. </p>
552 <dl class="params"><dt>Parameters</dt><dd>
553   <table class="params">
554     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
555   </table>
556   </dd>
557 </dl>
558 <dl class="section return"><dt>Returns</dt><dd>true if a read is possible i.e. data is present </dd></dl>
559
560 </div>
561 </div>
562 <a id="ga0d7c020fac16f57ee8f805000713e405" name="ga0d7c020fac16f57ee8f805000713e405"></a>
563 <h2 class="memtitle"><span class="permalink"><a href="#ga0d7c020fac16f57ee8f805000713e405">&#9670;&nbsp;</a></span>spi_is_writable()</h2>
564
565 <div class="memitem">
566 <div class="memproto">
567 <table class="mlabels">
568   <tr>
569   <td class="mlabels-left">
570       <table class="memname">
571         <tr>
572           <td class="memname">static bool spi_is_writable </td>
573           <td>(</td>
574           <td class="paramtype">const <a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
575           <td class="paramname"><em>spi</em></td><td>)</td>
576           <td></td>
577         </tr>
578       </table>
579   </td>
580   <td class="mlabels-right">
581 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
582   </tr>
583 </table>
584 </div><div class="memdoc">
585
586 <p>Check whether a write can be done on SPI device. </p>
587 <dl class="params"><dt>Parameters</dt><dd>
588   <table class="params">
589     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
590   </table>
591   </dd>
592 </dl>
593 <dl class="section return"><dt>Returns</dt><dd>false if no space is available to write. True if a write is possible </dd></dl>
594
595 </div>
596 </div>
597 <a id="ga743b7fbdf120a1b5fc098145e3ce8eaf" name="ga743b7fbdf120a1b5fc098145e3ce8eaf"></a>
598 <h2 class="memtitle"><span class="permalink"><a href="#ga743b7fbdf120a1b5fc098145e3ce8eaf">&#9670;&nbsp;</a></span>spi_read16_blocking()</h2>
599
600 <div class="memitem">
601 <div class="memproto">
602       <table class="memname">
603         <tr>
604           <td class="memname">int spi_read16_blocking </td>
605           <td>(</td>
606           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
607           <td class="paramname"><em>spi</em>, </td>
608         </tr>
609         <tr>
610           <td class="paramkey"></td>
611           <td></td>
612           <td class="paramtype">uint16_t&#160;</td>
613           <td class="paramname"><em>repeated_tx_data</em>, </td>
614         </tr>
615         <tr>
616           <td class="paramkey"></td>
617           <td></td>
618           <td class="paramtype">uint16_t *&#160;</td>
619           <td class="paramname"><em>dst</em>, </td>
620         </tr>
621         <tr>
622           <td class="paramkey"></td>
623           <td></td>
624           <td class="paramtype">size_t&#160;</td>
625           <td class="paramname"><em>len</em>&#160;</td>
626         </tr>
627         <tr>
628           <td></td>
629           <td>)</td>
630           <td></td><td></td>
631         </tr>
632       </table>
633 </div><div class="memdoc">
634
635 <p>Read from an SPI device. </p>
636 <p >Read <code>len</code> halfwords from SPI to <code>dst</code>. Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate. <code>repeated_tx_data</code> is output repeatedly on TX as data is read in from RX. Generally this can be 0, but some devices require a specific value here, e.g. SD cards expect 0xff</p>
637 <dl class="section note"><dt>Note</dt><dd>SPI should be initialised with 16 data_bits using <a class="el" href="group__hardware__spi.html#ga137168d01d302239d52420ad4f895d44">spi_set_format</a> first, otherwise this function will only read 8 data_bits.</dd></dl>
638 <dl class="params"><dt>Parameters</dt><dd>
639   <table class="params">
640     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
641     <tr><td class="paramname">repeated_tx_data</td><td>Buffer of data to write </td></tr>
642     <tr><td class="paramname">dst</td><td>Buffer for read data </td></tr>
643     <tr><td class="paramname">len</td><td>Length of buffer <code>dst</code> in halfwords </td></tr>
644   </table>
645   </dd>
646 </dl>
647 <dl class="section return"><dt>Returns</dt><dd>Number of halfwords written/read </dd></dl>
648
649 </div>
650 </div>
651 <a id="ga40ce84e76797f81872f12557e537fc48" name="ga40ce84e76797f81872f12557e537fc48"></a>
652 <h2 class="memtitle"><span class="permalink"><a href="#ga40ce84e76797f81872f12557e537fc48">&#9670;&nbsp;</a></span>spi_read_blocking()</h2>
653
654 <div class="memitem">
655 <div class="memproto">
656       <table class="memname">
657         <tr>
658           <td class="memname">int spi_read_blocking </td>
659           <td>(</td>
660           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
661           <td class="paramname"><em>spi</em>, </td>
662         </tr>
663         <tr>
664           <td class="paramkey"></td>
665           <td></td>
666           <td class="paramtype">uint8_t&#160;</td>
667           <td class="paramname"><em>repeated_tx_data</em>, </td>
668         </tr>
669         <tr>
670           <td class="paramkey"></td>
671           <td></td>
672           <td class="paramtype">uint8_t *&#160;</td>
673           <td class="paramname"><em>dst</em>, </td>
674         </tr>
675         <tr>
676           <td class="paramkey"></td>
677           <td></td>
678           <td class="paramtype">size_t&#160;</td>
679           <td class="paramname"><em>len</em>&#160;</td>
680         </tr>
681         <tr>
682           <td></td>
683           <td>)</td>
684           <td></td><td></td>
685         </tr>
686       </table>
687 </div><div class="memdoc">
688
689 <p>Read from an SPI device. </p>
690 <p >Read <code>len</code> bytes from SPI to <code>dst</code>. Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate. <code>repeated_tx_data</code> is output repeatedly on TX as data is read in from RX. Generally this can be 0, but some devices require a specific value here, e.g. SD cards expect 0xff</p>
691 <dl class="params"><dt>Parameters</dt><dd>
692   <table class="params">
693     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
694     <tr><td class="paramname">repeated_tx_data</td><td>Buffer of data to write </td></tr>
695     <tr><td class="paramname">dst</td><td>Buffer for read data </td></tr>
696     <tr><td class="paramname">len</td><td>Length of buffer <code>dst</code> </td></tr>
697   </table>
698   </dd>
699 </dl>
700 <dl class="section return"><dt>Returns</dt><dd>Number of bytes written/read </dd></dl>
701
702 </div>
703 </div>
704 <a id="ga37f4c04ce4165ac8c129226336a0b66c" name="ga37f4c04ce4165ac8c129226336a0b66c"></a>
705 <h2 class="memtitle"><span class="permalink"><a href="#ga37f4c04ce4165ac8c129226336a0b66c">&#9670;&nbsp;</a></span>spi_set_baudrate()</h2>
706
707 <div class="memitem">
708 <div class="memproto">
709       <table class="memname">
710         <tr>
711           <td class="memname">uint spi_set_baudrate </td>
712           <td>(</td>
713           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
714           <td class="paramname"><em>spi</em>, </td>
715         </tr>
716         <tr>
717           <td class="paramkey"></td>
718           <td></td>
719           <td class="paramtype">uint&#160;</td>
720           <td class="paramname"><em>baudrate</em>&#160;</td>
721         </tr>
722         <tr>
723           <td></td>
724           <td>)</td>
725           <td></td><td></td>
726         </tr>
727       </table>
728 </div><div class="memdoc">
729
730 <p>Set SPI baudrate. </p>
731 <p >Set SPI frequency as close as possible to baudrate, and return the actual achieved rate.</p>
732 <dl class="params"><dt>Parameters</dt><dd>
733   <table class="params">
734     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
735     <tr><td class="paramname">baudrate</td><td>Baudrate required in Hz, should be capable of a bitrate of at least 2Mbps, or higher, depending on system clock settings. </td></tr>
736   </table>
737   </dd>
738 </dl>
739 <dl class="section return"><dt>Returns</dt><dd>The actual baudrate set </dd></dl>
740
741 </div>
742 </div>
743 <a id="ga137168d01d302239d52420ad4f895d44" name="ga137168d01d302239d52420ad4f895d44"></a>
744 <h2 class="memtitle"><span class="permalink"><a href="#ga137168d01d302239d52420ad4f895d44">&#9670;&nbsp;</a></span>spi_set_format()</h2>
745
746 <div class="memitem">
747 <div class="memproto">
748 <table class="mlabels">
749   <tr>
750   <td class="mlabels-left">
751       <table class="memname">
752         <tr>
753           <td class="memname">static void spi_set_format </td>
754           <td>(</td>
755           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
756           <td class="paramname"><em>spi</em>, </td>
757         </tr>
758         <tr>
759           <td class="paramkey"></td>
760           <td></td>
761           <td class="paramtype">uint&#160;</td>
762           <td class="paramname"><em>data_bits</em>, </td>
763         </tr>
764         <tr>
765           <td class="paramkey"></td>
766           <td></td>
767           <td class="paramtype"><a class="el" href="group__hardware__spi.html#ga49a77d9a0320db6d3451a9dda2b8a24b">spi_cpol_t</a>&#160;</td>
768           <td class="paramname"><em>cpol</em>, </td>
769         </tr>
770         <tr>
771           <td class="paramkey"></td>
772           <td></td>
773           <td class="paramtype"><a class="el" href="group__hardware__spi.html#ga9850de61d3f6dcacbfb4e5cc5a7d2951">spi_cpha_t</a>&#160;</td>
774           <td class="paramname"><em>cpha</em>, </td>
775         </tr>
776         <tr>
777           <td class="paramkey"></td>
778           <td></td>
779           <td class="paramtype">__unused <a class="el" href="group__hardware__spi.html#gaa9e8effacf4291301048ef7df03d353e">spi_order_t</a>&#160;</td>
780           <td class="paramname"><em>order</em>&#160;</td>
781         </tr>
782         <tr>
783           <td></td>
784           <td>)</td>
785           <td></td><td></td>
786         </tr>
787       </table>
788   </td>
789   <td class="mlabels-right">
790 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
791   </tr>
792 </table>
793 </div><div class="memdoc">
794
795 <p>Configure SPI. </p>
796 <p >Configure how the SPI serialises and deserialises data on the wire</p>
797 <dl class="params"><dt>Parameters</dt><dd>
798   <table class="params">
799     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
800     <tr><td class="paramname">data_bits</td><td>Number of data bits per transfer. Valid values 4..16. </td></tr>
801     <tr><td class="paramname">cpol</td><td>SSPCLKOUT polarity, applicable to Motorola SPI frame format only. </td></tr>
802     <tr><td class="paramname">cpha</td><td>SSPCLKOUT phase, applicable to Motorola SPI frame format only </td></tr>
803     <tr><td class="paramname">order</td><td>Must be SPI_MSB_FIRST, no other values supported on the PL022 </td></tr>
804   </table>
805   </dd>
806 </dl>
807
808 </div>
809 </div>
810 <a id="ga127e4bf0fc1d7d271d2e9160c6e3b722" name="ga127e4bf0fc1d7d271d2e9160c6e3b722"></a>
811 <h2 class="memtitle"><span class="permalink"><a href="#ga127e4bf0fc1d7d271d2e9160c6e3b722">&#9670;&nbsp;</a></span>spi_set_slave()</h2>
812
813 <div class="memitem">
814 <div class="memproto">
815 <table class="mlabels">
816   <tr>
817   <td class="mlabels-left">
818       <table class="memname">
819         <tr>
820           <td class="memname">static void spi_set_slave </td>
821           <td>(</td>
822           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
823           <td class="paramname"><em>spi</em>, </td>
824         </tr>
825         <tr>
826           <td class="paramkey"></td>
827           <td></td>
828           <td class="paramtype">bool&#160;</td>
829           <td class="paramname"><em>slave</em>&#160;</td>
830         </tr>
831         <tr>
832           <td></td>
833           <td>)</td>
834           <td></td><td></td>
835         </tr>
836       </table>
837   </td>
838   <td class="mlabels-right">
839 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
840   </tr>
841 </table>
842 </div><div class="memdoc">
843
844 <p>Set SPI master/slave. </p>
845 <p >Configure the SPI for master- or slave-mode operation. By default, <a class="el" href="group__hardware__spi.html#ga1dba14fb5488b5e4a69b30678f774df0" title="Initialise SPI instances.">spi_init()</a> sets master-mode.</p>
846 <dl class="params"><dt>Parameters</dt><dd>
847   <table class="params">
848     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
849     <tr><td class="paramname">slave</td><td>true to set SPI device as a slave device, false for master. </td></tr>
850   </table>
851   </dd>
852 </dl>
853
854 </div>
855 </div>
856 <a id="gacff6be19b2de92a34b295597f3ae8572" name="gacff6be19b2de92a34b295597f3ae8572"></a>
857 <h2 class="memtitle"><span class="permalink"><a href="#gacff6be19b2de92a34b295597f3ae8572">&#9670;&nbsp;</a></span>spi_write16_blocking()</h2>
858
859 <div class="memitem">
860 <div class="memproto">
861       <table class="memname">
862         <tr>
863           <td class="memname">int spi_write16_blocking </td>
864           <td>(</td>
865           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
866           <td class="paramname"><em>spi</em>, </td>
867         </tr>
868         <tr>
869           <td class="paramkey"></td>
870           <td></td>
871           <td class="paramtype">const uint16_t *&#160;</td>
872           <td class="paramname"><em>src</em>, </td>
873         </tr>
874         <tr>
875           <td class="paramkey"></td>
876           <td></td>
877           <td class="paramtype">size_t&#160;</td>
878           <td class="paramname"><em>len</em>&#160;</td>
879         </tr>
880         <tr>
881           <td></td>
882           <td>)</td>
883           <td></td><td></td>
884         </tr>
885       </table>
886 </div><div class="memdoc">
887
888 <p>Write to an SPI device. </p>
889 <p >Write <code>len</code> halfwords from <code>src</code> to SPI. Discard any data received back. Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate.</p>
890 <dl class="section note"><dt>Note</dt><dd>SPI should be initialised with 16 data_bits using <a class="el" href="group__hardware__spi.html#ga137168d01d302239d52420ad4f895d44">spi_set_format</a> first, otherwise this function will only write 8 data_bits.</dd></dl>
891 <dl class="params"><dt>Parameters</dt><dd>
892   <table class="params">
893     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
894     <tr><td class="paramname">src</td><td>Buffer of data to write </td></tr>
895     <tr><td class="paramname">len</td><td>Length of buffers </td></tr>
896   </table>
897   </dd>
898 </dl>
899 <dl class="section return"><dt>Returns</dt><dd>Number of halfwords written/read </dd></dl>
900
901 </div>
902 </div>
903 <a id="gad3b96ae828fec8af4b0617db7e904019" name="gad3b96ae828fec8af4b0617db7e904019"></a>
904 <h2 class="memtitle"><span class="permalink"><a href="#gad3b96ae828fec8af4b0617db7e904019">&#9670;&nbsp;</a></span>spi_write16_read16_blocking()</h2>
905
906 <div class="memitem">
907 <div class="memproto">
908       <table class="memname">
909         <tr>
910           <td class="memname">int spi_write16_read16_blocking </td>
911           <td>(</td>
912           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
913           <td class="paramname"><em>spi</em>, </td>
914         </tr>
915         <tr>
916           <td class="paramkey"></td>
917           <td></td>
918           <td class="paramtype">const uint16_t *&#160;</td>
919           <td class="paramname"><em>src</em>, </td>
920         </tr>
921         <tr>
922           <td class="paramkey"></td>
923           <td></td>
924           <td class="paramtype">uint16_t *&#160;</td>
925           <td class="paramname"><em>dst</em>, </td>
926         </tr>
927         <tr>
928           <td class="paramkey"></td>
929           <td></td>
930           <td class="paramtype">size_t&#160;</td>
931           <td class="paramname"><em>len</em>&#160;</td>
932         </tr>
933         <tr>
934           <td></td>
935           <td>)</td>
936           <td></td><td></td>
937         </tr>
938       </table>
939 </div><div class="memdoc">
940
941 <p>Write/Read half words to/from an SPI device. </p>
942 <p >Write <code>len</code> halfwords from <code>src</code> to SPI. Simultaneously read <code>len</code> halfwords from SPI to <code>dst</code>. Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate.</p>
943 <dl class="section note"><dt>Note</dt><dd>SPI should be initialised with 16 data_bits using <a class="el" href="group__hardware__spi.html#ga137168d01d302239d52420ad4f895d44">spi_set_format</a> first, otherwise this function will only read/write 8 data_bits.</dd></dl>
944 <dl class="params"><dt>Parameters</dt><dd>
945   <table class="params">
946     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
947     <tr><td class="paramname">src</td><td>Buffer of data to write </td></tr>
948     <tr><td class="paramname">dst</td><td>Buffer for read data </td></tr>
949     <tr><td class="paramname">len</td><td>Length of BOTH buffers in halfwords </td></tr>
950   </table>
951   </dd>
952 </dl>
953 <dl class="section return"><dt>Returns</dt><dd>Number of halfwords written/read </dd></dl>
954
955 </div>
956 </div>
957 <a id="ga541ec2a1eee4c7fee2134a8415f3b4c8" name="ga541ec2a1eee4c7fee2134a8415f3b4c8"></a>
958 <h2 class="memtitle"><span class="permalink"><a href="#ga541ec2a1eee4c7fee2134a8415f3b4c8">&#9670;&nbsp;</a></span>spi_write_blocking()</h2>
959
960 <div class="memitem">
961 <div class="memproto">
962       <table class="memname">
963         <tr>
964           <td class="memname">int spi_write_blocking </td>
965           <td>(</td>
966           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
967           <td class="paramname"><em>spi</em>, </td>
968         </tr>
969         <tr>
970           <td class="paramkey"></td>
971           <td></td>
972           <td class="paramtype">const uint8_t *&#160;</td>
973           <td class="paramname"><em>src</em>, </td>
974         </tr>
975         <tr>
976           <td class="paramkey"></td>
977           <td></td>
978           <td class="paramtype">size_t&#160;</td>
979           <td class="paramname"><em>len</em>&#160;</td>
980         </tr>
981         <tr>
982           <td></td>
983           <td>)</td>
984           <td></td><td></td>
985         </tr>
986       </table>
987 </div><div class="memdoc">
988
989 <p>Write to an SPI device, blocking. </p>
990 <p >Write <code>len</code> bytes from <code>src</code> to SPI, and discard any data received back Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate.</p>
991 <dl class="params"><dt>Parameters</dt><dd>
992   <table class="params">
993     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
994     <tr><td class="paramname">src</td><td>Buffer of data to write </td></tr>
995     <tr><td class="paramname">len</td><td>Length of <code>src</code> </td></tr>
996   </table>
997   </dd>
998 </dl>
999 <dl class="section return"><dt>Returns</dt><dd>Number of bytes written/read </dd></dl>
1000
1001 </div>
1002 </div>
1003 <a id="gabb840d4e3db64ea70fad6bb740717910" name="gabb840d4e3db64ea70fad6bb740717910"></a>
1004 <h2 class="memtitle"><span class="permalink"><a href="#gabb840d4e3db64ea70fad6bb740717910">&#9670;&nbsp;</a></span>spi_write_read_blocking()</h2>
1005
1006 <div class="memitem">
1007 <div class="memproto">
1008       <table class="memname">
1009         <tr>
1010           <td class="memname">int spi_write_read_blocking </td>
1011           <td>(</td>
1012           <td class="paramtype"><a class="el" href="rp2__common_2hardware__spi_2include_2hardware_2spi_8h.html#a9b7b2428cfc34b20c3857980811b51a9">spi_inst_t</a> *&#160;</td>
1013           <td class="paramname"><em>spi</em>, </td>
1014         </tr>
1015         <tr>
1016           <td class="paramkey"></td>
1017           <td></td>
1018           <td class="paramtype">const uint8_t *&#160;</td>
1019           <td class="paramname"><em>src</em>, </td>
1020         </tr>
1021         <tr>
1022           <td class="paramkey"></td>
1023           <td></td>
1024           <td class="paramtype">uint8_t *&#160;</td>
1025           <td class="paramname"><em>dst</em>, </td>
1026         </tr>
1027         <tr>
1028           <td class="paramkey"></td>
1029           <td></td>
1030           <td class="paramtype">size_t&#160;</td>
1031           <td class="paramname"><em>len</em>&#160;</td>
1032         </tr>
1033         <tr>
1034           <td></td>
1035           <td>)</td>
1036           <td></td><td></td>
1037         </tr>
1038       </table>
1039 </div><div class="memdoc">
1040
1041 <p>Write/Read to/from an SPI device. </p>
1042 <p >Write <code>len</code> bytes from <code>src</code> to SPI. Simultaneously read <code>len</code> bytes from SPI to <code>dst</code>. Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate.</p>
1043 <dl class="params"><dt>Parameters</dt><dd>
1044   <table class="params">
1045     <tr><td class="paramname">spi</td><td>SPI instance specifier, either <a class="el" href="group__hardware__spi.html#ga9d931d2e2e5b1dfd8d5f1dea80df4dbd">spi0</a> or <a class="el" href="group__hardware__spi.html#ga3de59ab064bc9405b059edce4366c694">spi1</a> </td></tr>
1046     <tr><td class="paramname">src</td><td>Buffer of data to write </td></tr>
1047     <tr><td class="paramname">dst</td><td>Buffer for read data </td></tr>
1048     <tr><td class="paramname">len</td><td>Length of BOTH buffers </td></tr>
1049   </table>
1050   </dd>
1051 </dl>
1052 <dl class="section return"><dt>Returns</dt><dd>Number of bytes written/read </dd></dl>
1053
1054 </div>
1055 </div>
1056 </div><!-- contents -->
1057 </div><!-- doc-content -->
1058
1059         <script src="main.js"></script>
1060 </body>
1061 </html>
This page took 0.094976 seconds and 4 git commands to generate.