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

关于nRF24L01的一个新手问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
刚开始学习nRF,有个很简单的问题想要请教大神们:
/ A  W* W% Z9 ~
" Q0 ]: l7 J% i  L" i; F. p$ K4 j下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的? 8 r) f5 R" N% h6 \
/**************************************************************************************************** # K+ }/ D/ M* o4 `8 Z2 K3 n1 q0 Y) @
函数:uint SPI_RW(uint uchar)
) J& ?  C, y: R! E3 u0 d& M& \/ {功能:NRF24L01的SPI写 6 y/ u8 o; L4 v. Y1 w1 w1 ?9 P
***************************************************************************************************/
! L* i1 _' B* F; p& V: @: Xchar SPI_RW(char data) 3 I) a  r2 q/ s
{ % R, N4 m$ W) S; T% c1 l/ m5 S
char i,temp=0;
& k  r6 ]' P/ x           for(i=0;i<8;i++) // output 8-bit ' J; p4 Y/ B. ~- g3 \
           { + I7 J6 w6 m, r# H* Y
if(data & 0x80)
- A) Z* ?; H$ ]5 p{
  g3 t. u# h: V. ?" u. X) OHign_24L01_MOSI ;         // output 'uchar', MSB to MOSI 8 J  z- q7 E+ c1 |% S" B5 j" w
}   W) Q6 K: I9 H" j7 w& B3 N
else $ s1 b: F9 l* s5 X
{ ) ]$ ]* I3 {5 H% u& O
         Low_24L01_MOSI;  
% Z: O4 E$ |; [+ l# F}        4 O* g' ^! p, y+ [% L
data = (data << 1);           // shift next bit into MSB..
: D; D+ Z3 A7 n6 e) Ytemp<<=1; - T5 E/ U8 J7 K" R% E6 L+ b  ^" \
Hign_24L01_SCK ;                      // Set SCK high.. $ Y+ X: v- P' B+ A, P  W3 O
if(Read_24L01_MISO )temp++;                  // capture current MISO bit
4 T2 V5 ?% H# {. pLow_24L01_SCK;                       // ..then set SCK low again
6 `$ f4 t0 g! C# G" T, ?8 j; v% v           }   G  U" v8 i6 V/ k
    return(temp);                      // return read uchar
2 h' e/ A4 |4 g3 L}: \. ~. L- X0 ^' O" I' G( H& `' q5 z

该用户从未签到

2#
发表于 2023-2-28 15:29 | 只看该作者
char SPI_RW(char data)
" p+ E4 O" d$ H* c9 o* F{
" Y3 @( x9 |, N1 U/ x% H& b    char i,temp=0;3 A/ ~) h, W+ S9 X
    for(i=0;i<8;i++) // output 8-bit
7 w/ _$ u9 C2 k/ E- G) c% z    {
; l0 g, Z4 E* j$ v! _' j2 D        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位
) x2 I+ H0 D: z     Hign_24L01_MOSI ;
# z1 m& T* i9 M3 G5 c        else% K# E& S3 H5 N7 u, R! L" q
        Low_24L01_MOSI;
( e+ I# q4 d: e. b/ ?1 }  t( w. x                  
+ K- I3 }4 i* y6 ?! V        data = (data << 1); // 把数据的低一位移至最高位以备发送0 B" ~* A7 Z3 T, K& J6 c: K; }
     temp<<=1;+ e3 N0 B) p* m7 {7 m$ @
        Hign_24L01_SCK ; //拉高拉低写入数据                 & b1 {) x, E6 S7 I$ S
     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;% V" ^9 {5 Y$ z6 O3 N% M- i
                                                     //合起来实现读取八位从机向主机发送的数据2 _' l9 f1 b' d
     Low_24L01_SCK;                       , Y$ I1 n  R3 I" M) z' \3 V: y2 _
    }
5 f7 R8 y. O0 N2 P# N- |    return(temp);//最后将八位集合为一个字节返回出来/ y; ]" V1 x# F) b/ Q  L( A3 F6 \
}

该用户从未签到

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-7-26 16:26 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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