⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf9052.c

📁 ARM程序
💻 C
📖 第 1 页 / 共 2 页
字号:
uint8   nrf905_SpiReaddata(void)
{	
	uint8 i;
	uint8 data;
	
	for(i=0;i<8;i++);
	{	
	    DataBuf<<=1;	
		IO0SET=nRF905_SCK;//时序
		if(nRF905_MISO)//input
			DataBuf=data&0x01;
		else 
			DataBuf=data&0x01;
		
		IO0CLR=nRF905_SCK;
	}
	
	
	return DataBuf;
	
}


uint8 const RxBufConf[10]={0x01,0x0e,0x44,0x20,0x20,0xe7,0xe7,0xe7,0xe7,0xdf};
uint8 const RxBufConfAdd[]={0xe7,0xe7,0xe7,0xe7};
//第二个字节00:0dBm,0C:10dBm
/*const unsigned char rfconfig[10]=
{
0x01,           //CH_NO[7:0]
0x0c,           //7,6:no use;5:自动重发=0;4:接收灵敏度降低=0;3,2:发射功率=10dBm;1:433MHz;CH_NO[8]=0
0x44,           //7:no use;6,5,4:发送地址宽度4;3:no use;2,1,0:接收地址宽度4 
0x20,           //7,6 no use;5-0:接收数据宽度32
0x20,           //7,6 no use;5-0:发送数据宽度32
0xcc,           //接收地址字节0(设备ID)
0xcc,           //接收地址字节1(设备ID) 
0xcc,           //接收地址字节2(设备ID)
0xcc,           //接收地址字节3(设备ID)
0x58            //7:CRC模式8位;6:CRC校验许可;5,4,3:011表示16MHz;2:UP_CLK_EN=0没有外部时钟;1,0:外部时钟频率
};
*/
/*-------------------------------------------------------------*/

void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<5000; i++);
}

/*-------------------------------------------------------------*/
void   Config905(void)
{	
  
  IO0SET |= nRF905_PWR_UP;       //Standby和SPI编程
  IO0CLR |= nRF905_TRX_CE;
  IO0CLR |= nRF905_TX_EN;//待机配置
  
  IO0CLR=nRF905_CSN;  //CSN=0                   // enable Spi 片选开 
   
  nrf905_SpiWritedata(WC);                  // Write config command 
  nrf905_SpiWritedata(CH_NO_BYTE);                      //中心频率低8位 
  nrf905_SpiWritedata(0x0c); //发射+10dBm,发射频率433MHz,中心频率第9位=0 
  nrf905_SpiWritedata(0x44);     //接收地址宽度4字节,发送地址宽度4字节 
  nrf905_SpiWritedata(0x20);                    //接收数据宽度32字节 
  nrf905_SpiWritedata(0x20);                    //发送数据宽度32字节 
  nrf905_SpiWritedata(0xE7);                    //接收有效地址第1字节 
  nrf905_SpiWritedata(0xE7);                    //接收有效地址第2字节 
  nrf905_SpiWritedata(0xE7);                    //接收有效地址第3字节 
  nrf905_SpiWritedata(0xE7);                    //接收有效地址第4字节 
  nrf905_SpiWritedata(0xd8);            //CRC16模式使能,晶体振荡器频率16MHz;没有外部时钟
                 
  IO0SET=nRF905_CSN ;                 // Disable Spi ;
	
}

/*--------------------------测试程序----------------------------------*/
void nrf905_SpiTest(void)
{
   uint16 i;
   IO0CLR |= nRF905_CSN;                  
   nrf905_SpiWritedata(RC);      
   for(i=0;i<10;i++) 
   	
   {
   
    RxBuf[i]= nrf905_SpiReaddata();
    UART0_SendByte(RxBuf[i]);//必须是字节方式发送!!!!!!
    while((U0LSR&0x20)==0);         
   }
    
    IO0SET |= nRF905_CSN;
    
    
    DelayNS(10);
    UART0_SendStr(SEND_STRING); 
} 

/*-------------------------------------------------------------*/
void TxPacket(void)//senddata
{   
    uint8  i;
    IO0SET |= nRF905_PWR_UP;      //ShockBurst  TX
    IO0CLR |= nRF905_TRX_CE;//0/nRF905_TRX_CE 不需要为1,first because IO1 usefu
    IO0SET |= nRF905_TX_EN;//l 
    
    IO0CLR=nRF905_CSN; 
	nrf905_SpiWritedata(WTA);
	nrf905_SpiWritedata(0xE7);                    //发送沼行У刂返?字节 
    nrf905_SpiWritedata(0xE7);                    //发送有效地址第2字节 
    nrf905_SpiWritedata(0xE7);                    //发送有效地址第3字节 
    nrf905_SpiWritedata(0xE7);                    //发送有效地址第4字节 
	
	
	IO0SET=nRF905_CSN;//disable spi
	DelayNS(10);
	
	IO0CLR=nRF905_CSN;	
	nrf905_SpiWritedata(WTP);
	for(i=0;i<SIZE;i++)
	{
	    
		nrf905_SpiWritedata(TxBuf[i]);// attention TxBuf[i]  should be initialize
	}
	
	IO0SET=nRF905_CSN;
	
	IO0SET=nRF905_TRX_CE;//启动发射
	DelayNS(10);
	IO0CLR=nRF905_TRX_CE;
}
void Transmitter(void)
{
	uint8  i;
	for (i=0;i<32;i++)
	TxBuf[i]=i+i;
	TxPacket();
	while((IO0PIN&nRF905_DR)==1)//check it is tx succeed
	{   IO0SET=BEEPCON;
	    DelayNS(10); 
		IO0CLR=BEEPCON;
	}
	
	
	IO0SET |= nRF905_PWR_UP;       //Standby和SPI编程
    IO0SET |= nRF905_TRX_CE;
    IO0CLR |= nRF905_TX_EN;//待机配置
}

/*----------------------main.c-     ---------------------------*/
int  main(void)
{  
   
   PINSEL0 = 0x00000005;		    // 设置I/O连接到UART0  spi0 其中spi 口状态未定。
   IO0DIR  = 0xfdffe3df;     
   
  
    /*
    IO0CLR=nRF905_MOSI;     //p0.6  out
   	IO0CLR=nRF905_CSN;      //p0.8  out
   	IO0CLR=nRF905_MISO;     //p0.5  in
   	IO0CLR=nRF905_SCK;      //p0.4	out
	IO0CLR=BEEPCON;         //p0.7 beepcon 失效
	
	IO0CLR=nRF905_DR;       //p0.12  in
	IO0CLR=nRF905_AM;       //p0.25	in 用0.25 代替0.13 
	IO0CLR=nRF905_CD;       //p0.10  in
	IO0CLR=nRF905_uPCLK;    //p0.11  in
	   
	IO0CLR=nRF905_PWR_UP;   //p0.18  out
	IO0CLR=nRF905_TRX_CE;   //p0.19  out
	IO0CLR=nRF905_TX_EN;    //p0.22  out 第2 个开发板0.21 管脚失效
    IO0CLR=nRF905_VDD;      //p0.20  out
    
    IO0CLR=nRF905_CHANGE;   //p0.13change
  
    IO0SET=nRF905_MOSI;     //p0.6
   	IO0SET=nRF905_CSN;      //p0.8
   	IO0SET=nRF905_MISO;     //p0.5
   	IO0SET=nRF905_SCK;      //p0.4	
	IO0SET=BEEPCON;         //p0.7 beepcon 失效
	
	IO0SET=nRF905_DR;       //p0.12
	IO0SET=nRF905_AM;       //p0.13	用0.25 代替0.13
	IO0SET=nRF905_CD;       //p0.10
	IO0SET=nRF905_uPCLK;    //p0.11
	   
	IO0SET=nRF905_PWR_UP;   //p0.18
	IO0SET=nRF905_TRX_CE;   //p0.19
	IO0SET=nRF905_TX_EN;    //p0.22 第2 个开发板0.21 管脚失效
    //IO0SET=nRF905_P21;      //p0.21
    IO0SET=nRF905_CHANGE;   //p0.13change
   
    IO0SET=nRF905_VDD;      //p0.20
   */ 
   
   UART0_Ini();
   DelayNS(300);
   Config905();
   nrf905_SpiTest();
   Transmitter();  
   
   return(0);
  
}













⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -