Beispiel #1
0
void main()
{	
  	while(1)
	{
	    init_NRF24L01();
	  	CE=1;
	    NRF24L01_TxPacket(Txbuf);
	    Delay_ms(10);
		check_ACK();//发送应答信号检测,LED闪烁标志发送成功  
	}				
}
Beispiel #2
0
//************************************主函数************************************************************
void main(void)
{		 
	uchar RxBuf[20]={0};	
	init_1602();
    init_NRF24L01() ;
	while(1)
	{	   
//***********************************************************************************************
//		SetRX_Mode();
		nRF24L01_RxPacket(RxBuf);	
		RxBuf[1] = 0x00;
		RxBuf[2] = 0x00;
	}
	
}
Beispiel #3
0
//int CheckAsk(){
//	int Asking = 0;	
//	TxBuf[1] = 0x00;
//	TxBuf[2] = 0x00;
//	nRF24L01_TxPacket(TxBuf);  
//	TxBuf[1] = 0x00;
//	TxBuf[2] = 0x00;
//	Delay(1000);
//	SetRX_Mode();
//	nRF24L01_RxPacket(RxBuf);
//   	if(RxBuf[1]){					
//		if(	RxBuf[1]==0x01){
//			Asking = 1;
//		}
//		Delay(1000);
//	}
//	RxBuf[1] = 0x00;
//	RxBuf[2] = 0x00;
//	if(Asking) return 1;
//	else return 0;
//}
//void AskRec(){
//	TxBuf[1] = 0x02 ;
//	nRF24L01_TxPacket(TxBuf);	
//	TxBuf[1] = 0x00;
//	TxBuf[2] = 0x00;
//	Delay(1000);
//	SetRX_Mode();
//	nRF24L01_RxPacket(RxBuf);
//	RxBuf[1] = 0x00;
//	RxBuf[2] = 0x00;
//}
//************************************主函数************************************************************
void main(void)
{
	int Asking,Quizing,QzFn,i;
	unsigned char tf =0;
	char Ans[NUM];
	Asking = Quizing = QzFn = 0;
    init_NRF24L01() ;
	led0=0;led1=0;led2=0;led3=0;
	P0 = seg[2];
	while(1)
	{
	    
	    if (tf==1){	
			nRF24L01_TxPacket(TxBuf);	
			TxBuf[1] = 0x00;
			tf = 0;
			Delay(1000);
	    }
		SetRX_Mode();
		nRF24L01_RxPacket(RxBuf);
   		if(RxBuf[1]){	
			QzFn = 1;
			if(RxBuf[1]>=0x40 && RxBuf[1]<=0x6f){
				Ans[RxBuf[1]-0x41] = 'a';
			}
			else if(RxBuf[1]>=0x70 && RxBuf[1]<=0x9f){
				Ans[RxBuf[1]-0x71] = 'b';
			}
			else if(RxBuf[1]>=0xa0 && RxBuf[1]<=0xcf){
				Ans[RxBuf[1]-0xa1] = 'c';
			}
			else if(RxBuf[1]>=0xd0 && RxBuf[1]<=0xff){
				Ans[RxBuf[1]-0xd1] = 'd';
			} 
			for(i = 0;i<NUM;i++){
				if(Ans[i] == 0)
					QzFn = 0;	
			}
			if(QzFn){
				P0 = 0xBF;
			}	
			
			Delay(1000);
		}
		RxBuf[1] = 0x00;
	}
}
//************************************主函数************************************************************
void main(void)
{
	uchar i;	
    init_NRF24L01();
	StartUART();
	delay();
	while(1)
	{
/*		if(temp<4)
		{
		switch(temp)
		{
		case 	1:	
		P0=	0xFE;
			break;	
		case 	2:	 
 	   
			P0=	0xBF;
				break;	
		case 	3:
			P0=	0xf7;

		  	break;	
		default:  break;
		}
		}
	if(temp==3)
		{
		temp=0;
		}
*/
//		SetRX_Mode();
   		if(nRF24L01_RxPacket(RxBuf))
		{
//			temp++;
			R_S_Byte(0x73);
			for(i=0;i<32;i++)
			{
				R_S_Byte(RxBuf[i]);
				delay();
			}	
		}
	
	}
	
}
Beispiel #5
0
//************************************主函式************************************************************
void main(void)
{
	uchar temp =0;	
    init_NRF24L01() ;
	nRF24L01_TxPacket(TxBuf);	// Transmit Tx buffer data
	Delay(6000);
	P0=0xBF;
	while(1)
	{	
		nRF24L01_TxPacket(TxBuf);	// Transmit Tx buffer data
		LED=0;
		Delay(10000);      //可變 
		SPI_RW_Reg(WRITE_REG+STATUS,0XFF);  
		LED=1;
		Delay(8000); 
		}
	
}
Beispiel #6
0
//************************************主函数************************************************************
void main(void)
{		 
	uchar RxBuf[20]={0};	
	init_1602();
    init_NRF24L01() ;
	led0=1;led1=1;
		BELL=0;
		Delay(100);
		BELL=1;
	while(1)
	{	   
//***********************************************************************************************
//		SetRX_Mode();
		nRF24L01_RxPacket(RxBuf);	
		RxBuf[1] = 0x00;
		RxBuf[2] = 0x00;
	}
	
}
//************************************主函式************************************************************
void main(void)
{
	unsigned char tf =0;
	unsigned char TxBuf[20]={0};	  
	unsigned char RxBuf[20]={0};	
    init_NRF24L01() ;
	TxBuf[1] = 1 ;
	TxBuf[2] = 1 ;
	nRF24L01_TxPacket(TxBuf);	// Transmit Tx buffer data
	Delay(6000);
	while(1)
	{
    	if(KEY1 ==0 ) 
	  	{
		    TxBuf[1] = 1 ;
		    tf = 1 ; LED=0;
	    }
	   if (tf==1)
       {	
			nRF24L01_TxPacket(TxBuf);	// Transmit Tx buffer data
			TxBuf[1] = 0x00;
			TxBuf[2] = 0x00;
			tf=0;
			Delay(1000);LED=1;
	   }
//***********************************************************************************************
		SetRX_Mode();
		nRF24L01_RxPacket(RxBuf);					
			if(	RxBuf[1]==1)
			{	 	
				LED=0;
			}
			Delay(1000);LED=1;
			RxBuf[1] = 0x00;
			RxBuf[2] = 0x00;
	}
	
}
Beispiel #8
0
//*****************************************************************************
//
// This example demonstrates how to send a string of data to the UART.
//
//*****************************************************************************
int
main(void)
{
    //
    // Set the clocking to run directly from the crystal.
    //
    SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_8MHZ);

    //
    // Initialize the OLED display and write status.
    //
    //
    // Enable the peripherals used by this example.
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    //PC5,PC7 EN,CSN
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
    GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE,1<<5|1<<7);

    //SPI配置
    unsigned long ulDataTx[NUM_SSI_DATA];
    unsigned long ulDataRx[NUM_SSI_DATA];
    unsigned long ulindex;
    unsigned long ultemp=0;


    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
    //SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    GPIOPinConfigure(GPIO_PA2_SSI0CLK);
    GPIOPinConfigure(GPIO_PA3_SSI0FSS);
    GPIOPinConfigure(GPIO_PA4_SSI0RX);
    GPIOPinConfigure(GPIO_PA5_SSI0TX);
    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_3 |
                   GPIO_PIN_2);

    SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0,
                       SSI_MODE_MASTER, 4000000, 8);
    /*
    GPIODirModeSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_DIR_MODE_OUT); 
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_4MA,
                     GPIO_PIN_TYPE_STD_WPU);  
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_0, GPIO_DIR_MODE_OUT);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_0 , GPIO_STRENGTH_4MA,
                     GPIO_PIN_TYPE_STD_WPU);
    */
    SSIEnable(SSI0_BASE);


    //
    // Enable processor interrupts.
    //
    IntMasterEnable();

    //
    // Set GPIO A0 and A1 as UART pins.
    //
    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);

    //
    // Configure the UART for 115,200, 8-N-1 operation.
    //
    UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200,
                        (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                         UART_CONFIG_PAR_NONE));

    //
    // Enable the UART interrupt.
    //
    IntEnable(INT_UART0);
    UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);

    //
    // Prompt for text to be entered.
    //
    UARTStdioInit(0);
    UARTSend((unsigned char *)"Enter text:\n\r", 12);
    UARTSend((unsigned char *)"Enter text:\n\r", 12);

    //清零接收缓冲区
    while(SSIDataGetNonBlocking(SSI0_BASE, &ulDataRx[0]))
    {
    }
    ulDataTx[0] = 's';
    ulDataTx[1] = 'p';
    ulDataTx[2] = 'i';

    set_nrf24l01_csn_l();
    /*
    for(ulindex = 0; ulindex < NUM_SSI_DATA; ulindex++)
    {
    	UARTprintf("'%c' ", ulDataTx[ulindex]);
    	SSIDataPut(SSI0_BASE, ulDataTx[ulindex]);
    }
    */
    set_nrf24l01_csn_h();
    _delay_ms(1);

    if( setDataRate( RF24_250KBPS ) )
    {
        p_variant = true ;
    }

    //初始化NRF24L01
    set_module_tx();
    nrf_write_reg(NRF_CONFIG,0x0a);
    print_byte_register("CONFIG\t",NRF_CONFIG,1);

    init_NRF24L01();
    set_module_tx();

    unsigned char transfer_value[]="EEWORLD_MSP430_00";

    //set_module_tx();

    //读不出来spi数据的原因是,原来里面有没读取完的数据,需要先清理,再读写.



    setChannel(74);
    UARTprintf("getchannel:%d\r\n",getChannel());
 //   setChannel(24);
 //   UARTprintf("getchannel:%d\r\n",getChannel());

    //写地址
    nrf_write_buf(TX_ADDR,(uint8_t*)&addresses[0],5);

    uint8_t recvbuf[5];
    nrf_read_buf(TX_ADDR,&recvbuf[0],5);

    for(int i=0;i<5;i++)
    {
        UARTprintf("%d:%d ",i,recvbuf[i]);
    }
    UARTprintf("\r\n");
    //end of test write address


    uint8_t data[32];

    for(int i=0;i<32;i++)
    {
        data[i]=i;
    }


    

    UARTprintf("\r\n");
    //while(SSIDataGetNonBlocking(SSI0_BASE, &ulDataRx[0]))
    //{
    //}

    //重新发送前,避免写缓冲区满
    flush_tx();
    spi_write_reg(STATUS, ( spi_read_reg(STATUS) ) | _BV(MAX_RT) );
    //role=role_ping_out
    openWritingPipe(addresses[0]);
    openReadingPipe(1,addresses[1]);

    nrf_write_buf(RX_ADDR_P0,(uint8_t*)&addresses[0],5);

    unsigned char test;
    //while(1)
    {
        test=spi_read_reg(0x05);
        UARTprintf("test:%d\r\n",test);
        _delay_ms(1000);
    }

    //调试关闭
    //nrf_write_reg(EN_AA,0x00);
    nrf_write_reg(EN_RXADDR,0x02);
    //nrf_write_reg(SETUP_RETR,0x00);
    nrf_write_reg(RX_PW_P1,0x20);

    //set_module_tx();
    nrf_write_reg(NRF_CONFIG,0x0b);
    nrf_write_reg(CONFIG, nrf_read_reg(CONFIG) | _BV(PRIM_RX));
    nrf_write_reg(STATUS, _BV(RX_DR) | _BV(TX_DS) | _BV(MAX_RT) );
    set_nrf24l01_ce_h();
    nrf_write_buf(RX_ADDR_P0,(uint8_t*)&addresses[0],5);
    set_nrf24l01_ce_h();
    if(nrf_read_reg(FEATURE) & _BV(EN_ACK_PAY))
    {
        flush_tx();
    }

    flush_rx();

    print_status(get_status());
    nrf_write_reg(SETUP_AW,0x03);
    print_byte_register("SETUP_AW\t",SETUP_AW,1);
    print_address_register("RX_ADDR_P0-1",RX_ADDR_P0,2);
    print_byte_register("RX_ADDR_P2-5",RX_ADDR_P2,4);

    print_address_register("TX_ADDR\t",TX_ADDR,1);

    print_byte_register("RX_PW_P0-6",RX_PW_P0,6);


    print_byte_register("EN_AA\t",EN_AA,1);
    print_byte_register("EN_RXADDR",EN_RXADDR,1);
    print_byte_register("RF_CH\t",RF_CH,1);
    print_byte_register("RF_SETUP",RF_SETUP,1);

    print_byte_register("CONFIG\t",NRF_CONFIG,1);
    print_byte_register("DYNPD/FEATURE",DYNPD,2);


    UARTprintf("Data Rate\t = %s\r\n", pgm_read_word(&rf24_datarate_e_str_P[getDataRate()]));
    UARTprintf("Model\t\t = %s\r\n",   pgm_read_word(&rf24_model_e_str_P[isPVariant()]));
    UARTprintf("CRC Length\t = %s\r\n",pgm_read_word(&rf24_crclength_e_str_P[getCRCLength()]));
    UARTprintf("PA Power\t = %s\r\n",  pgm_read_word(&rf24_pa_dbm_e_str_P[getPALevel()]));

    Init_Timer_A();

    set_nrf24l01_ce_h();
    //将业务数据写入:WR_TX_PLOAD

    uint8_t fifo_status,status,state,i;
    while(1)
    {
        fifo_status=spi_read_reg(FIFO_STATUS);
        if(fifo_status&0x02)
        {
            status=spi_read_reg(STATUS);
            if(status&_BV(RX_DR))
            {
                state=spi_send_byte(RD_RX_PLOAD);
                for(i=0;i<RX_PLOAD_WIDTH;i++)
                {
                    status=spi_send_byte(0xff);
                    //buf[i]=status;
                }
                nrf_write_reg(FLUSH_RX,0xFF);
                //UARTprintf(".");
                counter++;
            }
            if(status &0x02)
            {
                nrf_write_reg(FLUSH_RX,0xFF);
                //UARTprintf(".");
                counter++;
            }

            nrf_rx_packet(data);
        }
    }

    while(available(0))
    {
        //UARTprintf(".");
        if(nrf_rx_packet(data) == 0)
        {
            counter++;
        }
        
        //UARTprintf(".");
        //_delay_ms(50);
        /*
        set_nrf24l01_ce_l();
        nrf_write_buf(WR_TX_PLOAD,data,TX_PLOAD_WIDTH);
        set_nrf24l01_ce_h();
        _delay_ms(30);
        */
    }
}