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

📄 fm_search.c

📁 调频收音芯片TEA5767在mx21上的linux驱动程序
💻 C
字号:
/************************************************************************ *  File Name : fm_search.c *  Description : *      Test program of fm driver *  History : *      15-Sep-04       Aaron Shen              New ************************************************************************ */#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <sys/ioctl.h>#include <fcntl.h>#define TEA5767HN_IOC_TEST_I2CRW 12#define TEA5767HN_IOC_TEST_HILO 13#define TEA5767HN_IOC_SET_BAND	14#define TEA5767HN_IOC_AUTO_SEARCH	15#define TEA5767HN_IOC_STEP_SEARCH_UP	16#define TEA5767HN_IOC_STANDBY	17#define TEA5767HN_IOC_STEP_SEARCH_DOWN		18#define SOUND_MIXER_GARY_BYPASS  80417     //I define it to support bypass mode selectstatic unsigned int presets[20];static unsigned char station_num = 0;static unsigned char check_freq(unsigned int freq)           //don't store existing frequency{      unsigned char i;	unsigned char flag = 0;	for (i=0; i < station_num ; i++)	{	      if(freq != presets[i]) 			flag = 0;		else 		{		      flag = 1;			return 0;		}	}	return 1;}int main(int argc, char *argv[]){	unsigned int freq = 87500;//104800;  //KHz	int audio_fd, mixer_fd, fm_fd;//, analog_fd;	int choose = 0, next = 0;	int i;      printf("FM radio playing\n");	audio_fd = open("/dev/dsp", O_WRONLY );	if (audio_fd == -1) {		printf ("dev/dsp");		exit (-1);	}	mixer_fd = open("/dev/mixer", O_RDONLY);       ioctl(mixer_fd, SOUND_MIXER_GARY_BYPASS, 0);	fm_fd = open("/dev/misc/tea5767hn", O_RDWR);	if(fm_fd < 0) {		printf("Device FM radio /dev/misc/tea5767hn open error !\n");		exit(-1);	}		while (station_num < 20) {		 freq = ioctl(fm_fd, TEA5767HN_IOC_STEP_SEARCH_UP, freq);				if ((freq > 87499) && (freq < 107999)) {			if (check_freq(freq)) {				presets[station_num] = freq;			       //printf("FM Radio station %d:  %d.%d MHz \n",station_num+1, (presets[station_num]/1000), (presets[station_num]%1000));                          station_num++;				freq = freq - 50;			}		}	}	for (i=0; i<20; i++)		printf("FM Radio station %d:  %d.%d MHz \n",i+1, (presets[i]/1000), (presets[i]%1000));playback:	printf("Please input station number(1-20) and press Enter:");	scanf("%d", &choose);	if ((choose > 0) && (choose < 21))	{	    printf("Now playing station %d:  %d.%d MHz \n",choose, (presets[choose-1]/1000), (presets[choose-1]%1000));          ioctl(fm_fd, TEA5767HN_IOC_SET_BAND, presets[choose-1]);	}	else	    printf("input wrong number, please input again! \n");	      printf("Please input '1 + Enter' to play another FM Radio station, or if you want to exit press '0 + Enter':");      scanf("%d", &next);	if (next == 1)		goto playback;	else		return 1;		return 0;}

⌨️ 快捷键说明

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