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

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

?? si47xx_rx_fm.c

?? si47xx FM 收音機的程序,通過單片機來控制搜臺燈功能
?? C
?? 第 1 頁 / 共 2 頁
字號:
 	error_ind = OperationSi47XX_2w(WRITE, &(Si47XX_fm_tune_status[0]), 2);
	if(error_ind)
		return I2C_ERROR;

	//wait CTS = 1
	do
	{	
		error_ind = OperationSi47XX_2w(READ, &(Si47XX_reg_data[0]), 1);
		if(error_ind)
			return I2C_ERROR;	
		loop_counter++;
	}
	while(((Si47XX_reg_data[0]) != 0x80) && (loop_counter < 0xff));  //loop_counter limit should guarantee at least 300us
	
	if(loop_counter >= 0xff)
		return LOOP_EXP_ERROR;	
		
	//read tune status: you should read out: {0x80,0x01,0x27,0xF6,0x2D,0x33,0x00,0x00} //Freq=0x27F6=10230KHz, RSSI=0x2D=45dBuV, SNR=0x33=51dB
	error_ind = OperationSi47XX_2w(READ, &Si47XX_reg_data[0], 8);	
	if(error_ind)
		return I2C_ERROR;
		
	if(((Si47XX_reg_data[1]&0x80) != 0))
		*SeekFail = 1;
	else
		*SeekFail = 0;
		
	if(((Si47XX_reg_data[1]&0x01) != 0))
		*valid_channel = 1;
	else
		*valid_channel = 0;
		
	*pChannel_Freq = ((Si47XX_reg_data[2] << 8) | Si47XX_reg_data[3]);

	return OK;

}

/**************************************

Si47XX_Set_FM_Frequency()

***************************************/

T_ERROR_OP Si47XX_Set_FM_Frequency(unsigned short channel_freq)
{
	if(Si47XX_FM_Tune_Freq(channel_freq) != OK) return ERROR;
	if(Si47XX_Wait_STC() != OK) return ERROR;	
	return OK;
}

/*********************************************

Si47XX_FM_Seek()

SeekFail:"no any station" or not when in WRAP mode

*********************************************/

T_ERROR_OP Si47XX_FM_Seek(T_SEEK_MODE seek_mode, unsigned short *pChannel_Freq, unsigned char *SeekFail)
{
	unsigned char valid_channel;
	unsigned short loop_counter = 0;

	do
	{
		if(Si47XX_FM_Seek_Start(seek_mode) != OK) return ERROR;
		if(Si47XX_Wait_STC() != OK) return ERROR;
		//read seek result:
		if(Si47XX_FM_Tune_Status(pChannel_Freq, SeekFail, &valid_channel) != OK) return ERROR;	
		
		loop_counter++;
	}
	while((valid_channel == 0) && (loop_counter < 0xff) && (*SeekFail == 0));  

	if(loop_counter >= 0xff)
		return LOOP_EXP_ERROR;
		
	if((seek_mode == SEEKDOWN_WRAP) || (seek_mode == SEEKUP_WRAP))
		if((valid_channel == 1) && (*SeekFail == 1))
			*SeekFail = 0;

	return OK;
}

/**************************************

Si47XX_FM_Seek_All()

***************************************/

T_ERROR_OP Si47XX_FM_Seek_All(unsigned short *pChannel_All_Array, unsigned char Max_Length, unsigned char *pReturn_Length)
{
	unsigned char SeekFail;
	unsigned short Channel_Result, Last_Channel = 8750;
		
	*pReturn_Length = 0;
	
	if(Si47XX_Set_FM_Frequency(8750) != OK) return ERROR;
	
	while(*pReturn_Length < Max_Length)
	{
		if(Si47XX_FM_Seek(SEEKUP_WRAP, &Channel_Result, &SeekFail) != OK) return ERROR;
			
		if(SeekFail)
			return OK;
		
		if((Channel_Result) <= Last_Channel)	
		{
			if((Channel_Result) == 8750)
			{
				*pChannel_All_Array++ = Channel_Result;
				(*pReturn_Length)++;
			}
			return OK;
		}
		else
		{
			*pChannel_All_Array++ = Last_Channel = Channel_Result;
			(*pReturn_Length)++;
		}
	}
	
	return OK;
}

/**************************************

Si47XX_FM_Get_RSSI()

***************************************/

T_ERROR_OP Si47XX_FM_Get_RSSI(unsigned char *pRSSI)
{
	unsigned short loop_counter = 0;
	unsigned char Si47XX_reg_data[32];	
	unsigned char error_ind = 0;
	unsigned char Si47XX_rsq_status[] = {0x23,0x00};	

	//send CMD
 	error_ind = OperationSi47XX_2w(WRITE, &(Si47XX_rsq_status[0]), 2);
	if(error_ind)
		return I2C_ERROR;

	//wait CTS = 1
	do
	{	
		error_ind = OperationSi47XX_2w(READ, &(Si47XX_reg_data[0]), 1);
		if(error_ind)
			return I2C_ERROR;	
		loop_counter++;
	}
	while(((Si47XX_reg_data[0]&0x80) == 0) && (loop_counter < 0xff));  //loop_counter limit should guarantee at least 300us

	if(loop_counter >= 0xff)
		return LOOP_EXP_ERROR;
	
	error_ind = OperationSi47XX_2w(READ, &(Si47XX_reg_data[0]), 8);	
	if(error_ind)
		return I2C_ERROR;
		
	*pRSSI = Si47XX_reg_data[4];
		
	return OK;	

}

/*************************************************

Si47XX_FM_Valid_Stop_MTK()

only used for MTK search all...

channel_number must from 87.5,87.6,87.7... to 108

if it's valid station, *Valid_Stop = 1, or *Valid_Stop = 0

note: for MTK channel: 875, 876...

*************************************************/

T_ERROR_OP Si47XX_FM_Valid_Stop_MTK(unsigned short channel_number, unsigned char *Valid_Stop)
{
	unsigned char SeekFail;
	static unsigned short last_channel_result = 0;
	/*
	static unsigned char last_channel_rssi;
	*/

  channel_number * = 10; 

	if(channel_number == 8750)
	{
		if(Si47XX_Set_FM_Frequency(10800) != OK) return ERROR;
		last_channel_result = 0;
	}
		
	if(last_channel_result > channel_number)
		*Valid_Stop = 0;
	else if(last_channel_result == channel_number)
		*Valid_Stop = 1;
	else	//if(last_channel_result < channel_number)
	{
		if(Si47XX_FM_Seek(SEEKUP_WRAP, &last_channel_result, &SeekFail) != OK) return ERROR;
			
		if(SeekFail)
			last_channel_result = 10810;
		else
		{
      /*
			DELAY(1ms);
			if(Si47XX_FM_Get_RSSI(&last_channel_rssi) != OK) return ERROR;
      */
		}
			
		if(last_channel_result > channel_number)
			*Valid_Stop = 0;
	  else if(last_channel_result == channel_number)
			*Valid_Stop = 1;
		else	//if(last_channel_result < channel_number)
		{
			*Valid_Stop = 0;
			last_channel_result = 10810;
		}

	}
	
	return OK;
}

/**************************************

Si47XX_FM_Get_SigLvl_MTK()

for the case: if(valid_stop) then (get_signal_level)

***************************************/

T_ERROR_OP Si47XX_FM_Get_SigLvl_MTK(unsigned char *pRSSI)
{
	unsigned short loop_counter = 0;
	unsigned char Si47XX_reg_data[32];	
	unsigned char error_ind = 0;
	unsigned char Si47XX_rsq_status[] = {0x23,0x00};

	DELAY(1ms);	

	//send CMD
 	error_ind = OperationSi47XX_2w(WRITE, &(Si47XX_rsq_status[0]), 2);
	if(error_ind)
		return I2C_ERROR;

	//wait CTS = 1
	do
	{	
		error_ind = OperationSi47XX_2w(READ, &(Si47XX_reg_data[0]), 1);
		if(error_ind)
			return I2C_ERROR;	
		loop_counter++;
	}
	while(((Si47XX_reg_data[0]&0x80) == 0) && (loop_counter < 0xff));  //loop_counter limit should guarantee at least 300us

	if(loop_counter >= 0xff)
		return LOOP_EXP_ERROR;
	
	error_ind = OperationSi47XX_2w(READ, &(Si47XX_reg_data[0]), 8);	
	if(error_ind)
		return I2C_ERROR;
		
	*pRSSI = Si47XX_reg_data[4];
		
	return OK;	

}

/*************************************************

Si47XX_FM_Seek_MTK()

only used for MTK search all...

channel_number must from 87.5,87.6,87.7... to 108

if it's invalid station, *Return_RSSI = 0

note: for MTK channel: 875, 876...

*************************************************/

T_ERROR_OP Si47XX_FM_Seek_MTK(unsigned short channel_number, unsigned char *Return_RSSI)
{
	unsigned char SeekFail;
	static unsigned short last_channel_result = 0;
	static unsigned char last_channel_rssi;


	if(channel_number == 8750)
	{
		if(Si47XX_Set_FM_Frequency(10800) != OK) return ERROR;
		last_channel_result = 0;
	}
		
	if(last_channel_result > channel_number)
		*Return_RSSI = 0;
	else if(last_channel_result == channel_number)
		*Return_RSSI = last_channel_rssi;
	else	//if(last_channel_result < channel_number)
	{
		if(Si47XX_FM_Seek(SEEKUP_WRAP, &last_channel_result, &SeekFail) != OK) return ERROR;
			
		if(SeekFail)
			last_channel_result = 10810;
		else
		{
			DELAY(1ms);
			if(Si47XX_FM_Get_RSSI(&last_channel_rssi) != OK) return ERROR;
		}
			
		if(last_channel_result > channel_number)
			*Return_RSSI = 0;
	  else if(last_channel_result == channel_number)
			*Return_RSSI = last_channel_rssi;
		else	//if(last_channel_result < channel_number)
		{
			*Return_RSSI = 0;
			last_channel_result = 10810;
		}

	}
	
	return OK;
}











?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕综合网| 亚洲国产成人porn| 亚洲精品欧美专区| 美腿丝袜亚洲综合| 成人国产免费视频| 日韩三级中文字幕| 日韩毛片视频在线看| 久久成人久久爱| 欧美日韩中文一区| 综合分类小说区另类春色亚洲小说欧美| 日韩精品成人一区二区在线| 91在线观看免费视频| 久久精品欧美日韩精品 | 精品成人佐山爱一区二区| 亚洲另类在线一区| 成人午夜精品在线| 久久噜噜亚洲综合| 欧美aaaaaa午夜精品| 欧美日韩另类一区| 亚洲激情自拍偷拍| 91美女片黄在线观看91美女| 日本一二三不卡| 国产精品一区一区三区| 欧美v日韩v国产v| 日本91福利区| 日韩精品专区在线影院观看| 视频在线观看一区| 欧美日韩国产一级二级| 亚洲国产aⅴ成人精品无吗| 日本道免费精品一区二区三区| 国产精品你懂的在线| 国产91在线观看丝袜| 久久精品亚洲精品国产欧美| 国产一区在线看| 国产人妖乱国产精品人妖| 国产自产v一区二区三区c| 精品国产欧美一区二区| 黄页网站大全一区二区| 久久综合九色欧美综合狠狠 | 黄色成人免费在线| 日韩欧美一区二区免费| 久久成人久久爱| 日本一区二区电影| av一区二区不卡| 亚洲私人黄色宅男| 欧美亚洲高清一区| 日韩av高清在线观看| 日韩欧美一级特黄在线播放| 精品一区二区成人精品| 国产亚洲成aⅴ人片在线观看 | 免费在线欧美视频| 精品国产不卡一区二区三区| 国产高清久久久久| 亚洲乱码国产乱码精品精的特点| 欧美日韩一区二区三区免费看| 天天操天天色综合| 久久久亚洲精品一区二区三区| 成人黄色一级视频| 亚洲综合色成人| 欧美不卡一二三| 成人免费黄色大片| 亚洲一区二区三区免费视频| 日韩视频在线你懂得| www.在线欧美| 日本特黄久久久高潮| 欧美激情一区二区三区不卡| 在线精品亚洲一区二区不卡| 久久精品理论片| 亚洲欧美日韩国产成人精品影院| 制服丝袜日韩国产| www.亚洲在线| 免费在线观看日韩欧美| 最新日韩av在线| 欧美videossexotv100| 99国产精品国产精品毛片| 日本在线不卡视频| 成人欧美一区二区三区黑人麻豆 | 波波电影院一区二区三区| 亚洲图片欧美一区| 久久精品人人做人人爽人人| 欧美影院一区二区三区| 狠狠色综合日日| 天堂成人免费av电影一区| 国产精品美女久久久久久久久| 欧美老人xxxx18| 一本色道**综合亚洲精品蜜桃冫| 精品一区二区三区免费| 亚洲国产一区视频| 国产精品欧美极品| 久久综合久色欧美综合狠狠| 欧美日韩精品二区第二页| 91亚洲精品乱码久久久久久蜜桃| 美腿丝袜一区二区三区| 亚洲一二三四在线观看| 亚洲欧洲日韩av| 国产日产亚洲精品系列| 日韩一卡二卡三卡国产欧美| 欧美四级电影在线观看| 99这里只有精品| 成人精品国产一区二区4080| 狠狠色丁香婷婷综合久久片| 首页国产欧美久久| 日韩制服丝袜av| 一区二区三区免费网站| 亚洲欧美一区二区三区国产精品| 久久精品视频免费观看| 2023国产精品| 久久久亚洲高清| 久久综合九色综合欧美就去吻| 这里只有精品99re| 91精品综合久久久久久| 欧美日韩激情一区二区三区| 欧美午夜精品一区二区蜜桃| 一本色道久久综合亚洲精品按摩| 成人性生交大片免费看视频在线| 久久99热这里只有精品| 久久99精品网久久| 精品一二线国产| 国产久卡久卡久卡久卡视频精品| 国产伦精品一区二区三区免费 | 一区二区三区在线观看欧美| 亚洲精品免费在线| 亚洲欧美日韩久久精品| 亚洲黄色片在线观看| 洋洋av久久久久久久一区| 亚洲成人综合视频| 日韩高清电影一区| 美国欧美日韩国产在线播放| 九九九精品视频| 国产91清纯白嫩初高中在线观看| 成人爱爱电影网址| 91视频一区二区三区| 欧美性videosxxxxx| 日韩一区二区三区四区| 精品国产乱码久久久久久老虎| 久久久精品tv| 亚洲黄色免费电影| 免费人成在线不卡| 国产精品一区三区| 一本大道av一区二区在线播放| 欧美影院午夜播放| 欧美va在线播放| 国产精品大尺度| 午夜精品福利一区二区蜜股av| 久久精品国产亚洲高清剧情介绍 | 欧美电视剧免费全集观看| 久久久久久久久97黄色工厂| 综合中文字幕亚洲| 午夜视频在线观看一区二区 | 99re在线精品| 欧美精品丝袜中出| 国产日韩亚洲欧美综合| 亚洲激情一二三区| 精品一区二区三区在线观看国产| 波多野结衣中文字幕一区二区三区 | 成人免费视频一区二区| 欧洲视频一区二区| 久久婷婷国产综合国色天香| 一区二区三国产精华液| 精品一区二区久久久| 日本久久电影网| 久久综合一区二区| 亚洲高清免费观看 | 国产亚洲精品免费| 午夜精品久久久久久| 成人午夜免费电影| 精品美女被调教视频大全网站| 亚洲精品免费播放| 国产激情视频一区二区在线观看| 欧美日韩视频专区在线播放| 成人免费在线播放视频| 国产在线视频精品一区| 欧美疯狂性受xxxxx喷水图片| 国产精品久久久久久久久免费樱桃 | 精品一区二区三区香蕉蜜桃| 色婷婷狠狠综合| 国产视频在线观看一区二区三区| 色综合天天综合色综合av| 三级不卡在线观看| av福利精品导航| 日韩一区二区免费视频| 亚洲影院理伦片| 99久久国产综合精品色伊| 久久综合色8888| 卡一卡二国产精品 | 六月丁香综合在线视频| 精品视频999| 一区二区三区在线视频观看| www.亚洲色图.com| 国产精品美女久久久久av爽李琼 | 亚洲综合成人在线| www.在线欧美| 国产精品久久久一区麻豆最新章节| 久久9热精品视频| 日韩欧美一级精品久久| 蜜桃精品视频在线| 日韩欧美一级二级三级| 久久99国产精品尤物| 日韩欧美一级特黄在线播放| 蜜桃一区二区三区四区|