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

关于nRF24L01的一个新手问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
刚开始学习nRF,有个很简单的问题想要请教大神们:
6 J/ n! l$ m' p: C+ I( Q
# c5 Q2 Z2 x/ y: N$ x6 v. L下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的? 8 c% A1 Y" o" m! \/ v
/**************************************************************************************************** * P( M$ H4 v; u; ?6 G
函数:uint SPI_RW(uint uchar)
) L. m- m/ J" f9 s( @& e功能:NRF24L01的SPI写 " v; }" r& a5 k; H- h
***************************************************************************************************/ + Z, t* F1 @4 c8 Y- U
char SPI_RW(char data) 6 a( s& i# f* A# n4 z$ @
{ ; E- u6 U( ?3 R2 c# p5 [* w
char i,temp=0; * s7 e  }5 t* e% _" e$ I- P
           for(i=0;i<8;i++) // output 8-bit ; V# r2 f4 |' F$ b* b+ L
           { : `0 ^7 T4 h. L6 y
if(data & 0x80) + Z4 p5 s/ H3 Z$ v
{ * V" Z' ^- S- P* V8 q* D
Hign_24L01_MOSI ;         // output 'uchar', MSB to MOSI
. N9 z: y5 O/ ?1 d}
0 Q8 l+ b2 r4 E3 m; celse
/ \. N' b3 f' g0 E* L; F{ : r8 a  G; p8 D6 Q, I
         Low_24L01_MOSI;  0 x4 O: ]# a, g2 E  `- h  B
}        
+ x3 {$ A+ \9 ?, F) n' i+ Zdata = (data << 1);           // shift next bit into MSB..
8 E/ ]1 u, W$ A) M5 ?2 x% }- xtemp<<=1;
, y; O9 P% X# v! P/ W2 J6 B* VHign_24L01_SCK ;                      // Set SCK high..
- s1 D& b& V) X0 g1 X& I8 Zif(Read_24L01_MISO )temp++;                  // capture current MISO bit
% Z4 Z4 i2 m6 J# p) C' M. q& pLow_24L01_SCK;                       // ..then set SCK low again 5 d, f  x" x0 F1 e; e2 C4 ?, e) c
           } : E% h2 x( w6 K3 Y1 i4 E  f0 q" k# k" E
    return(temp);                      // return read uchar
6 g& p. c2 v, a6 G. o4 V}* U! a7 Q7 U+ O: x/ g

该用户从未签到

2#
发表于 2023-2-28 15:29 | 只看该作者
char SPI_RW(char data)
8 ?$ Q+ H9 U8 A* D  t3 r9 `{* R8 v) P8 U8 Z- o# Z) k! e
    char i,temp=0;& i) y' l" d# D5 k. E1 w
    for(i=0;i<8;i++) // output 8-bit8 ^# i; \$ X  b; ]+ ?
    {; C; B: ?4 f1 @% e# z
        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位2 F  X5 u/ w) e: J1 }0 m: q
     Hign_24L01_MOSI ;
$ K% v1 m% W! `& K0 B% h8 X        else
- }+ t; I0 D5 G        Low_24L01_MOSI;
; ?  h! G& w7 K' T                  ) Q1 q! G3 S9 A8 w% r: ~
        data = (data << 1); // 把数据的低一位移至最高位以备发送, x- f" G: |0 f, o
     temp<<=1;
6 O, I( D+ V, a$ x7 O        Hign_24L01_SCK ; //拉高拉低写入数据                 * E" }4 H9 A4 l3 Y2 R2 {
     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;: d, Z2 j! `4 t" r
                                                     //合起来实现读取八位从机向主机发送的数据
3 H3 L& f5 i$ b6 F) S8 D     Low_24L01_SCK;                       . j% E  ]% T8 r' ^( J5 a& [
    }
# r% R, @+ u- a) [+ k3 x    return(temp);//最后将八位集合为一个字节返回出来4 n  b" w$ K7 m! ~5 p
}

该用户从未签到

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-9-30 10:56 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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