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

关于nRF24L01的一个新手问题

[复制链接]

该用户从未签到

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

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

该用户从未签到

2#
发表于 2023-2-28 15:29 | 只看该作者
char SPI_RW(char data)
: N6 y& B5 q. e5 k2 o{
# i, [" W0 C& G1 k8 G! _3 G    char i,temp=0;
  _$ _; I# M6 z8 k4 t    for(i=0;i<8;i++) // output 8-bit5 V" t7 w; M" y, g+ L. i' H8 U; n
    {
* ~. N4 m/ y9 [7 G2 N        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位
  V7 ?% T  ]: `' z# N1 `- l/ A     Hign_24L01_MOSI ;
; g& j2 t9 G" m+ Q" q        else
8 o- `: Z- o# Q  A/ Z: N: j        Low_24L01_MOSI;
: T, ~; d2 H+ v                  
5 _8 z- L& |: X; U8 F( e        data = (data << 1); // 把数据的低一位移至最高位以备发送( T3 f; ?) u/ V( i+ V
     temp<<=1;0 R/ H. k3 j9 H  q+ P% j  I( h$ H+ j
        Hign_24L01_SCK ; //拉高拉低写入数据                 
' ^: |" i. U$ \1 X7 r     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;' ?- N, p$ t" Z6 [0 n1 J+ ^8 o1 Q
                                                     //合起来实现读取八位从机向主机发送的数据1 b# W( u8 J8 \6 H1 ~* i
     Low_24L01_SCK;                       
8 G* w: ^% i* I    }$ d9 s) h9 w' \
    return(temp);//最后将八位集合为一个字节返回出来
$ h; P- d! p" b3 c% j8 e}

该用户从未签到

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-11-22 02:36 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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