NRF24L01 的控制程序主要包括以下几个函数
uchar SPI_RW(uchar byte);
uchar SPI_RW_Reg(uchar reg, uchar value);
uchar SPI_Read(uchar reg);
uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar bytes);
uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bytes);
void RX_Mode(void);
void TX_Mode(void);
10、uchar SPI_RW(uchar byte)
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..SCK:芯片控制的时钟线(SPI 时钟)
byte |= MISO; // capture current MISO bit
SCK = 0; // ..then set SCK low again
}
return(byte); // return read byte
}
注:此处的MOSI和MISO都是一个bit,并不是一个byte。因此可以使MOSI依次接收变量byte,MISO依次发送到变量byte.
最基本的函数,完成GPIO 模拟SPI 的功能。将输出字节(MOSI)从MSB 循环输出,同时将输入字节(MISO)从LSB 循环移入。上升沿读入,下降沿输出。(从SCK 被初始化为低电平可以判断出)NRF24L01 的控制程序主要包括以下几个函数
uchar SPI_RW(uchar byte);
uchar SPI_RW_Reg(uchar reg, uchar value);
uchar SPI_Read(uchar reg);
uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar bytes);
uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bytes);
void RX_Mode(void);
void TX_Mode(void);
10、uchar SPI_RW(uchar byte)
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..SCK:芯片控制的时钟线(SPI 时钟)
byte |= MISO; // capture current MISO bit
SCK = 0; // ..then set SCK low again
}
return(byte); // return read byte
}
注:此处的MOSI和MISO都是一个bit,并不是一个byte。因此可以使MOSI依次接收变量byte,MISO依次发送到变量byte.
最基本的函数,完成GPIO 模拟SPI 的功能。将输出字节(MOSI)从MSB 循环输出,同时将输入字节(MISO)从LSB 循环移入。上升沿读入,下降沿输出。(从SCK 被初始化为低电平可以判断出)NRF24L01 的控制程序主要包括以下几个函数
uchar SPI_RW(uchar byte);
uchar SPI_RW_Reg(uchar reg, uchar value);
uchar SPI_Read(uchar reg);
uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar bytes);
uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bytes);
void RX_Mode(void);
void TX_Mode(void);
10、uchar SPI_RW(uchar byte)
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..SCK:芯片控制的时钟线(SPI 时钟)
byte |= MISO; // capture current MISO bit
SCK = 0; // ..then set SCK low again
}
return(byte); // return read byte
}
注:此处的MOSI和MISO都是一个bit,并不是一个byte。因此可以使MOSI依次接收变量byte,MISO依次发送到变量byte.
最基本的函数,完成GPIO 模拟SPI 的功能。将输出字节(MOSI)从MSB 循环输出,同时将输入字节(MISO)从LSB 循环移入。上升沿读入,下降沿输出。(从SCK 被初始化为低电平可以判断出)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。