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

关于nRF24L01的一个新手问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
刚开始学习nRF,有个很简单的问题想要请教大神们:
" h( E& y) Q! U! y! f: G6 x9 |. ?2 j
下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的? 4 R5 `# w8 q; H" [3 x
/**************************************************************************************************** 1 k% p$ a# Y- Z% b6 H
函数:uint SPI_RW(uint uchar) 8 h: D; x# ^" V+ h
功能:NRF24L01的SPI写
$ V  G" l1 O; w# E- X/ x* q***************************************************************************************************/
& ?0 Z0 i4 T) b( R$ C4 J' jchar SPI_RW(char data)
5 |; S/ n9 X3 w5 K) N! P' T; U! e{ % X2 g, h0 ?: v' z2 h& I$ K
char i,temp=0; ( a- T7 M0 C8 v& G. c9 d. g, K" G
           for(i=0;i<8;i++) // output 8-bit
; ?: G- {0 A/ \% B           {
/ Y: B  f1 t* j( Q* xif(data & 0x80)
% u* x4 G2 i  t+ b% y{ $ q8 d' K) f" L- [$ y. a
Hign_24L01_MOSI ;         // output 'uchar', MSB to MOSI
$ @0 J; J8 r: C) p, @3 {; `6 L} # G3 Z8 m" a2 }+ o# R7 ?
else
4 p4 T6 Y, k% k% g) m{
; d: ^# `5 L. T% ^& P         Low_24L01_MOSI;  
- B/ l' Z. M+ \& W8 a2 e* P2 d}        ' C" m* V+ R- G( H  P% }, w+ W9 ?& Z
data = (data << 1);           // shift next bit into MSB..
! _; ~$ r6 J0 R7 U6 R% gtemp<<=1; 0 f! s& c1 v0 g. M9 U
Hign_24L01_SCK ;                      // Set SCK high..   s* I3 f& H; H( H6 o
if(Read_24L01_MISO )temp++;                  // capture current MISO bit % k* w3 z" ]$ V/ u& X4 p
Low_24L01_SCK;                       // ..then set SCK low again
! [) ]( \2 Y# {; w           } $ S2 t( s3 L5 W) o0 A3 K5 J' b9 G
    return(temp);                      // return read uchar ; _; O" t1 M  H% E% E/ r2 \
}0 _! o/ p6 ^7 N& |3 [/ F

该用户从未签到

2#
发表于 2023-2-28 15:29 | 只看该作者
char SPI_RW(char data)
1 Z, w3 r! H- j" A  e- t{
! k1 d7 D  }0 @' v' P    char i,temp=0;& @0 y$ X; l' J1 P9 B+ X: i
    for(i=0;i<8;i++) // output 8-bit
1 V4 J5 ~4 o9 q) x& U    {
1 T$ o) K% W& N        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位
& i6 @+ p( _5 w! t* ~: z  D& I     Hign_24L01_MOSI ;+ I/ b) {, |( \( x* c
        else
# w! P# k! k7 t9 X( J. O        Low_24L01_MOSI;
* n9 i8 J7 M; t, ]: F! P* M* g- g                  
  Z; Y) v3 A& A  H! c- o2 d3 s        data = (data << 1); // 把数据的低一位移至最高位以备发送
  _5 Z: ]7 i/ c     temp<<=1;
7 R! b  g& a) F, G9 g        Hign_24L01_SCK ; //拉高拉低写入数据                 
# f* ]; C# I! |, D: v0 N! B     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;( g! f5 t: c! N* |
                                                     //合起来实现读取八位从机向主机发送的数据- B: f- f; w) |& u: g
     Low_24L01_SCK;                       , B/ ~' r$ f  ^" o3 `) E6 ~
    }
+ J( w) [" X6 i  @9 u    return(temp);//最后将八位集合为一个字节返回出来1 ?& q. _1 W8 O! Q4 Q, Y. ~. v
}

该用户从未签到

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-7-31 19:28 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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