亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? srf.c

?? 制作Zigbee模塊的詳細電路原理圖和C代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:

void UzForceTxMode(){

	spi_sw(RFCTL, spi_sr(RFCTL) | 0x02);
}


/**************************************************************
	Function Name: UzTx()
	Description: Send Raw Data
	Parameters: DataPtr -> Out Data Pointer
	                   Length -> Out data Length
	                   
	Return Value: SUCCESS -> Send Data Successful
	                     FAILURE -> Send Data Failure 
**************************************************************/

UINT8 UzTx(UINT8 *DataPtr, UINT8 Length){
	UINT8 Value;
	UINT32 Timer;
	
	spi_lw(TX_N_LEN, Length); // Fill Data Length Into TXFIFO

	spi_fill_fifo(TX_N_BASE, DataPtr, Length); //Fill Data Into TXFIFO

	Value = spi_sr(TXNMTRIG);

	if(*(DataPtr) & 0x20){
		Value |= 0x05; //Set Ackreq(SREG0x1B[2]) if re-transmission is required

		//Set Wait Time
		Timer = ((640 + 32*Length + 912)*3 + 2816)*2; //(CCA + Tx*Length + AckWaitDuration)*MaxRetry + Backoff (us) , System Clock: 20MHz
	}else{
		Value &= ~0x07; //Clear
		Value |= 0x01;

		//Set Wait Time
		Timer = ((640 + 32*Length + 912)*3)*2; //(CCA + Tx*Length)*MaxRetry + Backoff (us) , System Clock: 20MHz
	}
      
       spi_sw(TXNMTRIG, Value);  //Set trigger bit(SREG0x1B[0]) to send packet This bit will be automatically cleared.

	//Wait Interrupt
	while(Timer > 0){
		if(UnetSys.IntFlag.TxN){
			UnetSys.IntFlag.TxN = 0; //Reset Status
			if(!(spi_sr(TXSR) & 0x01)) {
				return SUCCESS; //Check TXFIFO release state
			}else{ 
				break;
			}			
		}

              Timer--;
	}

       return FAILURE;

}

/**************************************************************
	Function Name:  UzRx()
	Description: Receive Data fron RXFIFO
	Parameters: RecvBuff -> Data buff that put received data
	Return Value: reveived data length
**************************************************************/

UINT8 UzRx(UINT8 *RecvBuff){ 
	UINT8 Length;

	if(UnetSys.IntFlag.Rx ==1){ //Check Interrupt Status
		spi_rd_rx_fifo(RecvBuff, &Length); //Receive Data from RxFIFO
		UnetSys.IntFlag.Rx =0; //Reset Status
		return Length;
	}

	return 0;
}


/**************************************************************
	Function Name: UzRxOnlyBeacon()
	Description: Let Rx Receive Only IEEE 802.15.4 Beacon Frame
	Parameters: None
	Return Value: None
**************************************************************/

void UzRxOnlyBeacon(){

	spi_sw(RXFLUSH, (spi_sr(RXFLUSH) & ~0x0e) | 0x02);
}

/**************************************************************
	Function Name: UzRxOnlyCommand()
	Description: Let Rx Receive Only IEEE 802.15.4 Command Frame
	Parameters: None
	Return Value: None
**************************************************************/

void UzRxOnlyCommand(){

	spi_sw(RXFLUSH, (spi_sr(RXFLUSH) & ~0x0e) | 0x08);
}


/**************************************************************
	Function Name: UzRxOnlyData()
	Description: Let Rx Receive Only IEEE 802.15.4 Data Frame
	Parameters: None
	Return Value: None
**************************************************************/

void UzRxOnlyData(){

	spi_sw(RXFLUSH, (spi_sr(RXFLUSH) & ~0x0e) | 0x04);
}

/**************************************************************
	Function Name: UzRxAllFrame()
	Description: Let Rx Receive all IEEE 802.15.4 Frame
	Parameters: None
	Return Value: None
**************************************************************/

void UzRxAllFrame(){

	spi_sw(RXFLUSH, spi_sr(RXFLUSH) & ~0x0e);
}

/**************************************************************
	Function Name: UzRxFlush()
	Description: Drop data in RXFIFO 
	Parameters: None
	Return Value: None
**************************************************************/

void UzRxFlush(){

	spi_sw(RXFLUSH, spi_sr(RXFLUSH) | 0x01);// Trigger drop data
}

/**************************************************************
	Function Name: UzSleep()
	Description: Force UZ2400 into Sleep Mode
	Parameters: None
	Return Value: None
**************************************************************/

void UzSleep(){

	spi_sw(SLPACK ,spi_sr(SLPACK) | 0x80);
}

/**************************************************************
	Function Name: UzTimedSleep()
	Description: Periodic Sleep Mode of UZ2400
	Parameters: MS -> Sleep Time
	Return Value: None
**************************************************************/

void UzTimedSleep(UINT8 MS){  // Range 0~2000 MS, use in un-sloted mode
	INT16 Main, Remain;
	div_t Temp;

	Temp = div(1000000*MS, 30517);  //If sleep clock = 32.768KHz
	Main = Temp.quot;

	Temp = div(1000*Temp.rem, 50); // System clock = 20MHz
	Remain = Temp.quot;

	//Set Main Counter
	spi_lw(TXMAINCNTH0, 0);
	
	spi_lw(TXMAINCNTM, (Main & 0xff00) >> 8);

	spi_lw(TXMAINCNTL, (Main & 0x00ff));

	//Set Re-main Counter
	spi_lw(TXREMCNTH, (Remain & 0xff00) >> 8);

	spi_lw(TXREMCNTL, (Remain & 0x00ff));

	//WakeCnt
	spi_sw(SLPACK ,spi_sr(SLPACK) |0x41);

	spi_sw(RFCTL, spi_sr(RFCTL) & ~0x18);

	//Trigger sleep
	spi_lw(TXMAINCNTH1, spi_lr(TXMAINCNTH1) | 0x80);

}

/**************************************************************
	Function Name: UzRegWakeUp()
	Description: Register Wake Up Mode, wake Up UZ2400
	Parameters: None
	Return Value: None
**************************************************************/

void UzRegWakeUp(){
	UINT8 Value;

	//Disable ext. wake up (im. wakeup mode), Register wake up
	Value = spi_sr(TXBCNINTL);
	Value &= ~0x80;

	Value |= 0x40;
	spi_sw(TXBCNINTL, Value); 

	//Flag be released by software
	Value &= ~0x40;
	spi_sw(TXBCNINTL, Value);
}

/**************************************************************
	Function Name: UzPowWakeUp()
	Description: Power Management Wake Up Mode, wake Up UZ2400
	Parameters: None
	Return Value: None
**************************************************************/

void UzPowWakeUp(){

	//Disable ext. wake up
	spi_sw(TXBCNINTL, spi_sr(TXBCNINTL) & ~0x80);

	//Reset power management
	spi_sw(SOFTRST, spi_sr(SOFTRST) | 0x04);
}

/**************************************************************
	Function Name: UzEnabExtWakeUp()
	Description: Enable External Wake Up
	Parameters: None
	Return Value: None
**************************************************************/

void UzEnabExtWakeUp(){

	spi_sw(TXBCNINTL, spi_sr(TXBCNINTL) | 0x80);

	spi_sw(RXFLUSH, spi_sr(RXFLUSH) | 0x60);
}

/**************************************************************
	Function Name: UzEnabBatteryLifeEx()
	Description: Set IEEE 802.15.4 Battey Life Extension
	Parameters: None
	Return Value: None
**************************************************************/

void UzEnabBatteryLifeEx(){
	
	spi_sw(TXMCR, spi_sr(TXMCR) | 0x40);
}


/**************************************************************
	Function Name: UzDisBatteryLifeEx()
	Description: Set IEEE 802.15.4 Battey Life Extension
	Parameters: None
	Return Value: None
**************************************************************/

void UzDisBatteryLifeEx(){

	spi_sw(TXMCR, spi_sr(TXMCR) & ~0x40);
}

/**************************************************************
	Function Name: UzSetBatteryMonitor()
	Description: Enable and Set threshold for Battery Monitor
	Parameters: Threshold -> Monitor Threshold
	Return Value: None
**************************************************************/

void UzSetBatteryMonitor(UINT8 Threshold){

	spi_lw(RFCTRL6, spi_lr(RFCTRL6) | 0x08); //Enable Battery Monitor

	spi_lw(RFCTRL5, (spi_lr(RFCTRL5) & ~0xf0) | (Threshold << 4)); //Set Threshold
}

/**************************************************************
	Function Name: UzCheckBattery()
	Description: Check battery whether the level lower or higher than threshold
	Parameters: None
	Return Value: SUCCESS -> Battery Higher than threshold
	                     FAILURE -> Battery Lower than threshold
**************************************************************/

UINT8 UzCheckBattery(){

	if((spi_sr(RXSR) & 0x20) == 0x20) //Check Battery Level
		return FAILURE; //Battery Lower than threshold

	return SUCCESS; //Battery Higher than threshold
}

/**************************************************************
	Function Name:  UzSecureTx()
	Description: Transmit Secure Data
	Parameters: SecMode -> Encryption Mode
	                   *SecKey -> Security Key, defined by user
	                   *DataPtr -> Data Pointer
	                   Length -> Data Length
	                   HeaderLength -> Length of Data Header	                
	Return Value: SUCCESS -> Send Data Successful
	                     FAILURE -> Send Data Failure 
**************************************************************/

UINT8 UzSecureTx(UINT8 SecMode, UINT8 *SecKey, UINT8 *DataPtr, UINT8 Length, UINT8 HeaderLength){
	UINT8 Value;
	UINT32 Timer; 
	
	//Fill TXFIFO
	spi_lw(TX_N_HDR, HeaderLength); //Header Length
	spi_lw(TX_N_LEN, Length); //Data Length
	spi_fill_fifo(TX_N_BASE, DataPtr, Length); //Data

	//Fill Security key
	spi_fill_fifo(KEY_TX_N, SecKey, 16);

	//Fill in cipher mode
	spi_sw(SECCR0, (spi_sr(SECCR0) & ~0x07) | SecMode);

	Value = spi_sr(TXNMTRIG);

	if(*(DataPtr) & 0x20){
		Value |= 0x05; //Set Ackreq(SREG0x1B[2]) if re-transmission is required

		//Set Wait Time
		Timer = ((640 + 32*Length + 912)*3 + 2816)*2; //(CCA + Tx*Length + AckWaitDuration)*MaxRetry + Backoff (us) , System Clock: 20MHz
	}else{
		Value &= ~0x07; //Clear
		Value |= 0x01;

		//Set Wait Time
		Timer = ((640 + 32*Length + 912)*3)*2; //(CCA + Tx*Length)*MaxRetry + Backoff (us) , System Clock: 20MHz
	}

	spi_sw(TXNMTRIG, Value); //Trigger Tx start with security

	while(Timer > 0){
		if(UnetSys.IntFlag.TxN == 1){
			UnetSys.IntFlag.TxN = 0;
			if(!(spi_sr(TXSR) & 0x01)){ //Check TXFIFO release state
				return SUCCESS;
		 	}else{
				break;
			}			
		}

		Timer -= 1;
	}

	return FAILURE;
}

/**************************************************************
	Function Name: UzSecureRx()
	Description: Receive Secure Data
	Parameters: SecMode -> Decryption Mode
	                   *SecKey -> Security Key, defined by user
	                   *InBuff -> Data Buffer Pointer
	Return Value: Length -> Received Data Length
**************************************************************/

UINT8 UzSecureRx(UINT8 SecMode, UINT8 *SecKey, UINT8 *InBuff){
	UINT8 Length;

	if(UnetSys.IntFlag.Sec == 1){
		UnetSys.IntFlag.Sec = 0;
		
		spi_fill_fifo(KEY_RX_N, SecKey, 16);//Fill Secure key into FIFO

		spi_sw(SECCR0, (spi_sr(SECCR0) & ~0x38) | SecMode); //Fill cipher mode

		//Security start
		spi_sw(SECCR0, spi_sr(SECCR0) | 0x40); // Trigger Security Process 

		//Wait Interrupt
		while(1){
			if(UnetSys.IntFlag.Rx == 1){
				spi_rd_rx_fifo(InBuff, &Length); //Fetch Data from RXFIFO
				UnetSys.IntFlag.Rx =0; //Reset Interrupt Flag
				return Length;
			}
		}		
	}
		
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品天干天干在线综合| 日韩免费一区二区三区在线播放| 免费成人av资源网| 亚洲国产日日夜夜| 亚洲一区二区在线视频| 一区二区三区在线观看欧美| 亚洲免费av高清| 亚洲综合久久av| 丝袜美腿亚洲综合| 日本va欧美va精品发布| 免费成人性网站| 国产麻豆91精品| 成人黄色在线视频| 色诱视频网站一区| 欧美精品乱人伦久久久久久| 日韩一区二区三区四区五区六区| 91精品国产福利在线观看| 91精品蜜臀在线一区尤物| 日韩女优av电影| 国产午夜亚洲精品理论片色戒| 国产区在线观看成人精品 | 久久国产夜色精品鲁鲁99| 日韩av一级片| 国产一区二区三区四区五区美女| 精品制服美女久久| 国产成人精品一区二| 91视频免费播放| 欧美欧美欧美欧美| 国产偷国产偷精品高清尤物| 亚洲视频1区2区| 日韩电影在线观看一区| 韩国v欧美v亚洲v日本v| 一本久久a久久免费精品不卡| 欧美日韩国产天堂| 久久美女艺术照精彩视频福利播放| 中国色在线观看另类| 亚洲一卡二卡三卡四卡五卡| 激情六月婷婷久久| 91在线国产观看| 日韩欧美亚洲国产另类 | 欧美怡红院视频| 日韩精品一区国产麻豆| 亚洲人成小说网站色在线| 日韩成人精品在线| 99久久国产综合精品色伊| 欧美不卡在线视频| 国产丝袜欧美中文另类| 中文字幕永久在线不卡| 免费成人美女在线观看.| 99re8在线精品视频免费播放| 欧美一级黄色大片| 一区二区三区精品在线| 国产成人在线视频免费播放| 欧美挠脚心视频网站| 日韩一区中文字幕| 国产一区91精品张津瑜| 欧美精品日日鲁夜夜添| 亚洲男人的天堂网| 国产精品一区免费视频| 91.xcao| 亚洲激情图片一区| 国产成人丝袜美腿| www国产成人免费观看视频 深夜成人网| 亚洲欧美电影一区二区| 成人手机电影网| 久久综合九色综合97婷婷| 日韩精品1区2区3区| 欧美自拍偷拍午夜视频| 亚洲欧美一区二区三区极速播放| 国产馆精品极品| 欧美精品一区二区在线观看| 日本vs亚洲vs韩国一区三区| 91精品国产入口在线| 日韩avvvv在线播放| 欧美精品一二三| 午夜精品福利一区二区三区蜜桃| 色综合久久88色综合天天| 亚洲视频 欧洲视频| 91麻豆精东视频| 亚洲欧洲日韩综合一区二区| 99久久国产综合色|国产精品| 国产精品高潮呻吟| 91农村精品一区二区在线| 亚洲一区二区三区自拍| 欧美日韩国产系列| 黄色成人免费在线| 国产欧美日韩另类一区| 不卡一区在线观看| 一区二区三区在线免费播放| 欧美美女直播网站| 免费观看日韩av| 中文在线一区二区| 欧美亚洲一区二区三区四区| 日韩av在线发布| www国产精品av| 色综合久久综合网97色综合| 亚洲va欧美va人人爽| 欧美变态tickle挠乳网站| 国产一区二区美女诱惑| 国产精品乱人伦一区二区| 日本久久精品电影| 久久精品国产澳门| 国产精品福利影院| 欧美日韩一区二区三区四区| 精品写真视频在线观看| 亚洲日本在线观看| 日韩无一区二区| 97se亚洲国产综合自在线| 日韩福利视频导航| 国产精品传媒视频| 欧美丝袜丝交足nylons图片| 蜜臀av一区二区| 亚洲视频综合在线| 欧美不卡一区二区三区| av一区二区三区在线| 日本欧美在线观看| 综合亚洲深深色噜噜狠狠网站| 9191久久久久久久久久久| 成人免费的视频| 免费观看在线色综合| 亚洲精品中文在线影院| 久久久精品黄色| 91麻豆精品国产91久久久资源速度 | 精品国产一区二区三区av性色 | 欧美肥胖老妇做爰| 99re这里只有精品首页| 美腿丝袜一区二区三区| 亚洲日本中文字幕区| 久久亚洲私人国产精品va媚药| 91黄色免费观看| av资源网一区| 国产成人av电影在线播放| 日本不卡的三区四区五区| 一级女性全黄久久生活片免费| 久久久久国产精品人| 日韩三级视频中文字幕| 欧美丰满少妇xxxxx高潮对白| 成人免费看片app下载| 精品一区二区三区视频| 日韩精品一级中文字幕精品视频免费观看 | 制服丝袜激情欧洲亚洲| va亚洲va日韩不卡在线观看| 日韩电影在线观看网站| 一个色在线综合| 综合av第一页| 日韩美女啊v在线免费观看| 久久久精品人体av艺术| 久久久久久97三级| 国产视频一区在线观看| 亚洲精品一区在线观看| 欧美一区二视频| 7777精品久久久大香线蕉| 欧美久久高跟鞋激| 欧美精品丝袜中出| 日韩一级片网站| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品亚洲午夜一区二区三区| 日本在线不卡一区| 日本欧美一区二区| 五月天中文字幕一区二区| 人禽交欧美网站| 青青草原综合久久大伊人精品 | 91欧美一区二区| 91福利国产精品| 欧美高清性hdvideosex| 日韩午夜av电影| 国产亚洲va综合人人澡精品| 国产欧美精品国产国产专区| 国产精品久久久久久久久晋中| 国产精品电影一区二区三区| 亚洲精品国产第一综合99久久| 亚洲国产精品久久人人爱蜜臀| 日韩国产精品久久久久久亚洲| 青青草精品视频| 成人美女视频在线观看| 色乱码一区二区三区88| 日韩欧美亚洲国产精品字幕久久久| 精品国产乱码久久久久久久| 国产精品福利av| 青娱乐精品视频在线| 成人免费观看男女羞羞视频| 在线一区二区三区四区| 精品日韩成人av| 亚洲婷婷综合久久一本伊一区| 亚洲va国产天堂va久久en| 国产精品91xxx| 欧美网站大全在线观看| 91精品国产综合久久久久久久久久| 欧美变态tickling挠脚心| 中文字幕一区二区三区精华液| 天堂va蜜桃一区二区三区漫画版| 美女脱光内衣内裤视频久久影院| 国产91精品一区二区麻豆亚洲| 在线观看亚洲一区| 久久久国产精品麻豆| 午夜视频在线观看一区二区| 成人黄色小视频| 亚洲精品在线一区二区| 婷婷夜色潮精品综合在线| a4yy欧美一区二区三区|