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

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

?? vs1003.c

?? uCOS-II 2.83 帶監控任務OS-VIEW
?? C
字號:
//文件名:vs1003.c
//功能:vs1003 的底層驅動程序,主控芯片為LPC21xx;
//     其他的微處理器(帶SPI接口的)只需稍加修改即可適用;
//     對于不帶硬SPI接口的微處理器可以用IO進行SPI的時序模擬
 
#include "vs1003.h"
#include "..\SPI\spi.h"

/**********************************************************/
/*  函數名稱 :   MSCI_Init                                */
/*  函數功能 : 初始化SPI接口,設置為主機。               */
/*  參數     :  無                                        */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void  MSCI_Init(void)
{  
	PINSEL0 = (PINSEL0 & (~(0xFF << 8))) | (0x15 << 8);	//選擇 SPI 
    S0SPCCR = 0x10;		                // SPI 時鐘設置
 	S0SPCR  = 	(0 << 3) |				// CPHA = 0, 
 		  		(0 << 4) |				// CPOL = 0, 
 		  		(1 << 5) |				// MSTR = 1, 
 		  		(0 << 6) |				// LSBF = 0, 
 	      		(0 << 7);				// SPIE = 1, 

}

/**********************************************************/
/*  函數名稱 :  InitPortVS1003                            */
/*  函數功能 : MCU與vs1003接口的初始化                   */
/*  參數     :  無                                        */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void  InitPortVS1003(void)
{
	FIO0DIR &= 0xFFFFFFFF & (~(uint32)MP3_DREQ);   //其他接口線的設置,其中dreq 為輸入口
	FIO0DIR |= MP3_XRESET | MP3_XCS | MP3_XDCS;//xRESET,xCS,xDS均為輸出口
	FIO0SET |= MP3_XRESET | MP3_XCS | MP3_XDCS;//xRESET,xCS,xDS默認輸出高電平	
}


/**********************************************************/
/*  函數名稱 :  SPIPutChar                                */
/*  函數功能 : 通過SPI發送一個字節的數據                 */
/*  參數     :  待發送的字節數據                          */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void  SPIPutChar(uint8 c)
{     
	SPI_SEND_BYTE = c;
	SPIWait();	 //等待SPI將數據發送完畢
}


/**********************************************************/
/*  函數名稱 :  Mp3SoftReset                              */
/*  函數功能 : vs1003軟件復位                            */
/*  參數     :  無                                        */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void Mp3SoftReset(void)
{
	uint8 temp;
	Mp3WriteRegister (SCI_MODE, 0x08, 0x04); 	//軟件復位
	OSTimeDly(OS_TICKS_PER_SEC / 100); 			//延時1ms
	DREQWait(); 								//等待軟件復位結束
	Mp3WriteRegister(SCI_CLOCKF, 0x98, 0x00);	//設置vs1003的時鐘,3倍頻
	Mp3WriteRegister (SCI_AUDATA, 0xBB, 0x81); 	//采樣率48k,立體聲
	Mp3WriteRegister(SCI_BASS, 0x00, 0x55);		//設置重音
	Mp3SetVolume(0x00, 0x00);					//設置音量
  	OSTimeDly(OS_TICKS_PER_SEC / 100); 			//延時1ms
    	
    //向vs1003發送4個字節無效數據,用以啟動SPI發送
	SPIStart();
    Mp3SelectData();
	SPIRW(&temp, 0);
	SPIRW(&temp, 0);
	SPIRW(&temp, 0);
	SPIRW(&temp, 0);
	Mp3DeselectData();
	SPIEnd();

}
/**********************************************************/
/*  函數名稱 :  Mp3Reset                                  */
/*  函數功能 : vs1003硬件復位                            */
/*  參數     :  無                                        */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void Mp3Reset(void)
{
	uint8 temp;	
	Mp3PutInReset();//xReset = 0   復位vs1003      
	OSTimeDly(OS_TICKS_PER_SEC / 10);//延時100ms
	SPIStart();
	SPIRW(&temp, 0xFF);//發送一個字節的無效數據,啟動SPI傳輸
	Mp3DeselectControl();   //xCS = 1
	Mp3DeselectData();     //xDCS = 1
	SPIEnd();
	Mp3ReleaseFromReset(); //xRESET = 1
	OSTimeDly(OS_TICKS_PER_SEC / 10);            //延時100ms
	DREQWait(); //等待DREQ為高
	OSTimeDly(OS_TICKS_PER_SEC / 10);            //延時100ms
	Mp3SetVolume(0xFE, 0xFE);  
	Mp3SoftReset();//vs1003軟復位
}


/***********************************************************/
/*  函數名稱 :  VsSineTest                                 */
/*  函數功能 : vs1003正弦測試,將該函數放在while循環中,  */
/*              如果能持續聽到一高一低的聲音,證明測試通過 */                            
/*  參數     :  無                                         */
/*  返回值   :  無                                         */
/*---------------------------------------------------------*/
void VsSineTest(void)
{
	uint8 temp;
	Mp3PutInReset();  //xReset = 0   復位vs1003
	OSTimeDly(OS_TICKS_PER_SEC / 10);       //延時100ms  
	SPIStart();      
	SPIRW(&temp, 0xFF);//發送一個字節的無效數據,啟動SPI傳輸
	Mp3DeselectControl();  
	Mp3DeselectData();
	SPIEnd();	     
	Mp3ReleaseFromReset(); 
	OSTimeDly(OS_TICKS_PER_SEC / 10);;	               
 	Mp3WriteRegister(SCI_MODE,0x08,0x20);//進入vs1003的測試模式
	DREQWait();     //等待DREQ為高
 	
 	//向vs1003發送正弦測試命令:0x53 0xef 0x6e n 0x00 0x00 0x00 0x00
 	//其中n = 0x24, 設定vs1003所產生的正弦波的頻率值,具體計算方法見vs1003的datasheet
	SPIStart();
 	Mp3SelectData();       //xDCS = 1,選擇vs1003的數據接口
    SPIRW(&temp, 0x53);      
	SPIRW(&temp, 0xEF);      
	SPIRW(&temp, 0x6E);      
	SPIRW(&temp, 0x24);      
	SPIRW(&temp, 0x00);      
	SPIRW(&temp, 0x00);
	SPIRW(&temp, 0x00);
	SPIRW(&temp, 0x00);
	Mp3DeselectData();//程序執行到這里后應該能從耳機聽到一個單一頻率的聲音
	SPIEnd();
	OSTimeDly(OS_TICKS_PER_SEC / 2);;
  
    //退出正弦測試
	SPIStart();
	Mp3SelectData();
	SPIRW(&temp, 0x45);
	SPIRW(&temp, 0x78);
	SPIRW(&temp, 0x69);
	SPIRW(&temp, 0x74);
	SPIRW(&temp, 0x00);
	SPIRW(&temp, 0x00);
	SPIRW(&temp, 0x00);
	SPIRW(&temp, 0x00);
	Mp3DeselectData();
	SPIEnd();
	OSTimeDly(OS_TICKS_PER_SEC / 2);

    //再次進入正弦測試并設置n值為0x44,即將正弦波的頻率設置為另外的值
	SPIStart();
    Mp3SelectData();       
	SPIRW(&temp, 0x53);      
	SPIRW(&temp, 0xEF);      
	SPIRW(&temp, 0x6E);      
	SPIRW(&temp, 0x44);      
	SPIRW(&temp, 0x00);      
	SPIRW(&temp, 0x00);
	SPIRW(&temp, 0x00);
	SPIRW(&temp, 0x00);
	Mp3DeselectData();
	SPIEnd();
	OSTimeDly(OS_TICKS_PER_SEC / 2);	 

	//退出正弦測試
	SPIStart();
	Mp3SelectData();
	SPIRW(&temp, 0x45);
	SPIRW(&temp, 0x78);
	SPIRW(&temp, 0x69);
	SPIRW(&temp, 0x74);
	SPIRW(&temp, 0x00);
	SPIRW(&temp, 0x00);
	SPIRW(&temp, 0x00);
	SPIRW(&temp, 0x00);
	Mp3DeselectData();
	SPIEnd();
	OSTimeDly(OS_TICKS_PER_SEC / 2);
 }

/*************************************************************/
/*  函數名稱 :  Mp3WriteRegister                             */
/*  函數功能 : 寫vs1003寄存器                               */
/*  參數     :  寄存器地址,待寫數據的高8位,待寫數據的低8位 */
/*  返回值   :  無                                           */
/*-----------------------------------------------------------*/
void Mp3WriteRegister(uint8 addressbyte, uint8 highbyte, uint8 lowbyte)
{
	uint8 temp;
	SPIStart();
	Mp3DeselectData();
	Mp3SelectControl();				//XCS = 0
	SPIRW(&temp, VS_WRITE_COMMAND); //發送寫寄存器命令
	SPIRW(&temp, addressbyte);      //發送寄存器的地址
	SPIRW(&temp, highbyte);         //發送待寫數據的高8位
	SPIRW(&temp, lowbyte);          //發送待寫數據的低8位
	Mp3DeselectControl();
	SPIEnd();
}

/*************************************************************/
/*  函數名稱 :  Mp3ReadRegister                              */
/*  函數功能 : 寫vs1003寄存器                               */
/*  參數     :  寄存器地址				     */
/*  返回值   :  vs1003的16位寄存器的值                       */
/*-----------------------------------------------------------*/
uint16 Mp3ReadRegister(uint8 addressbyte)
{
	uint8 temp;
	uint16 resultvalue = 0;
	SPIStart();
	Mp3DeselectData();
	Mp3SelectControl();				//XCS = 0
	SPIRW(&temp, VS_READ_COMMAND); 	//發送讀寄存器命令
	SPIRW(&temp, (addressbyte));	//發送寄存器的地址
	SPIRW(&temp, 0xFF); 			//發送讀時鐘
	resultvalue = temp << 8;		//讀取高8位數據
	SPIRW(&temp, 0xFF);		   		//發送讀時鐘
	resultvalue |= temp;  			//讀取低8位數據
	Mp3DeselectControl(); 
	SPIEnd();             
	return (resultvalue);				//返回16位寄存器的值
}

void LoadPatch(){
	uint16 i;
	for (i=0; i < CODELEN; i++) {    
		Mp3WriteRegister(atab[i], dtab[i]>>8, dtab[i]&0xFF);
	}
	OSTimeDly(OS_TICKS_PER_SEC / 100);
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久香蕉的特点| 国产在线精品免费av| 中文字幕在线不卡视频| 亚洲国产高清不卡| 亚洲国产精品精华液ab| 国产精品网站在线| 亚洲视频一二区| 亚洲观看高清完整版在线观看| 亚洲一区二区视频在线| 亚洲第一在线综合网站| 天天av天天翘天天综合网| 肉肉av福利一精品导航| 秋霞成人午夜伦在线观看| 免费亚洲电影在线| 国产精品一区二区久久不卡| 国产乱码精品一区二区三区av| 国产成人午夜99999| 不卡欧美aaaaa| 欧美亚一区二区| 欧美大白屁股肥臀xxxxxx| 国产日韩欧美一区二区三区乱码| 国产精品久久影院| 亚洲影视资源网| 国内成+人亚洲+欧美+综合在线| 成人精品国产免费网站| 91成人免费在线视频| 91精品久久久久久蜜臀| 国产精品免费aⅴ片在线观看| 亚洲日本在线观看| 蜜臀av亚洲一区中文字幕| 成人精品视频一区二区三区| 欧美三级电影在线看| 国产丝袜在线精品| 石原莉奈在线亚洲三区| 国产一区999| 欧美精品xxxxbbbb| 中文字幕 久热精品 视频在线| 亚洲一区二区三区四区在线观看| 国产一区二区0| 欧美午夜视频网站| 中文字幕va一区二区三区| 青青草成人在线观看| 99久久免费精品高清特色大片| 欧美三级在线播放| 国产精品久久久久久久裸模| 热久久免费视频| 在线观看一区不卡| 国产人成一区二区三区影院| 人人爽香蕉精品| 欧美日韩精品二区第二页| 国产精品久久久久久久久快鸭| 久久精品免费观看| 欧美一级欧美三级| 性感美女久久精品| 91国内精品野花午夜精品| 日本一区二区三区在线不卡| 激情综合一区二区三区| 欧美丰满少妇xxxxx高潮对白| 国产欧美综合在线| 丝袜亚洲精品中文字幕一区| 日本电影亚洲天堂一区| 最新高清无码专区| 成人av免费观看| 国产性做久久久久久| 激情六月婷婷久久| 欧美大片拔萝卜| 日韩成人免费电影| 日韩亚洲欧美高清| 免费精品99久久国产综合精品| 欧美美女bb生活片| 亚洲超丰满肉感bbw| 欧美无乱码久久久免费午夜一区 | 日韩和欧美一区二区| 91麻豆福利精品推荐| 国产精品乱子久久久久| 不卡视频一二三四| 综合久久综合久久| 在线亚洲人成电影网站色www| 一区二区成人在线观看| 色婷婷久久久综合中文字幕 | 欧美高清性hdvideosex| 亚洲免费色视频| 在线视频欧美精品| 日韩一区精品字幕| 欧美电影免费观看高清完整版| 美腿丝袜在线亚洲一区| 欧美精品一区视频| 不卡影院免费观看| 亚洲第一成人在线| 日韩视频一区在线观看| 国产一区二区主播在线| 17c精品麻豆一区二区免费| 欧美日韩精品三区| 国产在线一区观看| 亚洲免费av网站| 欧美一级淫片007| 成人激情午夜影院| 天天操天天色综合| 中文字幕不卡在线| 欧美精品v日韩精品v韩国精品v| 蜜臀av在线播放一区二区三区| 国产亚洲精品福利| 欧美日韩精品一区二区三区蜜桃| 国产最新精品精品你懂的| 亚洲美女区一区| 久久综合九色综合久久久精品综合 | 天堂成人免费av电影一区| 精品国产91亚洲一区二区三区婷婷| 大尺度一区二区| 石原莉奈在线亚洲三区| 欧美极品xxx| 日韩一区二区三区在线观看| av不卡在线播放| 韩国av一区二区三区四区| 亚洲激情男女视频| 久久欧美中文字幕| 欧美无人高清视频在线观看| 国产成人av在线影院| 一区二区国产视频| 国产亚洲精品资源在线26u| 欧美日韩国产123区| 成人激情动漫在线观看| 日本免费在线视频不卡一不卡二| 亚洲欧洲另类国产综合| 精品国产免费久久| 欧美日韩电影在线| 色爱区综合激月婷婷| 高清成人在线观看| 国产成人自拍网| 久久爱www久久做| 丝袜脚交一区二区| 一区二区高清视频在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 欧美本精品男人aⅴ天堂| 91.xcao| 精品视频在线看| 欧美做爰猛烈大尺度电影无法无天| 成人丝袜18视频在线观看| 国产乱子轮精品视频| 看电视剧不卡顿的网站| 日本网站在线观看一区二区三区 | 91原创在线视频| 成人黄色在线网站| 99这里只有精品| gogogo免费视频观看亚洲一| 国产精品夜夜爽| 国产精品主播直播| 国产成人亚洲精品青草天美| 国产高清精品久久久久| 国产91对白在线观看九色| 丁香啪啪综合成人亚洲小说| 国产大陆亚洲精品国产| 岛国精品在线观看| 92国产精品观看| 欧美三级电影网站| 717成人午夜免费福利电影| 69av一区二区三区| 欧美mv和日韩mv的网站| 久久久久国产成人精品亚洲午夜| 久久久久国产精品人| 国产精品国产三级国产普通话蜜臀 | 亚洲国产精品传媒在线观看| 欧美国产精品中文字幕| 亚洲欧洲综合另类| 亚洲chinese男男1069| 亚洲mv在线观看| 国模大尺度一区二区三区| 成人精品在线视频观看| 色欧美日韩亚洲| 欧美一区午夜视频在线观看| 精品少妇一区二区三区日产乱码| 久久久精品一品道一区| 亚洲综合小说图片| 久久国产剧场电影| 成人黄色小视频| 欧美视频一区二区在线观看| 91精品免费观看| 日本一区二区不卡视频| 一区二区国产视频| 国产中文字幕精品| 色综合久久久久| 欧美一区二区三区四区久久| 久久久www免费人成精品| 亚洲精品亚洲人成人网| 极品尤物av久久免费看| 91麻豆国产在线观看| 精品国内片67194| 亚洲免费电影在线| 国产一区二区三区日韩| 欧美日韩亚洲综合在线| 久久精品综合网| 偷偷要91色婷婷| av激情亚洲男人天堂| 日韩手机在线导航| 一区二区久久久久| 99久久精品免费看| 久久综合九色综合97婷婷 | 精品伦理精品一区| 亚洲蜜桃精久久久久久久| 国产精品一品视频|