懒得写了,直接贴代码,这是点c文件
#include "stm8s.h"
#include "24L01.h"
/*
u8 DTX_ADDRESS[TX_ADR_WIDTH]= {0x22,0x22,0x22,};//0x22,0x22}; //本地地址
//u8 DRX_ADDRESS[RX_ADR_WIDTH]= {0x11,0x11,0x11,0x11,0x11}; //接收地址
u8 DRX_ADDRESS[RX_ADR_WIDTH]= {0x22,0x22,0x22,};//0x22,0x22}; //接收地址
u8 *TX_ADDRESS; //本地地址
u8 *RX_ADDRESS; //接收地址
*/
//u8 RF_ADDRESS[TX_ADR_WIDTH];
u8 RF_ADDRESS[ADR_WIDTH]={0x42,0x01,0xA1};
//u8 RF_TX_ADDRESS[ADR_WIDTH]={0x42,0x01,0xA1};
//u8 RF_RX_ADDRESS[ADR_WIDTH]={0x42,0x01,0xA1};
u8 Rxbuf[PLOAD_WIDTH];
u8 Txbuf[PLOAD_WIDTH]={1,2,3,4,5};//,6,7,8,};
u8 NRF24L01_RFCH=0;
u8 SPI_ReadWriteByte(u8 byte){
while(SPI_GetFlagStatus(SPI_FLAG_TXE)==RESET);
SPI_SendData(byte);
while(SPI_GetFlagStatus(SPI_FLAG_RXNE)==RESET);
byte=SPI_ReceiveData();
return byte;
}
//函数:在指定位置读出指定长度的数据
//返回值,读到的状态寄存器的值
u8 NRF24L01_Read_Buf(u8 reg,u8 *pBuf,u8 len)
{
u8 status,u8_ctr;
CLR24CSN; //SPI使能
status = SPI_ReadWriteByte(reg); //发送寄存器值(位置),并读取状态值
for(u8_ctr=0;u8_ctr<len;u8_ctr++)
pBuf[u8_ctr]=SPI_ReadWriteByte(0Xff); //读取数据
SET24CSN; //关闭SPI
return(status);
}
//函数:在指定位置写指定长度的数据
//返回值,写入状态寄存器的值
u8 NRF24L01_Write_Buf(u8 reg, u8 *pBuf, u8 len)
{
u8 status,u8_ctr;
CLR24CSN; //SPI使能
status = SPI_ReadWriteByte(reg); //发送寄存器值(位置),并读取状态值
for(u8_ctr=0; u8_ctr<len; u8_ctr++)
SPI_ReadWriteByte(*pBuf++); //写入数据
SET24CSN; //关闭SPI
return(status);
}
//功能:SPI写寄存器
//reg:指定寄存器地址
//value:写入的值
u8 NRF24L01_Write_Reg(u8 reg,u8 value)
{
u8 status;
CLR24CSN; //SPI使能
status = SPI_ReadWriteByte(reg); //发送寄存器号
SPI_ReadWriteByte(value); //写入寄存器的值
SET24CSN; //关闭SPI
return(status);
}
//函数:SPI读寄存器值
//reg:要读的寄存器
u8 NRF24L01_Read_Reg(u8 reg)
{
u8 reg_val;
CLR24CSN; //SPI使能
SPI_ReadWriteByte(reg); //发送寄存器号
reg_val = SPI_ReadWriteByte(0Xff); //读取寄存器的内容
SET24CSN; //关闭SPI
return(reg_val);
}
//初始化24l01的IO口
void NRF24L01_Init(void)
{
GPIO_Init(PORT_POWERON_24CSN, PIN_POWERON_24CSN, GPIO_MODE_OUT_PP_HIGH_SLOW); //CS GPIO
GPIO_Init(PORT_POWERON_24IRQ, PIN_POWERON_24IRQ, GPIO_MODE_IN_PU_NO_IT); //IRQ GPIO
GPIO_Init(PORT_POWERON_24CE, PIN_POWERON_24CE, GPIO_MODE_OUT_PP_HIGH_SLOW); //CE GPIO
SPI_DeInit();
SPI_Init(SPI_FIRSTBIT_MSB,
SPI_BAUDRATEPRESCALER_4,
SPI_MODE_MASTER,
SPI_CLOCKPOLARITY_LOW,
SPI_CLOCKPHASE_1EDGE,
SPI_DATADIRECTION_2LINES_F