OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4113|回复: 3

关于nRF24L01最基本的一个函数

[复制链接]

98

主题

253

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2011-12-16
在线时间
57 小时
发表于 2013-6-10 18:30:59 | 显示全部楼层 |阅读模式
<div style="background-color:#ffffff;font-style:normal;font-family:'Courier New';color:#0000ff;font-size:10pt;font-weight:normal;text-decoration:none;"><pre><span style="color:#800000;font-size:18px;">uchar <strong><span style="font-size:18px;">SPI_RW</span></strong>(uchar byte)
{
&nbsp;uchar i;
&nbsp;for(i=0;i&lt;8;i++)
&nbsp;{
&nbsp;&nbsp; MOSI=(byte&amp;0x80);&nbsp;&nbsp;
&nbsp;&nbsp; byte=(byte&lt;&lt;1);
&nbsp;&nbsp; <strong><span style="font-size:18px;">SCK=1;//由此可见,写数据是在SCK=0时进行,SCK上升沿把数据写进去</span> </strong>&nbsp;&nbsp;
   byte|=MISO<strong>;//由此可见,读数据是在SCK高电平期间进行</strong><strong><span style="font-size:18px;">  
   SCK=0;</span> </strong>&nbsp;
}
&nbsp;return(byte);
}<strong>


【问题】
SPI的读写操作分别是在SCK的什么时候?高电平?低电平?上升沿?下降沿?以上的程序分析从下面的时序图中找不到答案</strong> <center>

</center> </span>[/mw_shl_code]</div>
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-6-10 21:29:17 | 显示全部楼层
以文字介绍为准.
<br>手册有说NRF的SPI支持什么模式?然后你查这个模式的特性.就知道了.
<br>有时候,仅仅看图,不能做出准确的判断.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2012-10-27
在线时间
65 小时
发表于 2013-6-10 22:14:37 | 显示全部楼层
回复【楼主位】kexuexyz:
<br>---------------------------------
<br>这程序很不错
回复 支持 反对

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
发表于 2013-6-11 08:46:24 | 显示全部楼层
uchar&nbsp;SPI_RW(uchar&nbsp;byte)
<br>{
<br>&nbsp;uchar&nbsp;i;
<br>&nbsp;for(i=0;i&lt;8;i++)
<br>&nbsp;{
<br>&nbsp;&nbsp;&nbsp;MOSI=(byte&0x80);&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;byte=(byte&lt;&lt;1);
<br>&nbsp;&nbsp;&nbsp;SCK=1;//由此可见,写数据是在SCK=0时进行,SCK上升沿把数据写进去&nbsp;&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;byte|=MISO;//由此可见,读数据是在SCK高电平期间进行&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;SCK=0;&nbsp;&nbsp;
<br>&nbsp;}
<br>&nbsp;return(byte);
<br>}&nbsp;
<br>你可以分析下这个函数的流程:
<br>byte比如是11100001
<br>1&nbsp;&nbsp;&nbsp;byte=(byte&lt;&lt;1)(这里可以知道每次只取高位1,1,1,0,0,0,0,1)
<br>2&nbsp;&nbsp;&nbsp;SCK=1;&nbsp;//sck时钟高电平,一般用引脚控制,如用PA2脚控制
<br>3&nbsp;&nbsp;&nbsp;byte|=MISO;//由此可见,读数据是在SCK高电平期间进行&nbsp;&nbsp;
<br>4&nbsp;&nbsp;&nbsp;SCK=0;//sck时钟低电平
<br>流程是1~2~4把byte写给ic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;那3~4~2是取出byte的值
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 19:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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