|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
刚开始学习nRF,有个很简单的问题想要请教大神们:
2 Z5 G7 g0 ~4 L4 j
3 k+ E; f s) w. l" _下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的?
! h2 t `4 F" l1 D4 e8 s/****************************************************************************************************
% T0 f. A5 p1 O# H9 W; J函数:uint SPI_RW(uint uchar) 5 N9 d) E% h' C6 N5 s
功能:NRF24L01的SPI写
' Y. ?$ [# d9 p i5 }6 I***************************************************************************************************/ : l) Z& P( w& v" _1 `
char SPI_RW(char data) e- V2 {% L1 j
{
$ h! m+ k1 O7 `8 a, j: Bchar i,temp=0; % M2 D% w n/ i: D5 _
for(i=0;i<8;i++) // output 8-bit 6 Q9 g$ t: F; e! E; e6 D
{ 5 J) @8 ~; a0 Z4 N5 J8 H9 a
if(data & 0x80)
+ g3 Y' }" e8 [- K5 r0 S{
; I: D3 v' z- |/ l3 C; D: H" E( ~Hign_24L01_MOSI ; // output 'uchar', MSB to MOSI , u8 [# q- O* ~ d0 Q
}
& z W- t' X4 V" Pelse
% @4 f# e* g' W! i4 t! K5 y! Y% W{
. L# s {8 X( a* E8 N/ C( e Low_24L01_MOSI;
1 t. y! c, Y, [: C}
0 L6 k' s5 c' |5 _! Tdata = (data << 1); // shift next bit into MSB..
' y j! f) ^8 k$ G+ ltemp<<=1;
9 J" D3 d0 z) d5 l) K! @5 N' zHign_24L01_SCK ; // Set SCK high.. - l: i5 }! D- V" g; k5 J
if(Read_24L01_MISO )temp++; // capture current MISO bit ! m) m6 {' p8 e5 m6 }
Low_24L01_SCK; // ..then set SCK low again
$ a5 c( @( a8 o) P5 y5 W7 z( ^ f% x }
0 \- v4 I/ v: Y. J: e* W1 i* f return(temp); // return read uchar ! B4 O) ]: g9 P& h
}
_3 J, E. w! f, Z3 O6 {/ U7 f |
|