📄 mcbsp.c
字号:
uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)
{
uint status,uchar_ctr;
CSNW(0); //CSN = 0; //SPI使能
_nop();
status = SPI_RW(reg);
for(uchar_ctr=0; uchar_ctr<uchars; uchar_ctr++) //
SPI_RW(*pBuf++);
_nop();
CSNW(1); //CSN = 1; //关闭SPI
return(status); //
}
/****************************************************************************************************/
//*函数:void SetRX_Mode(void)
//*功能:数据接收配置
/****************************************************************************************************/
void SetRX_Mode(void)
{
CEW(0); //CE=0;
_nop();
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // IRQ收发完成中断响应,16位CRC ,主接收
_nop();
CEW(1); //CE = 1;
//inerDelay_us(130);
inerDelay_us(1000);
}
/******************************************************************************************************/
//*函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
//*功能:数据读取后放如rx_buf接收缓冲区中
/******************************************************************************************************/
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
{
unsigned char revale=0;
sta=SPI_Read(STATUS); // 读取状态寄存其来判断数据接收状况
if(sta&0x40) // 判断是否接收到数据
{
CEW(0); //CE = 0; //SPI使能
_nop();
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
revale =1; //读取数据完成标志
}
_nop();
SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志
return revale;
}
/***********************************************************************************************************/
//*函数:void nRF24L01_TxPacket(unsigned char * tx_buf)
//*功能:发送 tx_buf中数据
//**********************************************************************************************************/
void nRF24L01_TxPacket(unsigned char *tx_buf)
{
CEW(0); //CE=0; //StandBy I模式
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 装载接收端地址
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 装载数据
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送
CEW(1); //CE=1; //置高CE,激发数据发送
inerDelay_us(10);
}
void main()
{
unsigned char i,temp;
// unsigned char tf =0;
unsigned char TxBuf[32]={0}; //
unsigned char RxBuf[32]={0};
CSL_init();
GPIO_pinDirection(GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN7,1);
GPIO_pinDirection(GPIO_PIN4|GPIO_PIN6,0);
/* GPIO_pinDirection(GPIO_PIN4|GPIO_PIN6|GPIO_PIN7,1);
GPIO_pinWrite(GPIO_PIN0,0);
GPIO_pinWrite(GPIO_PIN1,0);
GPIO_pinWrite(GPIO_PIN2,0);
GPIO_pinWrite(GPIO_PIN3,0);
GPIO_pinWrite(GPIO_PIN4,0);
GPIO_pinWrite(GPIO_PIN6,0);
GPIO_pinWrite(GPIO_PIN7,0);
GPIO_pinWrite(GPIO_PIN0,1);
GPIO_pinWrite(GPIO_PIN1,1);
GPIO_pinWrite(GPIO_PIN2,1);
GPIO_pinWrite(GPIO_PIN3,1);
GPIO_pinWrite(GPIO_PIN4,1);
GPIO_pinWrite(GPIO_PIN6,1);
GPIO_pinWrite(GPIO_PIN7,1);
GPIO_pinWrite(GPIO_PIN0,0);
GPIO_pinWrite(GPIO_PIN1,0);
GPIO_pinWrite(GPIO_PIN2,0);
GPIO_pinWrite(GPIO_PIN3,0);
GPIO_pinWrite(GPIO_PIN4,0);
GPIO_pinWrite(GPIO_PIN6,0);
GPIO_pinWrite(GPIO_PIN7,0);
GPIO_pinWrite(GPIO_PIN0,1);
GPIO_pinWrite(GPIO_PIN1,1);
GPIO_pinWrite(GPIO_PIN2,1);
GPIO_pinWrite(GPIO_PIN3,1);
GPIO_pinWrite(GPIO_PIN4,1);
GPIO_pinWrite(GPIO_PIN6,1);
GPIO_pinWrite(GPIO_PIN7,1);
GPIO_pinWrite(GPIO_PIN0,0);
GPIO_pinWrite(GPIO_PIN1,0);
GPIO_pinWrite(GPIO_PIN2,0);
GPIO_pinWrite(GPIO_PIN3,0);
GPIO_pinWrite(GPIO_PIN4,0);
GPIO_pinWrite(GPIO_PIN6,0);
GPIO_pinWrite(GPIO_PIN7,0);
GPIO_pinWrite(GPIO_PIN0,1);
GPIO_pinWrite(GPIO_PIN1,1);
GPIO_pinWrite(GPIO_PIN2,1);
GPIO_pinWrite(GPIO_PIN3,1);
GPIO_pinWrite(GPIO_PIN4,1);
GPIO_pinWrite(GPIO_PIN6,1);
GPIO_pinWrite(GPIO_PIN7,1);
*/
/*
GPIO_pinDirection(GPIO_PIN1|GPIO_PIN0,0);
GPIO_pinDirection(GPIO_PIN0|GPIO_PIN1,1);//作为输出时读是可以的
GPIO_pinWrite(GPIO_PIN0,0);
iod=GPIO_pinRead(GPIO_PIN0);
GPIO_pinWrite(GPIO_PIN0,1);
iod=GPIO_pinRead(GPIO_PIN0);
GPIO_pinWrite(GPIO_PIN0,0);
iod=GPIO_pinRead(GPIO_PIN0);
GPIO_pinWrite(GPIO_PIN0,1);
iod=GPIO_pinRead(GPIO_PIN0);
GPIO_pinWrite(GPIO_PIN1,0);
GPIO_pinWrite(GPIO_PIN1,1);
GPIO_pinWrite(GPIO_PIN1,0);
GPIO_pinWrite(GPIO_PIN1,1);
// GPIO_pinDirection();
iod=GPIO_RGET(IODIR);
iod=GPIO_RGET(IODATA);
*/
// unsigned char tf =0;
// unsigned char TxBuf[20]={0}; //
// unsigned char RxBuf[20]={0};
init_NRF24L01() ;
// led0=0;led1=0;led2=0;led3=0;
// P0=0x00;
// TxBuf[1] = 1 ;
// TxBuf[2] = 1 ;
// LBDS=0;
// nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data
// LBDS=(unsigned int)1;
Delay(6000);
/*
for(i=0;i<0x18;i++)
{
temp=SPI_Read(i);
}
SPI_Read_Buf(0x0a, TxBuf, 5);
SPI_Read_Buf(0x10, TxBuf, 5);
*/
// SetRX_Mode();
// P0=0xBF;
while(1)
{
/*
// if(KEY1 ==0 )
{
// P0=seg[1];
TxBuf[1] = 1 ;
tf = 1 ;
}
// if(KEY2 ==0 )
{
// P0=seg[2];
TxBuf[2] =1 ;
tf = 1 ;
}
*/
// if (tf==1)
/*
for(i=0;i<20;i++)
{
TxBuf[i]=i;
}
{
nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data
TxBuf[1] = 0x00;
TxBuf[2] = 0x00;
// tf=0;
Delay(1000);
}
while(1);
*/
//***********************************************************************************************
SetRX_Mode();
nRF24L01_RxPacket(RxBuf);
// temp=SPI_Read(0);
/*
if(RxBuf[1]|RxBuf[2])
{
if( RxBuf[1]==1)
{
// P0=seg[3];
// LBDS=(unsigned int)2;
}
if( RxBuf[2]==1)
{
// P0=seg[4];
// LBDS=(unsigned int)4;
}
// JDQ=~JDQ;
Delay(3000);
}
RxBuf[1] = 0x00;
RxBuf[2] = 0x00;
*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -