高级会员
- 积分
- 949
- 威望
- 519
- 贡献
- 244
- 兑换币
- 272
- 注册时间
- 2012-10-1
- 在线时间
- 93 小时
|
5贡献
在读写nrf2401的函数中,只要往2401中写命令,则返回值就是状态寄存器Status中的内容,再接着写一串0,则返回值就是想要读取的寄存器中的内容,各位路过的大侠们,我的理解正确吗,资料上没讲这一点,看例程时对这里有点迷糊,望各位过路的大侠指点指点。小弟在此谢过。
uchar SPI_RW_Reg(BYTE reg, BYTE value)
{
uchar status;
CSN = 0; // CSN low, init SPI transaction // CS为低,开始SPI传输
status = SPI_RW(reg); // select register // 传送命令与地址
SPI_RW(value); // ..and write value to it.. // 写1 BYTE 值
CSN = 1; // CSN high again // 完成SPI传输
return(status); // 返回 status // return nRF24L01 status byte
}
/**************************************************
Function: SPI_Read();
Description:
Read one byte from nRF24L01 register, 'reg'
/**************************************************/
BYTE SPI_Read(BYTE reg)
{
BYTE reg_val;
CSN = 0; // CSN low, initialize SPI communication... // CS为低,开始SPI传输
SPI_RW(reg); // Select register to read from.. // 设置读地址
reg_val = SPI_RW(0); // ..then read registervalue // 读数据
CSN = 1; // CSN high, terminate SPI communication // 完成SPI传输
return(reg_val); // return register value // 返回数据
}
/**************************************************
Function: SPI_Read_Buf();
Description:
Reads 'bytes' #of bytes from register 'reg'
Typically used to read RX payload, Rx/Tx address
/**************************************************/
uchar SPI_Read_Buf(BYTE reg, BYTE *pBuf, BYTE bytes)
{
uchar status,byte_ctr;
CSN = 0; // CS为低,开始SPI传输// Set CSN low, init SPI tranaction
status = SPI_RW(reg); // 传输读接收数据的命令. // Select register to write to and read status byte
for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)
pBuf[byte_ctr] = SPI_RW(0); // 读 1 BYTE数据 // Perform SPI_RW to read byte from nRF24L01
CSN = 1; // 数据传送完成. // Set CSN high again
return(status); // return nRF24L01 status byte
}
|
|