|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
刚开始学习nRF,有个很简单的问题想要请教大神们:
/ A W* W% Z9 ~
" Q0 ]: l7 J% i L" i; F. p$ K4 j下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的? 8 r) f5 R" N% h6 \
/**************************************************************************************************** # K+ }/ D/ M* o4 `8 Z2 K3 n1 q0 Y) @
函数:uint SPI_RW(uint uchar)
) J& ? C, y: R! E3 u0 d& M& \/ {功能:NRF24L01的SPI写 6 y/ u8 o; L4 v. Y1 w1 w1 ?9 P
***************************************************************************************************/
! L* i1 _' B* F; p& V: @: Xchar SPI_RW(char data) 3 I) a r2 q/ s
{ % R, N4 m$ W) S; T% c1 l/ m5 S
char i,temp=0;
& k r6 ]' P/ x for(i=0;i<8;i++) // output 8-bit ' J; p4 Y/ B. ~- g3 \
{ + I7 J6 w6 m, r# H* Y
if(data & 0x80)
- A) Z* ?; H$ ]5 p{
g3 t. u# h: V. ?" u. X) OHign_24L01_MOSI ; // output 'uchar', MSB to MOSI 8 J z- q7 E+ c1 |% S" B5 j" w
} W) Q6 K: I9 H" j7 w& B3 N
else $ s1 b: F9 l* s5 X
{ ) ]$ ]* I3 {5 H% u& O
Low_24L01_MOSI;
% Z: O4 E$ |; [+ l# F} 4 O* g' ^! p, y+ [% L
data = (data << 1); // shift next bit into MSB..
: D; D+ Z3 A7 n6 e) Ytemp<<=1; - T5 E/ U8 J7 K" R% E6 L+ b ^" \
Hign_24L01_SCK ; // Set SCK high.. $ Y+ X: v- P' B+ A, P W3 O
if(Read_24L01_MISO )temp++; // capture current MISO bit
4 T2 V5 ?% H# {. pLow_24L01_SCK; // ..then set SCK low again
6 `$ f4 t0 g! C# G" T, ?8 j; v% v } G U" v8 i6 V/ k
return(temp); // return read uchar
2 h' e/ A4 |4 g3 L}: \. ~. L- X0 ^' O" I' G( H& `' q5 z
|
|