- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
新手求组啊!关于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芯片是如何区分是寄存器地址还是指令还是配置指令,也就是程序 红色字部分.
求大神们友情指导啊!小弟在此感激不尽,谢谢了!
这个比较难
闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墮椤潡宕瑰☉娆愮彇闂佹悶鍊曞ù鐑藉箯鐎n喖绠查柟浼存涧閹線姊虹化鏇熸珖妞ゃ垹锕、娆撳礋椤栨碍鐎┑鐐叉閸ㄧ喖寮婚敓锟� | More...
闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墮椤潡宕瑰☉娆愮彇闂佹悶鍊曞ù鐑藉箯鐎n喖绠查柟浼存涧閹線姊虹化鏇熸珖妞ゃ垹锕、娆撳礋椤撶喎鐝伴梺鍛婃寙閳ь剟寮婚敓锟�
闂備礁鎲¢悧鏇犵礊婵犲洤鍌ㄩ柕鍫濐槹閸嬨劌霉閿濆懎鏆熼柣鏂挎嚇閹鎷呴悷鎵槰濡炪倖鎸婚幃鍌氱暦閾忚鍏滈柛婊€绀侀弫鎶芥煟閻樺弶鎼愬褌绮欓崺銏ゆ晸閿燂拷
闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墮椤潡宕瑰☉娆愮彇闂佹悶鍊曞ù鐑藉箯鐎n喖绠查柟浼存涧閹線姊虹化鏇熸珖妞ゃ垹锕、娆撳礋椤掑倿妾┑掳鍊曠€氬嘲螞閿燂拷
闂佽绻愮换鎰偓姘嵆閵嗗倻鎹勬笟顖氭櫊闂侀潧锛忛埀顒勫蓟閵堝鍋ㄦい鏍ㄦ皑婢ф洟鏌i幘瑙勭《闁瑰嘲顑夐、姗€鎮滈崱姗嗗敹闂佽崵鍠嶇欢銈夊箯閿燂拷