|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
刚开始学习nRF,有个很简单的问题想要请教大神们:
: l7 [/ M$ c& a+ Q4 t( o2 _
7 Q+ p! g: u7 }) k) D2 Z; M: R下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的? % s7 O+ s! ~& K0 O8 Q* W
/****************************************************************************************************
8 L' \# e4 a6 l0 w! L6 i! L5 ^函数:uint SPI_RW(uint uchar) 9 v0 w( V, N5 o, w6 @$ ]
功能:NRF24L01的SPI写
: a1 |5 M ~6 z( {5 {- K4 _0 `***************************************************************************************************/ - T H, Y* Z1 B! a+ S$ D- O+ ]
char SPI_RW(char data)
. n* J, H5 o3 E' B4 k/ ?9 D{
2 E! \( J9 T: @ d9 Ychar i,temp=0;
$ h/ Y8 v( \2 z6 x* C for(i=0;i<8;i++) // output 8-bit
" t/ p6 a* S' x { # B; M5 p4 \( O- p4 {
if(data & 0x80)
5 f+ ?0 _9 T ?+ C5 J" n' ^{
+ V& A' m$ U# m/ D$ D" cHign_24L01_MOSI ; // output 'uchar', MSB to MOSI
" b0 i$ [3 i" J Z} 4 x* {; K- z, w% @5 ?
else * I4 `, P& u# }
{ ( m8 `; k9 ]% n! h
Low_24L01_MOSI;
- o3 D* J# D" u5 w* h}
* c! _0 A" s6 y3 tdata = (data << 1); // shift next bit into MSB.. 3 v& w( ]0 T- s9 Q6 _' F8 O& B
temp<<=1;
% C- J8 X6 n( B4 S" _9 _ XHign_24L01_SCK ; // Set SCK high.. . e" n1 |2 S. G, d. D
if(Read_24L01_MISO )temp++; // capture current MISO bit # Q( |8 |; R1 N" ]
Low_24L01_SCK; // ..then set SCK low again 8 B3 s5 C. L' a- E
} 9 X/ r; `; k( ~( Z: p, O
return(temp); // return read uchar
* I1 h& d$ M) z: C}
6 T, \3 u& u+ ~ |
|