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

关于nRF24L01的一个新手问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
刚开始学习nRF,有个很简单的问题想要请教大神们: ( r! B2 ~1 k3 ?8 S

1 N1 J% S1 D- Y7 h" R下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的? 5 X; V; S7 C! U. S% r% p0 E
/****************************************************************************************************
' ^( w. E6 c" T5 d4 v9 O' z  k函数:uint SPI_RW(uint uchar) $ R7 B" g( V3 E, [* v( \
功能:NRF24L01的SPI写 7 y) S+ i1 G* G+ h( }: n
***************************************************************************************************/ 8 Q) u: i4 R0 T$ `0 L
char SPI_RW(char data) * z# k2 K. h" Y5 P) f- H- a
{
9 k, z) s% ]9 Lchar i,temp=0;
2 I3 G8 A6 ]. }1 \           for(i=0;i<8;i++) // output 8-bit * }" W) q$ b# z3 O4 f9 x% O9 s" g
           { ( ]1 B. w0 Y) ?; Y1 r) ]
if(data & 0x80)
+ t" R5 R# K& f6 I) C! P3 r{ 0 M  v3 {4 F/ ]
Hign_24L01_MOSI ;         // output 'uchar', MSB to MOSI
+ u, N8 U4 H2 h  b} ! J% ^( i7 M5 {1 M6 \
else
1 m, t# F% B. _0 R6 P9 j' E! k+ F+ L{ # M# }) i# p/ ?
         Low_24L01_MOSI;  + ~. z# O  I% S" I
}        : N% |' y/ b7 ^4 f
data = (data << 1);           // shift next bit into MSB..
8 I+ p# ?: M* P; \temp<<=1;
9 u% u1 [0 b2 Y  T; [) b+ X' x, Q# mHign_24L01_SCK ;                      // Set SCK high.. & x( B9 o! W- I. u5 A7 i4 |; B, O
if(Read_24L01_MISO )temp++;                  // capture current MISO bit 8 S; t0 r- T$ W- B  z. C( {
Low_24L01_SCK;                       // ..then set SCK low again
- h7 z0 j6 q' \0 @, J           } $ i$ ^! h7 A8 G
    return(temp);                      // return read uchar
! t% M4 t- U1 r! h8 B}
" s, V4 @$ @! |! Z

该用户从未签到

2#
发表于 2023-2-28 15:29 | 只看该作者
char SPI_RW(char data)" \6 H/ v% y! J) m( y* k
{5 J# \; j3 N6 s! a9 X; }: k
    char i,temp=0;
2 g; x' t5 s3 n5 }/ G8 S! ]    for(i=0;i<8;i++) // output 8-bit
4 f0 t+ ~5 X2 `' E    {
5 {( `4 ^9 s" s1 q        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位# F( b3 b: W5 |! f1 J' p5 o, d  I
     Hign_24L01_MOSI ;2 v% R8 l* |0 O# |9 c
        else+ ?, C( I# C, S' q% c3 }
        Low_24L01_MOSI;) K% V/ v/ C4 A. w9 h& V
                  5 j8 ?" \  M* O5 ?$ @8 f
        data = (data << 1); // 把数据的低一位移至最高位以备发送
" `) X% P5 t2 o% z8 ]6 _, z     temp<<=1;
" {, C# D( Q; E2 F2 s3 q( X! m        Hign_24L01_SCK ; //拉高拉低写入数据                   e) ^# Z1 ^4 F2 I5 y5 Z8 z" v
     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;9 k. g- F) S, p& T
                                                     //合起来实现读取八位从机向主机发送的数据& T" `* L1 _% c# e
     Low_24L01_SCK;                       # k: S+ v# ^+ `! ?( \
    }
% v1 p  V) A( b! e6 ]. @, `    return(temp);//最后将八位集合为一个字节返回出来6 h9 f6 g( D$ t' N
}

该用户从未签到

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 03:34 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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