打印
[AVR单片机]

请教一个关于通过SPI接口写NRF24L01的问题

[复制链接]
2282|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
doliphin|  楼主 | 2012-6-13 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uchar SPI_RW(uchar byte)
{

uchar bit_ctr;
   
for(bit_ctr=0;bit_ctr<8;bit_ctr++)   // output 8-bit    // 输出 8 位
   
{
   
MOSI = (byte & 0x80);         // output 'byte', MSB to MOSI
   // 从MOSI脚输出,从高位到低位.当BYTE 最高位为1时逻辑运算为1,输出1.运算为0时输出0
   
byte = (byte << 1);           // shift next bit into MSB..
    // 左移1位.将低位向高位转移.
   
SCK = 1;                      // Set SCK high..
   // 将SCK脚拉高,
   
byte |= MISO;      
  //byte=byte|MISO  capture current MISO bit

// 从MISO 中读出状态位存入BYTE中.
   
SCK = 0;            
  // ..then set SCK low again
// 将SCK脚拉低.发送一位完成.
   
}
    return(byte);           
  // return read byte
  
// 返回状态位
}

请问byte |= MISO; 有何意义?后面的程序都把这个返回值当做是24l01的状态寄存器的值,难道写24l01的同时24l01自动把status状态位输出?

相关帖子

沙发
plc_avr| | 2012-6-14 06:20 | 只看该作者
你后面的一句讲对了,每发送数据的同时,会自动返回一个数据。楼主应该看一下SPI通讯原理。

使用特权

评论回复
板凳
zhl100| | 2012-6-14 08:46 | 只看该作者
相当于发送等待  等待发送成功  确定处理结束再进行数据交互

使用特权

评论回复
地板
doliphin|  楼主 | 2012-6-14 14:28 | 只看该作者
恩 看了一下 但关键它返回的是什么,找手册也没找见啊
2# plc_avr

使用特权

评论回复
5
plc_avr| | 2012-6-15 21:12 | 只看该作者
你找的哪个手册呢?该不会是找AVR的数据手册吧。要看24L01的寄存器内容。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:路漫漫其修远兮,吾将上下而求索

0

主题

195

帖子

2

粉丝