|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
刚开始学习nRF,有个很简单的问题想要请教大神们: ' q" B4 N4 E9 j. P$ `
% x; m6 y! A3 j) j4 U6 [7 z; ^下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的?
: q1 \4 A* z: Z$ t0 r/ b/**************************************************************************************************** ; \+ e! s( e" s
函数:uint SPI_RW(uint uchar)
* ?* o; Z" K; y: P8 D% u功能:NRF24L01的SPI写
4 Z; h$ g1 i; V$ W***************************************************************************************************/ ) _6 K* ]7 J; f7 A
char SPI_RW(char data) , i% k/ q0 M* i6 t
{ 7 t6 i% _: `* Q8 t2 u4 {$ X. t
char i,temp=0;
) u& {: c7 q: W7 {6 E for(i=0;i<8;i++) // output 8-bit # h. S( P1 m1 d: A) C
{ % p+ ?! p$ k# P0 l* x2 Q, I+ f
if(data & 0x80)
; p- r l8 R0 M: ~- J{
' N9 Q; H9 x; I' x' q; nHign_24L01_MOSI ; // output 'uchar', MSB to MOSI 5 K! w6 k, B D7 _5 D- t, d
}
+ O; t" ^2 v6 e/ U: velse
5 j5 n! s8 {$ D. ?{ 7 D. a, n; Y) x/ G( D/ x/ W
Low_24L01_MOSI; # F( @$ H e& L
} 6 X, v7 O7 Q" \
data = (data << 1); // shift next bit into MSB..
' w& a! D0 O5 V2 x% r! ^temp<<=1;
) Q2 ^% L4 Q6 \- EHign_24L01_SCK ; // Set SCK high.. . i: f; K# i7 X7 E" ], R1 d$ k
if(Read_24L01_MISO )temp++; // capture current MISO bit * q* [4 u, W" ~2 n* S
Low_24L01_SCK; // ..then set SCK low again 6 ^8 i/ B% P X8 z9 Q Q
}
) Z A, `8 F3 y1 Q+ j return(temp); // return read uchar
4 h* w& A) W; X* N}
* M' j0 z3 k$ I t( k |
|