- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
新手求组啊!关于NRF24L01的写操作!
录入:edatop.com 点击:
uchar SPI_RW(uchar byte)
{
uchar i;
for(i=0; i<8; i++) // 循环8次
{
MOSI = (byte & 0x80); // byte最高位输出到MOSI
byte <<= 1; // 低一位移位到最高位
SCK = 1; // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据
byte |= MISO; // 读MISO到byte最低位
SCK = 0; // SCK置低
}
return(byte); // 返回读出的一字节
}
uchar SPI_RW_Reg(uch ar reg, uchar value)
{
uchar status;
CSN = 0; // CSN置低,开始传输数据
status = SPI_RW(reg); // 选择寄存器,同时返回状态字*******
SPI_RW(value); // 然后写数据到该寄存器
CSN = 1; // CSN拉高,结束数据传输
return(status); // 返回状态寄存器
}
上面是一段写操作程序,我想问的是 NRF24L01芯片是如何区分是寄存器地址还是指令还是配置指令,也就是程序 红色字部分.
求大神们友情指导啊!小弟在此感激不尽,谢谢了!
{
uchar i;
for(i=0; i<8; i++) // 循环8次
{
MOSI = (byte & 0x80); // byte最高位输出到MOSI
byte <<= 1; // 低一位移位到最高位
SCK = 1; // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据
byte |= MISO; // 读MISO到byte最低位
SCK = 0; // SCK置低
}
return(byte); // 返回读出的一字节
}
uchar SPI_RW_Reg(uch ar reg, uchar value)
{
uchar status;
CSN = 0; // CSN置低,开始传输数据
status = SPI_RW(reg); // 选择寄存器,同时返回状态字*******
SPI_RW(value); // 然后写数据到该寄存器
CSN = 1; // CSN拉高,结束数据传输
return(status); // 返回状态寄存器
}
上面是一段写操作程序,我想问的是 NRF24L01芯片是如何区分是寄存器地址还是指令还是配置指令,也就是程序 红色字部分.
求大神们友情指导啊!小弟在此感激不尽,谢谢了!
这个比较难