📄 nrf24l01_8c-source.html
字号:
<a name="l00247"></a>00247 <a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> = <a class="code" href="nrf24l01_8c.html#af5c055cad67312ebfb0361c281cbd34">SPI_Send_command_with_ADDR</a>(<a class="code" href="nrf24l01_8h.html#3b68b214d5753039d2c156ad57cd7153">W_REGISTER</a>, <a class="code" href="nrf24l01_8h.html#060e61d8f6e7ad28984540faa85cdecf">RX_PW_P0</a>, 1);<a name="l00248"></a>00248 <span class="comment">//Write RX_PW_P1 register -> Set number of bytes in RX payload in data pipe1 -> 1 byte</span><a name="l00249"></a>00249 <a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> = <a class="code" href="nrf24l01_8c.html#af5c055cad67312ebfb0361c281cbd34">SPI_Send_command_with_ADDR</a>(<a class="code" href="nrf24l01_8h.html#3b68b214d5753039d2c156ad57cd7153">W_REGISTER</a>, <a class="code" href="nrf24l01_8h.html#a260ec97512905cec17f8ade82bc550d">RX_PW_P1</a>, 1);<a name="l00250"></a>00250 <a class="code" href="nrf24l01_8c.html#0eb561cc69d3336ac273f4246ee7e631">NRF_prepareForReceive</a> ();<a name="l00251"></a>00251 }<a name="l00252"></a>00252 <a name="l00260"></a><a class="code" href="nrf24l01_8h.html#4015c7b6345fb495c62de60a81c9457e">00260</a> <span class="keywordtype">void</span> <a class="code" href="nrf24l01_8c.html#4015c7b6345fb495c62de60a81c9457e">NRF_send</a> (uint8_t byte)<a name="l00261"></a>00261 {<a name="l00262"></a>00262 uint8_t status_temp;<a name="l00263"></a>00263 <a name="l00264"></a>00264 <span class="comment">// Chip enable low</span><a name="l00265"></a>00265 <a class="code" href="nrf24l01_8c.html#2e2fcc38fc7a1cbb847a00bf8bb59d18">CE_LOW</a>();<a name="l00266"></a>00266 <a name="l00267"></a>00267 <span class="comment">// Setting for TX device</span><a name="l00268"></a>00268 <span class="comment">// Write CONFIG register -> 00001010 - CRC enable, power-up, TX</span><a name="l00269"></a>00269 <a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> = <a class="code" href="nrf24l01_8c.html#af5c055cad67312ebfb0361c281cbd34">SPI_Send_command_with_ADDR</a> (<a class="code" href="nrf24l01_8h.html#3b68b214d5753039d2c156ad57cd7153">W_REGISTER</a>,<a class="code" href="nrf24l01_8h.html#37bdababe611f11d0d4c5ecdadb31487">CONFIG_REG_ADDR</a>, 0x0A);<a name="l00270"></a>00270 <a name="l00271"></a>00271 <span class="comment">// Send payload - send any data</span><a name="l00272"></a>00272 <a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> = <a class="code" href="nrf24l01_8c.html#15f5e33b83469e385132981afe4dd382">SPI_Send_command_without_ADDR</a> (<a class="code" href="nrf24l01_8h.html#fd12673bc8ca8559b0eee395e8845982">W_TX_PAYLOAD</a>, byte);<a name="l00273"></a>00273 <a name="l00274"></a>00274 <span class="comment">// Pulse for CE -> starts the transmission.</span><a name="l00275"></a>00275 <a class="code" href="nrf24l01_8c.html#46de8521b533215eafef482a6dee9a7d">CE_HIGH</a>();<a name="l00276"></a>00276 <a class="code" href="nrf24l01_8c.html#2e2fcc38fc7a1cbb847a00bf8bb59d18">CE_LOW</a>();<a name="l00277"></a>00277 <a name="l00278"></a>00278 <span class="comment">// Read STATUS register</span><a name="l00279"></a>00279 <a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> = <a class="code" href="nrf24l01_8c.html#15f5e33b83469e385132981afe4dd382">SPI_Send_command_without_ADDR</a>(<a class="code" href="nrf24l01_8h.html#7b5a6dc6c173a198aedd1eb7808d6992">NRF_NOP</a>, <a class="code" href="nrf24l01_8h.html#7b5a6dc6c173a198aedd1eb7808d6992">NRF_NOP</a>);<a name="l00280"></a>00280 <a name="l00281"></a>00281 <span class="comment">// if exceed number of transmision packets</span><a name="l00282"></a>00282 <span class="keywordflow">if</span> ((<a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> & <a class="code" href="nrf24l01_8h.html#b4482ead4f3b452a032f63ac03ee1870">MAX_RT</a>) != 0) <a name="l00283"></a>00283 {<a name="l00284"></a>00284 <a name="l00285"></a>00285 <span class="comment">// Clear MAX_RT bit in status register</span><a name="l00286"></a>00286 status_temp = <a class="code" href="nrf24l01_8c.html#af5c055cad67312ebfb0361c281cbd34">SPI_Send_command_with_ADDR</a>(<a class="code" href="nrf24l01_8h.html#3b68b214d5753039d2c156ad57cd7153">W_REGISTER</a>, <a class="code" href="nrf24l01_8h.html#117d55643ed1138ff52f6cefd72cb876">STATUS_ADDR</a>, (<a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a>|MAX_RT));<a name="l00287"></a>00287 <a name="l00288"></a>00288 <span class="comment">// No communication event here</span><a name="l00289"></a>00289 <a class="code" href="lcd_8c.html#745f4e24d600186db3dc2fea9b4a52d6">LCD_printf</a> (<span class="stringliteral">"MAX_RT\n"</span>);<a name="l00290"></a>00290 <a name="l00291"></a>00291 <span class="comment">// Flush TX FIFO (in TX mode)</span><a name="l00292"></a>00292 status_temp = <a class="code" href="nrf24l01_8c.html#15f5e33b83469e385132981afe4dd382">SPI_Send_command_without_ADDR</a>(<a class="code" href="nrf24l01_8h.html#bce47e8066832b6ac4e18162a79859b4">FLUSH_TX</a>, <a class="code" href="nrf24l01_8h.html#7b5a6dc6c173a198aedd1eb7808d6992">NRF_NOP</a>); <span class="comment">// XXX test code</span><a name="l00293"></a>00293 }<a name="l00294"></a>00294 <a name="l00295"></a>00295 <span class="comment">// If packet sent on TX</span><a name="l00296"></a>00296 <span class="keywordflow">if</span> ((<a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> & <a class="code" href="nrf24l01_8h.html#b5f5243908a39ffd514fe701e9749bdc">TX_DS</a>) != 0) <a name="l00297"></a>00297 {<a name="l00298"></a>00298 <span class="comment">// Clear TX_DS bit in status register</span><a name="l00299"></a>00299 status_temp = <a class="code" href="nrf24l01_8c.html#af5c055cad67312ebfb0361c281cbd34">SPI_Send_command_with_ADDR</a>(<a class="code" href="nrf24l01_8h.html#3b68b214d5753039d2c156ad57cd7153">W_REGISTER</a>, <a class="code" href="nrf24l01_8h.html#117d55643ed1138ff52f6cefd72cb876">STATUS_ADDR</a>, (<a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a>|TX_DS));<a name="l00300"></a>00300 <a name="l00301"></a>00301 <span class="comment">// Your code here</span><a name="l00302"></a>00302 <span class="comment">//LCD_printf ("TX_DS\n");</span><a name="l00303"></a>00303 }<a name="l00304"></a>00304 <a name="l00305"></a>00305 <span class="comment">// If TX full</span><a name="l00306"></a>00306 <span class="keywordflow">if</span> ((<a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> & <a class="code" href="nrf24l01_8h.html#f3b1baf3a7a57b7471443d1ff002c778">TX_FULL</a>) != 0)<a name="l00307"></a>00307 {<a name="l00308"></a>00308 <span class="comment">// Flush TX FIFO (in TX mode)</span><a name="l00309"></a>00309 status_temp = <a class="code" href="nrf24l01_8c.html#15f5e33b83469e385132981afe4dd382">SPI_Send_command_without_ADDR</a>(<a class="code" href="nrf24l01_8h.html#bce47e8066832b6ac4e18162a79859b4">FLUSH_TX</a>, <a class="code" href="nrf24l01_8h.html#7b5a6dc6c173a198aedd1eb7808d6992">NRF_NOP</a>);<a name="l00310"></a>00310 <a name="l00311"></a>00311 <span class="comment">// Your code here</span><a name="l00312"></a>00312 <span class="comment">// ...</span><a name="l00313"></a>00313 <a class="code" href="lcd_8c.html#745f4e24d600186db3dc2fea9b4a52d6">LCD_printf</a> (<span class="stringliteral">"TX_FULL\n"</span>);<a name="l00314"></a>00314 }<a name="l00315"></a>00315 <a name="l00316"></a>00316 }<a name="l00317"></a>00317 <a name="l00321"></a><a class="code" href="nrf24l01_8h.html#0eb561cc69d3336ac273f4246ee7e631">00321</a> <span class="keywordtype">void</span> <a class="code" href="nrf24l01_8c.html#0eb561cc69d3336ac273f4246ee7e631">NRF_prepareForReceive</a> ()<a name="l00322"></a>00322 {<a name="l00323"></a>00323 <span class="comment">// Setting for RX device</span><a name="l00324"></a>00324 <span class="comment">//Write CONFIG register -> 00001010 - CRC enable, power-up, RX</span><a name="l00325"></a>00325 <a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> = <a class="code" href="nrf24l01_8c.html#af5c055cad67312ebfb0361c281cbd34">SPI_Send_command_with_ADDR</a>(<a class="code" href="nrf24l01_8h.html#3b68b214d5753039d2c156ad57cd7153">W_REGISTER</a>,<a class="code" href="nrf24l01_8h.html#37bdababe611f11d0d4c5ecdadb31487">CONFIG_REG_ADDR</a>, 0x0B);<a name="l00326"></a>00326 }<a name="l00327"></a>00327 <a name="l00337"></a><a class="code" href="nrf24l01_8h.html#b7ad95e7d453872170e9a6d1d2db6fc3">00337</a> <a class="code" href="common_8h.html#449976458a084f880dc8e3d29e7eb6f5">bool_t</a> <a class="code" href="nrf24l01_8c.html#b7ad95e7d453872170e9a6d1d2db6fc3">NRF_receive</a> (uint8_t *<span class="keyword">const</span> byte)<a name="l00338"></a>00338 {<a name="l00339"></a>00339 uint8_t payload;<a name="l00340"></a>00340 uint8_t status_temp;<a name="l00341"></a>00341 <a name="l00342"></a>00342 <a class="code" href="nrf24l01_8c.html#46de8521b533215eafef482a6dee9a7d">CE_HIGH</a> ();<a name="l00343"></a>00343 <span class="keywordflow">if</span> (<a class="code" href="nrf24l01_8h.html#5a29d3246010ea1c5e45d4166761cd97">IRQ</a> ()) <span class="comment">// check interrupt line of nRF24L01...</span><a name="l00344"></a>00344 {<a name="l00345"></a>00345 <span class="comment">// Read STATUS status register</span><a name="l00346"></a>00346 <a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> = <a class="code" href="nrf24l01_8c.html#15f5e33b83469e385132981afe4dd382">SPI_Send_command_without_ADDR</a>(<a class="code" href="nrf24l01_8h.html#7b5a6dc6c173a198aedd1eb7808d6992">NRF_NOP</a>, <a class="code" href="nrf24l01_8h.html#7b5a6dc6c173a198aedd1eb7808d6992">NRF_NOP</a>);<a name="l00347"></a>00347 <a name="l00348"></a>00348 <span class="comment">// Set high when new data arrives RX FIFO</span><a name="l00349"></a>00349 <span class="keywordflow">if</span> ((<a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a> & <a class="code" href="nrf24l01_8h.html#312d1f2745a86149b27cff7d61e715df">RX_DR</a>) != 0)<a name="l00350"></a>00350 {<a name="l00351"></a>00351 <span class="comment">// Chip enable low</span><a name="l00352"></a>00352 <a class="code" href="nrf24l01_8c.html#2e2fcc38fc7a1cbb847a00bf8bb59d18">CE_LOW</a>();<a name="l00353"></a>00353 <a name="l00354"></a>00354 <span class="comment">//Read payload data</span><a name="l00355"></a>00355 payload = <a class="code" href="nrf24l01_8c.html#15f5e33b83469e385132981afe4dd382">SPI_Send_command_without_ADDR</a>(<a class="code" href="nrf24l01_8h.html#462d8c2314b823b724574c1ca73225a6">R_RX_PAYLOAD</a>, <a class="code" href="nrf24l01_8h.html#7b5a6dc6c173a198aedd1eb7808d6992">NRF_NOP</a>);<a name="l00356"></a>00356 <a name="l00357"></a>00357 <span class="comment">// Clear RX_DR bit in status register</span><a name="l00358"></a>00358 status_temp = <a class="code" href="nrf24l01_8c.html#af5c055cad67312ebfb0361c281cbd34">SPI_Send_command_with_ADDR</a>(<a class="code" href="nrf24l01_8h.html#3b68b214d5753039d2c156ad57cd7153">W_REGISTER</a>, <a class="code" href="nrf24l01_8h.html#117d55643ed1138ff52f6cefd72cb876">STATUS_ADDR</a>, (<a class="code" href="nrf24l01_8c.html#54849a1c58ce64ba16a055ad9555a027">status</a>|RX_DR));<a name="l00359"></a>00359 <a name="l00360"></a>00360 *byte = payload;<a name="l00361"></a>00361 <a name="l00362"></a>00362 <span class="comment">// Flush RX FIFO</span><a name="l00363"></a>00363 status_temp = <a class="code" href="nrf24l01_8c.html#15f5e33b83469e385132981afe4dd382">SPI_Send_command_without_ADDR</a>(<a class="code" href="nrf24l01_8h.html#b2418a6171d7f1eefd458927fdfe7057">FLUSH_RX</a>, <a class="code" href="nrf24l01_8h.html#7b5a6dc6c173a198aedd1eb7808d6992">NRF_NOP</a>); <span class="comment">// XXX test code</span><a name="l00364"></a>00364 <span class="keywordflow">return</span> <a class="code" href="common_8h.html#a8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>;<a name="l00365"></a>00365 }<a name="l00366"></a>00366 }<a name="l00367"></a>00367 <span class="keywordflow">return</span> <a class="code" href="common_8h.html#a93f0eb578d23995850d61f7d61c55c1">FALSE</a>;<a name="l00368"></a>00368 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Oct 21 19:25:35 2007 for Sample MSP430-4619LCD Project by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -