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

关于nRF24L01的一个新手问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
刚开始学习nRF,有个很简单的问题想要请教大神们: + Z7 L* y, C+ N' ^3 q# t
* K" D# D4 O- d5 i6 U  _/ W) M
下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的?
1 ]- k9 h; U" O2 M/****************************************************************************************************
8 ~5 F7 g! }( J- S2 j9 C( U函数:uint SPI_RW(uint uchar)
) g( ]1 f  {/ o- t7 @8 Q功能:NRF24L01的SPI写
: T: C$ V3 X  T! O4 }/ d' y, ?8 M***************************************************************************************************/ * W: s& N) R; _5 }3 F
char SPI_RW(char data)
5 _2 ]: [6 P, ?{
6 k4 u4 T8 j  ?char i,temp=0;
5 M1 U  Y; ?. U           for(i=0;i<8;i++) // output 8-bit 1 {2 D# U" Z" W0 Y7 a% k) B
           { ! b( B. q3 H" }; ~5 {
if(data & 0x80) + ~9 @& k4 ]* e2 B; n
{
8 x- r7 D. s0 A0 d* jHign_24L01_MOSI ;         // output 'uchar', MSB to MOSI
; P$ k1 D: v6 G) M0 ~0 \} & l( Y' w0 y. s
else 3 E5 M7 e) T4 ~- f; N
{
! b+ v0 ~7 ~8 e         Low_24L01_MOSI;  3 z$ v; k1 g, g# A8 Y6 v- d
}        ( p) ?% u" k) U, _
data = (data << 1);           // shift next bit into MSB..
# [; M/ x" z! Y* a: qtemp<<=1; - L, X  a) F. ?5 Z. t* c
Hign_24L01_SCK ;                      // Set SCK high.. 2 w0 f1 z% w, g: {6 ~( P: Q) n( D
if(Read_24L01_MISO )temp++;                  // capture current MISO bit 5 Y( a& J0 w8 C: L
Low_24L01_SCK;                       // ..then set SCK low again 2 P0 W$ [1 }: N
           } ( P# u( @) O/ v$ `% z& c
    return(temp);                      // return read uchar ! K& A" M0 h0 Z; c1 X$ [0 m) N
}
* |/ t1 ^0 [1 f, S% A( w# t0 l' O

该用户从未签到

2#
发表于 2023-2-28 15:29 | 只看该作者
char SPI_RW(char data)0 ~- J; L% T+ F$ Q% Z% T8 C
{4 v# g: m: r9 G" C6 v8 X0 A7 P
    char i,temp=0;4 q3 z  ]% j4 G6 N% O! F
    for(i=0;i<8;i++) // output 8-bit
5 Q" n  [' p9 X$ \$ n* l    {$ t$ e; S9 Y7 Q: O5 x9 D) N* Y
        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位
, v0 M5 @. h7 F+ z     Hign_24L01_MOSI ;
: X( i$ P* ]( q$ K" }+ \' g! v        else, i8 i( j# g( T: C% t+ [3 B
        Low_24L01_MOSI;
5 M, D, k  d% |) Z                  
4 I7 L0 ~- H( Y7 b4 z* m        data = (data << 1); // 把数据的低一位移至最高位以备发送8 H4 l# i3 z; z9 V$ G( }* v( j
     temp<<=1;) l/ W1 p2 z  B) F7 j$ X
        Hign_24L01_SCK ; //拉高拉低写入数据                 1 C1 B1 J% K1 G0 S
     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;8 e5 h% @& L$ E% k6 T
                                                     //合起来实现读取八位从机向主机发送的数据
$ t3 o2 u& F8 x7 O7 ]: G7 d     Low_24L01_SCK;                       " `( b" n: t9 v) G  R. k
    }
6 Q- I# j6 l, i8 m2 M, }5 p    return(temp);//最后将八位集合为一个字节返回出来
1 y+ P9 c& l3 e+ A}

该用户从未签到

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

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

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

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