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

关于nRF24L01的一个新手问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
刚开始学习nRF,有个很简单的问题想要请教大神们: . N  n, D/ n9 b& R& q

' \! e+ _% q: p下面这个函数中有几句代码我不太理解,为什么要把MOSI的最高位置1,temp又是干嘛用的?
, f2 d. r$ L5 ]: J6 i; ~/****************************************************************************************************
* Q# j; e4 W5 k; J1 ~4 E' z; y" A函数:uint SPI_RW(uint uchar)
8 i# o  f2 I$ ^+ j- Q: C/ x: }功能:NRF24L01的SPI写 7 B+ n) U! `8 @* r3 R$ r9 R
***************************************************************************************************/
4 |( ]# ^% I' b- wchar SPI_RW(char data) " ]# T3 o! s1 X  G. z) w5 I
{
1 Q9 }: ]( |/ [: _% \! O2 S- rchar i,temp=0; 8 L$ [2 Q: T* X6 E# e$ U; f* Z
           for(i=0;i<8;i++) // output 8-bit * d, K8 f5 G% @0 h. |% i
           {
* }& h) g* b1 _8 p6 f9 mif(data & 0x80) * s3 G/ y' ^4 E8 ]9 m
{
* n8 Z1 _1 K! M4 i0 Q! H( gHign_24L01_MOSI ;         // output 'uchar', MSB to MOSI # A9 Z, R6 [9 a1 E1 p. b
}
8 q6 \8 ^! F$ @, @else
5 R1 F6 B; z' G" W; w. ~{ 8 F& T& P* F  E: x; a
         Low_24L01_MOSI;  
) P. x7 t( T7 r, _+ `$ n- |}        
" r* i9 c2 [+ F' gdata = (data << 1);           // shift next bit into MSB..
2 h2 j1 s* {8 }$ jtemp<<=1; 0 v9 ~; I& L1 @
Hign_24L01_SCK ;                      // Set SCK high..
- }- K0 U+ s/ nif(Read_24L01_MISO )temp++;                  // capture current MISO bit ; l6 p! }( p5 Y; |, t9 `! @3 J
Low_24L01_SCK;                       // ..then set SCK low again
$ j- g  m" U) g+ j           }
2 a/ k7 e7 g# R    return(temp);                      // return read uchar
& ^3 A+ A) F5 U" H! d  ~- o}
: f7 M% w. S1 b

该用户从未签到

4#
发表于 2023-3-3 11:22 | 只看该作者
你可以直接找 SI24R1代理商那边 帮你处理  软件都差不多 13632658391

该用户从未签到

3#
发表于 2023-2-28 16:47 | 只看该作者
a=(a<<1)与a<<=1表达的意思一样吗?

该用户从未签到

2#
发表于 2023-2-28 15:29 | 只看该作者
char SPI_RW(char data)! d# M  x3 d/ @# d
{8 A( j) p: C- p1 h# Q) B
    char i,temp=0;- N4 d5 w9 ]7 P* Q9 g
    for(i=0;i<8;i++) // output 8-bit
% X- \. \! p$ X. Y! }    {( F$ N- H7 ~. O6 t6 t
        if(data & 0x80) //最高位为1的话 就个从机发1 否则发0 通过这几句就可以向从机发送数据的最高位6 R5 l8 |# o( A+ \5 n
     Hign_24L01_MOSI ;+ k& M5 ~# h4 @" j2 Z& H8 L( o6 w
        else+ s1 h4 n+ o9 n* W* o
        Low_24L01_MOSI;
; i0 z4 }) ]. M                    B* T$ i, o6 a7 A- i3 J
        data = (data << 1); // 把数据的低一位移至最高位以备发送% C$ G3 {, v8 S: O- `) g5 H
     temp<<=1;
* _1 Q, B3 M- s        Hign_24L01_SCK ; //拉高拉低写入数据                 
) b& M+ }& g, o! _4 G1 H/ Z( g     if(Read_24L01_MISO )temp++;//从 从机读取一位值然后跟 temp<<=1;
: M5 h6 }- o, d/ O9 j                                                     //合起来实现读取八位从机向主机发送的数据
# L& l7 o+ L  h. ~0 v     Low_24L01_SCK;                       
+ d; [! z' r! j, `( L" g: m& ?    }0 n7 v4 b9 V$ ^8 I
    return(temp);//最后将八位集合为一个字节返回出来
( Y1 {% A: Y! k1 S/ J( `}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-22 02:49 , Processed in 0.171875 second(s), 24 queries , Gzip On.

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

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

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