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

关于nRF24L01的一个新手问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
刚开始学习nRF,有个很简单的问题想要请教大神们:
: l7 [/ M$ c& a+ Q4 t( o2 _
7 Q+ p! g: u7 }) k) D2 Z; M: R下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的? % s7 O+ s! ~& K0 O8 Q* W
/****************************************************************************************************
8 L' \# e4 a6 l0 w! L6 i! L5 ^函数:uint SPI_RW(uint uchar) 9 v0 w( V, N5 o, w6 @$ ]
功能:NRF24L01的SPI写
: a1 |5 M  ~6 z( {5 {- K4 _0 `***************************************************************************************************/ - T  H, Y* Z1 B! a+ S$ D- O+ ]
char SPI_RW(char data)
. n* J, H5 o3 E' B4 k/ ?9 D{
2 E! \( J9 T: @  d9 Ychar i,temp=0;
$ h/ Y8 v( \2 z6 x* C           for(i=0;i<8;i++) // output 8-bit
" t/ p6 a* S' x           { # B; M5 p4 \( O- p4 {
if(data & 0x80)
5 f+ ?0 _9 T  ?+ C5 J" n' ^{
+ V& A' m$ U# m/ D$ D" cHign_24L01_MOSI ;         // output 'uchar', MSB to MOSI
" b0 i$ [3 i" J  Z} 4 x* {; K- z, w% @5 ?
else * I4 `, P& u# }
{ ( m8 `; k9 ]% n! h
         Low_24L01_MOSI;  
- o3 D* J# D" u5 w* h}        
* c! _0 A" s6 y3 tdata = (data << 1);           // shift next bit into MSB.. 3 v& w( ]0 T- s9 Q6 _' F8 O& B
temp<<=1;
% C- J8 X6 n( B4 S" _9 _  XHign_24L01_SCK ;                      // Set SCK high.. . e" n1 |2 S. G, d. D
if(Read_24L01_MISO )temp++;                  // capture current MISO bit # Q( |8 |; R1 N" ]
Low_24L01_SCK;                       // ..then set SCK low again 8 B3 s5 C. L' a- E
           } 9 X/ r; `; k( ~( Z: p, O
    return(temp);                      // return read uchar
* I1 h& d$ M) z: C}
6 T, \3 u& u+ ~

该用户从未签到

2#
发表于 2023-2-28 15:29 | 只看该作者
char SPI_RW(char data)
! d5 W7 ^* A8 b7 B( V! T{
( C8 e8 W+ l9 j    char i,temp=0;# a% F: H: \, G. \0 a! W
    for(i=0;i<8;i++) // output 8-bit
& {6 h# {" j, C& x    {/ C/ `4 p; T& z. Q8 p- U3 W
        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位4 p5 t  [; R/ j9 H1 @1 R
     Hign_24L01_MOSI ;
0 Y% S4 M7 Z7 z* F+ V# [( y        else; i3 C0 [6 F! K: G: _% P1 E: t* o
        Low_24L01_MOSI;
& D4 `" `, y. |# p8 S# g                  % z& ]3 w9 d% B  q8 a. t1 ?. k; D
        data = (data << 1); // 把数据的低一位移至最高位以备发送
+ i+ Y. X+ f$ e     temp<<=1;8 d/ [& T0 D5 s% @7 E( F% o* d
        Hign_24L01_SCK ; //拉高拉低写入数据                 1 m6 Z! }7 ^& X; Y9 s% r
     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;! ^3 s$ @8 H4 V0 j; K. _/ b
                                                     //合起来实现读取八位从机向主机发送的数据
6 S! l, g- y. c0 ?: k7 Q     Low_24L01_SCK;                       8 A) p- I, E% S% }' V
    }3 M) B+ ]( K( Q
    return(temp);//最后将八位集合为一个字节返回出来
( P6 T  K' `$ X( }: _}

该用户从未签到

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

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

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

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