|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
刚开始学习nRF,有个很简单的问题想要请教大神们:
5 K+ i: a' _) y$ [2 J ] X7 }% e2 h/ T, F7 c8 i# j
下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的?
6 e+ P" {5 E, I* K/**************************************************************************************************** * C% q- H' l6 z$ _3 e. V- e& F
函数:uint SPI_RW(uint uchar) 4 x. ~* L! F- x# b5 c5 v6 }0 u% x2 U7 @ q
功能:NRF24L01的SPI写 8 k; i8 e) L) X- s: |& P6 ?- S
***************************************************************************************************/ $ W. J1 i+ y2 Z1 Q/ j
char SPI_RW(char data)
3 ?+ Q* U/ l# Q! R( V: |% N7 @" I{
. v C. Q: Y; }0 G# Hchar i,temp=0;
) E7 { m! H+ ~ for(i=0;i<8;i++) // output 8-bit 1 R; u3 X4 O( N+ L, Z
{ 4 \* v' E5 _" R ^. E+ M4 k# s
if(data & 0x80)
3 g& g: l/ N n- _{
& @0 }$ D) X8 E, {; @5 ~Hign_24L01_MOSI ; // output 'uchar', MSB to MOSI ) L- m1 z# c0 b( w7 H
} : H: A5 v& ~% D' V& P+ P
else $ ]7 ~8 x; w- S- q" v
{ * v* b; g4 ^2 ^5 n: ?) Z
Low_24L01_MOSI; 8 X5 N" M0 z7 B, A8 C- Z8 R
}
: k/ w, H* @0 W/ K! b$ Qdata = (data << 1); // shift next bit into MSB.. f/ ]9 O0 F/ w/ ^# l% B
temp<<=1;
7 x) F X8 R6 u/ K6 jHign_24L01_SCK ; // Set SCK high..
! M6 W W& g: w3 O# }# Qif(Read_24L01_MISO )temp++; // capture current MISO bit ; O: F6 W. l9 q3 l) J) S
Low_24L01_SCK; // ..then set SCK low again * P7 i4 L2 X) g k# h
}
/ j( n. q2 I$ e: S* e8 C2 i$ e/ o return(temp); // return read uchar
+ P- L# N- q2 C. V' @}. T o5 `) I; K
|
|