找回密码
 注册
关于网站域名变更的通知
查看: 506|回复: 3
打印 上一主题 下一主题

关于nRF24L01的一个新手问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-2-28 10:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

该用户从未签到

2#
发表于 2023-2-28 15:29 | 只看该作者
char SPI_RW(char data)
& E" V$ M2 ]$ @. f{
& v. t0 t; J( ^( b1 Q  I    char i,temp=0;
+ M& k* F: v$ J' [$ B4 q  z6 X    for(i=0;i<8;i++) // output 8-bit
  m) }4 N' f0 d4 B    {
7 O& e' |' }" r8 Y, |, J# z        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位0 H. h/ o! X: }1 q" D, m
     Hign_24L01_MOSI ;* T3 n" O$ v1 g7 ]/ B" _; x
        else3 h; ], f3 ]* U5 C+ j; Z6 ^
        Low_24L01_MOSI;7 z3 w; M8 w" C. J; a$ _" q3 Z6 |0 k8 G
                  
) c* B9 a7 Q: C" L4 L+ O. Z        data = (data << 1); // 把数据的低一位移至最高位以备发送/ p. r4 I$ O2 c6 w! b
     temp<<=1;- U) i0 _* `6 k2 I
        Hign_24L01_SCK ; //拉高拉低写入数据                 
" S, a) `2 U* u6 [# Q     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;3 X" K% p0 g6 [/ X' d  x
                                                     //合起来实现读取八位从机向主机发送的数据
# [+ K! p# T9 ^& f     Low_24L01_SCK;                       4 \9 H1 n7 m7 F
    }
) |& m6 ?- n, E3 ?7 Z, f    return(temp);//最后将八位集合为一个字节返回出来
) J! R7 R" V9 Y" X+ t$ I}

该用户从未签到

3#
发表于 2023-2-28 16:47 | 只看该作者
a=(a<<1)与a<<=1表达的意思一样吗?

该用户从未签到

4#
发表于 2023-3-3 11:22 | 只看该作者
你可以直接找 SI24R1代理商那边 帮你处理  软件都差不多 13632658391
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-31 06:32 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表