nrf24l01的GPIO的模拟SPI,程序MISO=1; byte |= MISO;这里是个什么意思。

uchar SPI_RW(uchar byte)
{
uchar bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
{
MOSI = (byte & 0x80); // output 'byte', MSB to MOSI
byte = (byte << 1); // shift next bit into MSB..
SCK = 1; // Set SCK high..
MISO=1;
byte |= MISO; // capture current MISO bit
SCK = 0; // ..then set SCK low again
}
return(byte); // return read byte
}

byte |= MISO这一句是不是byte =byte|MISO 这个运算没看懂怎么从MISO读入。

你好:
MISO=1;是吧MISO这个脚置为输入。
byte |= MISO; 是吧byte的最低位或上MISO接收到的电平数据。

这是吧byte的最低位赋值,但是上边有一句byte = (byte << 1);这样吧byte左移一位,下次再赋值时,byte的最低位就是新的一个数据了。

不懂的回复。
希望我的回答能帮助到你。追问

MOSI = (byte & 0x80); MOSI这样算完不应该是八位吗,怎么就成MSB最高位输出了?另外你说的MISO=1;MOSI置一就是设置它输入吗?byte |= MISO; 是不是 byte=XXXX XXXN |0000 0001

追答

byte & 0x80的结果大概知道就行。MOSI只能输出0或者1。
对的,置位输入。
也是对的

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-04
byte低位取1追问

我发现他是保留高七位,低位置一给byte,这有什么用呢。后面MISO这里是怎么运行的?

第2个回答  2018-01-21
现在要用SPI发送数据0x0F,0x0F写成二进制即0000 1111, NRF_MOSI=(byte&0x80); 这条语句,是把0x0F的最高位输出;byte=(byte<<1);这条语句,是把最高位输出以后,再把原来的字节左移1位,即变成了0001 1110;byte|=NRF_MISO;这条语句的作用是获取从机的MISO引脚状态,就是接收从机的数据,MISO不是0就是1,所以结果是0001 1110或上一个0或者1,我们发现,结果并不会影响字节的前7位,然后如此循环8遍。

nrf24l01的GPIO的模拟SPI,程序MISO=1; byte |= MISO;这里是个什么意思...
MISO=1;是吧MISO这个脚置为输入。byte |= MISO; 是吧byte的最低位或上MISO接收到的电平数据。这是吧byte的最低位赋值,但是上边有一句byte = (byte << 1);这样吧byte左移一位,下次再赋值时,byte的最低位就是新的一个数据了。不懂的回复。希望我的回答能帮助到你。

SPI_RW();是什么意思
SPI是收发同时进行的方式,主设备给从设备发送数据的同时,也能侦测从设备是否有数据要发送给主设备,byte |= MISO 这个语句就是接收从设备的数据,因为先给从设备发送了数据 MOSI = (byte & 0x80); 所以,在发送的同时接收数据的话,对数据本身没有影响 ...

nrf24l01模块中的miso何mosi要和51单片机怎么连?
您好:如果您用的单片机有集成SPI的话,就连接它的SPI接口。如果您的单片机没有集成SPI接口(如51单片机),那么您得用普通I\/O口来模拟SPI通信协议,也就是随便接两个I\/O口。

关于nRF24L01的一个新手问题 (好答案有追加)
这里temp起到的作用就是把读进来的数据存一个“备份”到temp里,最后通过return语句把读到的data反馈回去。具体进行这个操作的语句是:"temp<<=1; "和"if(Read_24L01_MISO )temp++;"你理解一下,这个表达是正确的,只是和一般思路不同,用的是位操作的方法。注:temp里面是01序列,位操作左移或...

关于NRF24L01通信的问题
**\/void NRF24L01Initial(void){ \/\/1.配置io口线时钟 RCC_APB2ENR |= IOPAEN+IOPBEN; \/\/port a, port b, RCC_APB2RSTR &= ~(IOPAEN+IOPBEN); \/\/port a, port b,\/\/2.配置io口,SCK,MOSI,MISO三根线交由spi外设自动控制,其初始化也交由spi驱动程序完成...

STU_SPI_MISO是什么意思,实现什么功能,求教啊?
SPI接口可以连接带有SPI接口的各种芯片,比如大容量FLASH存储设备(93C46\/W25X16\/SD卡等)、NRF24L01无线发送\/接收设备等,也可以作单机\/多机通讯使用,是单片机常用的接口之一。STU_SPI_MISO 这段应该是SPI接口驱动程序的一个字符串,可能是读取SPI接口MISO接口状态(电平)的意思。 下面是摘自百度百科的...

nrf24l01接收程序有延时就不行了。。跪求原因
可能是你的单片机型号不一样把,所以内部分频不一样,是1T的还是12T的看一下数据手册,本来延时函数是可以调节的,也是可有可无的,当然必须结合实际的芯片时序图来规划,如果加了延时函数不行的话,简单,去掉就是了。也可以把50改小点试试看,比方说30,20,10等等。

根据SPI协议,写一字节数据到从机,为什么还要读出一字节的数据?示例程 ...
SPI协议中接收和发送数据是一体的,数据传输的线路为一个循环链路(loop).如果主机发送数据给从机,则必须从从机读取数据(即从机也发送数据到主机).同理,如果主机读取从机发来的数据,也必须同时发送数据给从机.总之,同一个时钟周期内,读和写2个操作都必须执行....

相似回答