|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
刚开始学习nRF,有个很简单的问题想要请教大神们: + Z7 L* y, C+ N' ^3 q# t
* K" D# D4 O- d5 i6 U _/ W) M
下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的?
1 ]- k9 h; U" O2 M/****************************************************************************************************
8 ~5 F7 g! }( J- S2 j9 C( U函数:uint SPI_RW(uint uchar)
) g( ]1 f {/ o- t7 @8 Q功能:NRF24L01的SPI写
: T: C$ V3 X T! O4 }/ d' y, ?8 M***************************************************************************************************/ * W: s& N) R; _5 }3 F
char SPI_RW(char data)
5 _2 ]: [6 P, ?{
6 k4 u4 T8 j ?char i,temp=0;
5 M1 U Y; ?. U for(i=0;i<8;i++) // output 8-bit 1 {2 D# U" Z" W0 Y7 a% k) B
{ ! b( B. q3 H" }; ~5 {
if(data & 0x80) + ~9 @& k4 ]* e2 B; n
{
8 x- r7 D. s0 A0 d* jHign_24L01_MOSI ; // output 'uchar', MSB to MOSI
; P$ k1 D: v6 G) M0 ~0 \} & l( Y' w0 y. s
else 3 E5 M7 e) T4 ~- f; N
{
! b+ v0 ~7 ~8 e Low_24L01_MOSI; 3 z$ v; k1 g, g# A8 Y6 v- d
} ( p) ?% u" k) U, _
data = (data << 1); // shift next bit into MSB..
# [; M/ x" z! Y* a: qtemp<<=1; - L, X a) F. ?5 Z. t* c
Hign_24L01_SCK ; // Set SCK high.. 2 w0 f1 z% w, g: {6 ~( P: Q) n( D
if(Read_24L01_MISO )temp++; // capture current MISO bit 5 Y( a& J0 w8 C: L
Low_24L01_SCK; // ..then set SCK low again 2 P0 W$ [1 }: N
} ( P# u( @) O/ v$ `% z& c
return(temp); // return read uchar ! K& A" M0 h0 Z; c1 X$ [0 m) N
}
* |/ t1 ^0 [1 f, S% A( w# t0 l' O |
|