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

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

?? vs1003.c

?? 芬蘭的MP3解碼芯片
?? C
字號:
//文件名:vs1003.c
//功能:vs1003 的底層驅動程序,主控芯片為LPC2103;
//     其他的微處理器(帶SPI接口的)只需稍加修改即可適用;
//     對于不帶硬SPI接口的微處理器可以用IO進行SPI的時序模擬
//     更多代碼敬請訪問www.icdev.com.cn
 

#include "vs1003.h"
#include "timer.h"

extern long volatile timeval; //用于延時的全局變量

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

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


/**********************************************************/
/*  函數名稱 :  SPIPutChar                                */
/*  函數功能 : 通過SPI發送一個字節的數據                 */
/*  參數     :  待發送的字節數據                          */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void  SPIPutChar(unsigned char c)
{      
	S0SPDR = c;
	while((S0SPSR & 0x80) == 0);	 //等待SPI將數據發送完畢
}


/**********************************************************/
/*  函數名稱 :  Mp3SoftReset                              */
/*  函數功能 : vs1003軟件復位                            */
/*  參數     :  無                                        */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void Mp3SoftReset(void)
{
	Mp3WriteRegister (SPI_MODE, 0x08, 0x04); //軟件復位

	wait(1); //延時1ms
	while (IOPIN & MP3_DREQ == 0); //等待軟件復位結束
	Mp3WriteRegister(SPI_CLOCKF, 0x98, 0x00);//設置vs1003的時鐘,3倍頻
	Mp3WriteRegister (SPI_AUDATA, 0xBB, 0x81); //采樣率48k,立體聲
	Mp3WriteRegister(SPI_BASS, 0x00, 0x55);//設置重音
	Mp3SetVolume(20,20);//設置音量
    	wait(1); //延時1ms
    	
    	//向vs1003發送4個字節無效數據,用以啟動SPI發送
        Mp3SelectData();
	SPIPutChar(0);
	SPIPutChar(0);
	SPIPutChar(0);
	SPIPutChar(0);
	Mp3DeselectData();

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


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

        //再次進入正弦測試并設置n值為0x44,即將正弦波的頻率設置為另外的值
    	Mp3SelectData();       
	SPIPutChar(0x53);      
	SPIPutChar(0xef);      
	SPIPutChar(0x6e);      
	SPIPutChar(0x44);      
	SPIPutChar(0x00);      
	SPIPutChar(0x00);
	SPIPutChar(0x00);
	SPIPutChar(0x00);
	wait(500);
	Mp3DeselectData(); 

	//退出正弦測試
	Mp3SelectData();
	SPIPutChar(0x45);
	SPIPutChar(0x78);
	SPIPutChar(0x69);
	SPIPutChar(0x74);
	SPIPutChar(0x00);
	SPIPutChar(0x00);
	SPIPutChar(0x00);
	SPIPutChar(0x00);
	wait(500);
	Mp3DeselectData();
 }

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

/*************************************************************/
/*  函數名稱 :  Mp3ReadRegister                              */
/*  函數功能 : 寫vs1003寄存器                               */
/*  參數     :  寄存器地址				     */
/*  返回值   :  vs1003的16位寄存器的值                       */
/*-----------------------------------------------------------*/
unsigned int Mp3ReadRegister(unsigned char addressbyte)
{
	unsigned int resultvalue = 0;
	Mp3DeselectData();
	Mp3SelectControl();//XCS = 0
	SPIPutChar(VS_READ_COMMAND); //發送讀寄存器命令
	SPIPutChar((addressbyte));	 //發送寄存器的地址
	SPIPutChar(0xff); 		//發送讀時鐘
	resultvalue = (SPI_RESULT_BYTE) << 8;//讀取高8位數據
	SPIPutChar(0xff);		   //發送讀時鐘
	resultvalue |= (SPI_RESULT_BYTE);  //讀取低8位數據
	Mp3DeselectControl();              
	return resultvalue;                 //返回16位寄存器的值
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人99免费视频| 国产视频亚洲色图| 国产亚洲精品超碰| 夜夜嗨av一区二区三区中文字幕 | 国产精品系列在线观看| 在线视频一区二区三| 久久综合中文字幕| 午夜成人免费电影| 一本久久综合亚洲鲁鲁五月天| 精品国产a毛片| 天天av天天翘天天综合网色鬼国产 | 欧美一卡在线观看| 亚洲综合视频网| 91啪亚洲精品| 国产精品第五页| 丁香婷婷综合色啪| 久久久久久久久久久久久夜| 奇米综合一区二区三区精品视频| 欧美在线小视频| 亚洲精品va在线观看| 99这里只有久久精品视频| 国产日韩v精品一区二区| 久久国内精品视频| 日韩手机在线导航| 污片在线观看一区二区| 欧美色图一区二区三区| 亚洲女厕所小便bbb| 91麻豆国产香蕉久久精品| 亚洲三级理论片| 99re成人在线| 亚洲婷婷在线视频| 日本韩国欧美一区二区三区| 亚洲最色的网站| 欧美理论在线播放| 日韩高清不卡在线| 91精品国产综合久久久久久| 蜜桃精品视频在线| 欧美精品一区二区久久婷婷| 国产乱码一区二区三区| 日本一区二区电影| 99精品在线观看视频| 亚洲免费在线看| 欧美人与z0zoxxxx视频| 午夜激情一区二区三区| 日韩欧美资源站| 国产综合久久久久影院| 欧美国产日本韩| 色美美综合视频| 日韩精品91亚洲二区在线观看 | 免费高清成人在线| 欧美xxxxxxxxx| 国产精品香蕉一区二区三区| 国产精品乱码一区二区三区软件 | 99在线精品免费| 亚洲午夜电影在线| 日韩女优电影在线观看| 国产成人免费高清| 亚洲激情在线播放| 91精品婷婷国产综合久久竹菊| 久久不见久久见免费视频1| 国产日本欧美一区二区| 欧美一a一片一级一片| 美女www一区二区| 国产精品另类一区| 欧美精品欧美精品系列| 国产精品888| 五月天激情综合| 国产欧美日韩精品一区| 欧美精品一卡二卡| 成人激情免费电影网址| 五月婷婷综合在线| 亚洲国产高清在线观看视频| 欧美日韩中文另类| 成人午夜精品在线| 日本成人中文字幕| 亚洲卡通动漫在线| 国产欧美日韩另类一区| 欧美一区二区三区精品| 91麻豆蜜桃一区二区三区| 久久99国产精品尤物| 亚洲一区影音先锋| 国产精品国产三级国产普通话蜜臀| 在线播放/欧美激情| 91色在线porny| 国产精品12区| 美女国产一区二区| 亚洲第一会所有码转帖| 中文字幕在线免费不卡| 久久精品人人爽人人爽| 欧美精三区欧美精三区| 欧美综合视频在线观看| 99re热这里只有精品视频| 国产美女精品一区二区三区| 日韩经典中文字幕一区| 亚洲欧美日韩国产成人精品影院| 国产色一区二区| 精品日韩在线观看| 欧美一区二区三区啪啪| 欧美午夜不卡视频| 一本久久a久久精品亚洲| av午夜一区麻豆| 成人性生交大片免费看中文 | 日本一区免费视频| 亚洲精品一区二区三区蜜桃下载| 91麻豆精品国产自产在线| 在线观看日韩电影| 在线视频综合导航| 精品视频在线免费观看| 欧美综合在线视频| 欧美日韩亚州综合| 欧美精品久久一区二区三区| 欧美亚洲免费在线一区| 欧美群妇大交群中文字幕| 欧美日韩成人综合天天影院| 欧美日韩一二三| 欧美高清视频在线高清观看mv色露露十八 | 亚洲国产wwwccc36天堂| 亚洲一二三四区| 亚洲午夜精品17c| 天天影视色香欲综合网老头| 视频一区二区三区中文字幕| 免费的国产精品| 久88久久88久久久| 国产一区二区三区美女| 懂色中文一区二区在线播放| 99热在这里有精品免费| 色8久久人人97超碰香蕉987| 欧美久久久久久蜜桃| 91精品国产综合久久精品| 精品欧美久久久| 国产日韩av一区| 亚洲美女在线国产| 视频一区二区三区在线| 国产一区中文字幕| 91在线观看地址| 欧美肥妇free| 久久久蜜桃精品| 中文字幕色av一区二区三区| 一区二区成人在线观看| 久久99久久99小草精品免视看| 国产成人欧美日韩在线电影| 色悠悠久久综合| 日韩一卡二卡三卡四卡| 国产精品理伦片| 午夜影院在线观看欧美| 国产乱对白刺激视频不卡| av不卡一区二区三区| 欧美日韩一区视频| 国产亚洲精品中文字幕| 亚洲综合色在线| 国产精品亚洲专一区二区三区| 色综合久久九月婷婷色综合| 日韩一区二区在线观看视频| 亚洲综合男人的天堂| 婷婷国产在线综合| 成a人片亚洲日本久久| 91麻豆精品国产91久久久久久| 中文在线资源观看网站视频免费不卡| 亚洲精品亚洲人成人网| 国产在线不卡一卡二卡三卡四卡| 色婷婷av一区二区三区之一色屋| 欧美电视剧免费全集观看| 亚洲激情图片qvod| 国产精品123| 亚洲欧洲av一区二区三区久久| 偷拍自拍另类欧美| 99亚偷拍自图区亚洲| 欧美mv日韩mv国产网站app| 亚洲精品国产精华液| 国产老肥熟一区二区三区| 欧美一区二区私人影院日本| 亚洲色图.com| 国产成人自拍网| 欧美成人乱码一区二区三区| 亚洲观看高清完整版在线观看| 99久久久无码国产精品| 国产亚洲欧美在线| 玖玖九九国产精品| 欧美日韩美女一区二区| 亚洲男人的天堂一区二区| 岛国精品在线观看| 久久久亚洲精品石原莉奈| 日韩黄色免费电影| 欧美日韩国产一级| 亚洲成av人**亚洲成av**| 色综合久久综合网| 中文字幕在线视频一区| 国产成人a级片| 久久久久久久精| 激情都市一区二区| 欧美变态tickle挠乳网站| 麻豆精品久久精品色综合| 在线不卡欧美精品一区二区三区| 亚洲午夜久久久久久久久久久| 色综合激情久久| 亚洲午夜电影在线| 欧美精品丝袜中出| 奇米色一区二区三区四区| 日韩三级电影网址| 精品亚洲国产成人av制服丝袜|