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

关于nRF24L01的一个新手问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
刚开始学习nRF,有个很简单的问题想要请教大神们: - P% P* r. @; g. M+ I

2 n) q" b: Y" k下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的?
+ Q: B/ Q; u  O+ t/****************************************************************************************************
! V: ~2 x) ~4 G5 u. S1 ]函数:uint SPI_RW(uint uchar)
/ |/ Q# W5 d9 q! }功能:NRF24L01的SPI写 8 U2 ]+ O1 G5 i% y! W( q
***************************************************************************************************/
6 b: w' g2 E( N, k- T! |' j' schar SPI_RW(char data) : V0 m, u: v0 K' v8 ~2 I  J
{ " a5 u) q( |% W3 @$ W, @
char i,temp=0; % ]8 s& ]4 t2 w/ P# X. j
           for(i=0;i<8;i++) // output 8-bit
/ a' P4 G7 R3 {: ?) Z% X: }# G           { 5 U4 B4 L8 _5 H$ v' P1 o$ t
if(data & 0x80) 7 m  \& e' _6 a$ q1 K$ ~4 z3 i
{ % [: Z# o# v; s" W8 F: R
Hign_24L01_MOSI ;         // output 'uchar', MSB to MOSI
! H! p3 N3 }. a} ( o( b6 ~" E; a: p" M8 s
else
8 s4 s; L' c1 a7 f2 j+ ^8 E) H{
  o; s4 R% ]0 a3 z         Low_24L01_MOSI;  
! p# c6 d. y& h, N0 I4 o& ~1 H& S}        
3 b& ^( y* _; e! S, adata = (data << 1);           // shift next bit into MSB..
( g6 g8 E% p0 r* j: Jtemp<<=1; ' S: S5 s. n3 n5 L0 R
Hign_24L01_SCK ;                      // Set SCK high.. % [& `) C4 r9 q; y& z4 s1 m4 Y
if(Read_24L01_MISO )temp++;                  // capture current MISO bit & F$ X4 R$ t* p9 S" X8 K* l9 s
Low_24L01_SCK;                       // ..then set SCK low again
6 v6 T5 }; G! A; k$ [) q# u           } - d+ Q2 @5 |3 o8 G1 L+ d
    return(temp);                      // return read uchar
: R: c3 n( j& }+ M6 n/ [}
. E  D) @0 j. O6 F* C

该用户从未签到

2#
发表于 2023-2-28 15:29 | 只看该作者
char SPI_RW(char data)* Q9 U" V" h3 K5 S; j; E
{; r% f: J, _, U( i0 j. [8 A% M  Y8 S
    char i,temp=0;' }; ~! R9 k2 y1 a' {, c0 h
    for(i=0;i<8;i++) // output 8-bit9 R5 |* e+ J8 {2 c% K$ l- G
    {
* b5 ?4 H/ e; |; @3 h: b" I        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位
3 g, @# p& L% M2 a# k8 w     Hign_24L01_MOSI ;! C2 x* V! h& ^" n1 o3 T
        else
/ o' m8 D2 P# j" n/ b$ w/ R) @9 x        Low_24L01_MOSI;7 b9 n) r: X! Z) M5 a
                  7 N0 m) z: t! H, u1 _5 r
        data = (data << 1); // 把数据的低一位移至最高位以备发送  J( X* T: S0 e% K
     temp<<=1;
' j. U! U! V; ?  C0 Z" y        Hign_24L01_SCK ; //拉高拉低写入数据                 
3 _' B3 d! h9 `& z- ?7 f2 O     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;: l6 g: @/ g1 ?+ S
                                                     //合起来实现读取八位从机向主机发送的数据3 h+ j8 [' H2 a4 o* ?* N
     Low_24L01_SCK;                       1 q3 r6 ?) S% V2 f9 j* F$ k( ~2 ?
    }7 u& M, [, E% }/ k- H& V4 D  C
    return(temp);//最后将八位集合为一个字节返回出来/ q1 d/ O" S) [6 K
}

该用户从未签到

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:02 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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