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

📄 vs1003b.txt

📁 mp3量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。系统会自动删除debug和release目录
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000284  e5845004          STR      r5,[r4,#4]
000288  e5901014          LDR      r1,[r0,#0x14]
00028c  e3c11020          BIC      r1,r1,#0x20
000290  e5801014          STR      r1,[r0,#0x14]
000294  e5941018          LDR      r1,[r4,#0x18]
000298  e3c11402          BIC      r1,r1,#0x2000000
00029c  e5841018          STR      r1,[r4,#0x18]
0002a0  e5901000          LDR      r1,[r0,#0]
0002a4  e3c11c3f          BIC      r1,r1,#0x3f00
0002a8  e5801000          STR      r1,[r0,#0]
0002ac  e5901000          LDR      r1,[r0,#0]
0002b0  e3811c15          ORR      r1,r1,#0x1500
0002b4  e5801000          STR      r1,[r0,#0]
;;;186    
;;;187    #if 0
;;;188    	/* disable PIO from controlling MOSI, MISO, SCK (=hand over to SPI) */
;;;189    	pPIO->PIO_PDR = AT91C_PA12_MISO | AT91C_PA13_MOSI | AT91C_PA14_SPCK;
;;;190    	/* set pin-functions in PIO Controller */
;;;191    	pPIO->PIO_ASR = AT91C_PA12_MISO | AT91C_PA13_MOSI | AT91C_PA14_SPCK;
;;;192    
;;;193    	/* enable peripheral clock for SPI ( PID Bit 5 ) */
;;;194    	pPMC->PMC_PCER = ( 1 << AT91C_ID_SPI ); /* n.b. IDs are just bit-numbers */
;;;195    
;;;196    	/* SPI enable and reset */
;;;197    	pSPI->SPI_CR = AT91C_SPI_SPIEN | AT91C_SPI_SWRST;
;;;198    
;;;199    	/* SPI mode: master, fixed periph. sel., FDIV=0, fault detection disabled */
;;;200    	pSPI->SPI_MR  = AT91C_SPI_MSTR | AT91C_SPI_PS_FIXED | AT91C_SPI_MODFDIS;
;;;201    
;;;202    	/* set PCS for fixed select, in this program we do not use select of the SPI */
;;;203    	/* We control the select ourself, so the default cs is 0, but we never use it */
;;;204    	pSPI->SPI_MR &= 0xFFF0FFFF; /* clear old PCS - redundant (AT91lib) */
;;;205    	pSPI->SPI_MR |= ( (0<<16) & AT91C_SPI_PCS ); /* set PCS */
;;;206    	pSPI->SPI_CSR[0] = AT91C_SPI_NCPHA | AT91C_SPI_BITS_8;
;;;207    #endif
;;;208    	/* set SPI clock speed */
;;;209    	VS1003B_SPI_Low();	/* Low initialize spi clock */
0002b8  ebfffffe          BL       VS1003B_SPI_Low
;;;210    #if 0
;;;211    	/* Enable SPI interface */
;;;212    	pSPI->SPI_CR = AT91C_SPI_SPIEN;
;;;213    #endif
;;;214    	VS1003B_XRESET_L();	/* A hardware reset */
0002bc  e584500c          STR      r5,[r4,#0xc]
;;;215    	_delay_ms(20);
0002c0  e3a00014          MOV      r0,#0x14
0002c4  ebfffffe          BL       soft_delay_ms
;;;216    	VS1003B_XRESET_H();
0002c8  e5845004          STR      r5,[r4,#4]
;;;217    
;;;218    	VS1003B_SPI_Low();	/* Low initialize spi clock */
0002cc  ebfffffe          BL       VS1003B_SPI_Low
;;;219    	_delay_ms(20);
0002d0  e3a00014          MOV      r0,#0x14
0002d4  ebfffffe          BL       soft_delay_ms
;;;220    
;;;221    	retry=0;
0002d8  e3a04000          MOV      r4,#0
;;;222    
;;;223    	while(VS1003B_ReadCMD(0x03) != CLOCK_REG)	/* set PLL register */
0002dc  ea000007          B        |L1.768|
                  |L1.736|
;;;224    	{
;;;225    		VS1003B_WriteCMD(0x03,CLOCK_REG);
0002e0  e3a01a0e          MOV      r1,#0xe000
0002e4  e3a00003          MOV      r0,#3
0002e8  ebfffffe          BL       VS1003B_WriteCMD
;;;226    		if(retry++ >10 )return 1;
0002ec  e1a00004          MOV      r0,r4
0002f0  e2841001          ADD      r1,r4,#1
0002f4  e350000a          CMP      r0,#0xa
0002f8  e20140ff          AND      r4,r1,#0xff
0002fc  8a000043          BHI      |L1.1040|
                  |L1.768|
000300  e3a00003          MOV      r0,#3                 ;223
000304  ebfffffe          BL       VS1003B_ReadCMD
000308  e3500a0e          CMP      r0,#0xe000            ;223
00030c  1afffff3          BNE      |L1.736|
;;;227    	}
;;;228    
;;;229    	_delay_ms(20);
000310  e3a00014          MOV      r0,#0x14
000314  ebfffffe          BL       soft_delay_ms
;;;230    	
;;;231    	VS1003B_WriteCMD(0x05,0x000a);
000318  e3a0100a          MOV      r1,#0xa
00031c  e3a00005          MOV      r0,#5
000320  ebfffffe          BL       VS1003B_WriteCMD
;;;232    	
;;;233    	retry=0;
000324  e59f5164          LDR      r5,|L1.1168|
000328  e3a04000          MOV      r4,#0
00032c  ea000006          B        |L1.844|
                  |L1.816|
;;;234    	while(VS1003B_ReadCMD(0x0b) != 0xfefe)	/* set Volume to minimum */
;;;235    	{
;;;236    		VS1003B_WriteCMD(0x0b,0xfefe);
000330  e3a0000b          MOV      r0,#0xb
000334  ebfffffe          BL       VS1003B_WriteCMD
;;;237    		if(retry++ >10 )return 1;
000338  e1a00004          MOV      r0,r4
00033c  e2841001          ADD      r1,r4,#1
000340  e350000a          CMP      r0,#0xa
000344  e20140ff          AND      r4,r1,#0xff
000348  8a000030          BHI      |L1.1040|
                  |L1.844|
00034c  e3a0000b          MOV      r0,#0xb               ;234
000350  ebfffffe          BL       VS1003B_ReadCMD
000354  e1500005          CMP      r0,r5                 ;234
000358  e1a01005          MOV      r1,r5                 ;234
00035c  1afffff3          BNE      |L1.816|
;;;238    	}
;;;239    
;;;240    	VS1003B_WriteCMD(0x05,0xac45);			/* Soft start */
000360  e59f112c          LDR      r1,|L1.1172|
000364  e3a00005          MOV      r0,#5
000368  ebfffffe          BL       VS1003B_WriteCMD
;;;241    
;;;242    	retry=0;
00036c  e59f5124          LDR      r5,|L1.1176|
000370  e3a04000          MOV      r4,#0
000374  ea000006          B        |L1.916|
                  |L1.888|
;;;243    	while(VS1003B_ReadCMD(0x0b) != DEFAULT_VOLUME)	/* Set volume to default value */
;;;244    	{
;;;245    		VS1003B_WriteCMD(0x0b,DEFAULT_VOLUME);
000378  e3a0000b          MOV      r0,#0xb
00037c  ebfffffe          BL       VS1003B_WriteCMD
;;;246    		if(retry++ >10 )return 1;
000380  e1a00004          MOV      r0,r4
000384  e2841001          ADD      r1,r4,#1
000388  e350000a          CMP      r0,#0xa
00038c  e20140ff          AND      r4,r1,#0xff
000390  8a00001e          BHI      |L1.1040|
                  |L1.916|
000394  e3a0000b          MOV      r0,#0xb               ;243
000398  ebfffffe          BL       VS1003B_ReadCMD
00039c  e1500005          CMP      r0,r5                 ;243
0003a0  e1a01005          MOV      r1,r5                 ;243
0003a4  1afffff3          BNE      |L1.888|
;;;247    	}
;;;248    
;;;249    	retry=0;
0003a8  e3a04000          MOV      r4,#0
;;;250    	while(VS1003B_ReadCMD(0x00) != 0x0800)	/* set mode register */
0003ac  ea000007          B        |L1.976|
                  |L1.944|
;;;251    	{
;;;252    		VS1003B_WriteCMD(0x00,0x0800);
0003b0  e3a01b02          MOV      r1,#0x800
0003b4  e3a00000          MOV      r0,#0
0003b8  ebfffffe          BL       VS1003B_WriteCMD
;;;253    		if(retry++ >10 )return 1;
0003bc  e1a00004          MOV      r0,r4
0003c0  e2841001          ADD      r1,r4,#1
0003c4  e350000a          CMP      r0,#0xa
0003c8  e20140ff          AND      r4,r1,#0xff
0003cc  8a00000f          BHI      |L1.1040|
                  |L1.976|
0003d0  e3a00000          MOV      r0,#0                 ;250
0003d4  ebfffffe          BL       VS1003B_ReadCMD
0003d8  e3500b02          CMP      r0,#0x800             ;250
0003dc  1afffff3          BNE      |L1.944|
;;;254    	}
;;;255    
;;;256    	_delay_ms(1);
0003e0  e3a00001          MOV      r0,#1
0003e4  ebfffffe          BL       soft_delay_ms
;;;257    
;;;258    	retry=0;
0003e8  e59f50ac          LDR      r5,|L1.1180|
0003ec  e3a04000          MOV      r4,#0
0003f0  ea000009          B        |L1.1052|
                  |L1.1012|
;;;259    	while(VS1003B_ReadCMD(0x02) != DEFAULT_BASS_TREMBLE)	/* set bass/tremble register */
;;;260    	{
;;;261    		VS1003B_WriteCMD(0x02,DEFAULT_BASS_TREMBLE);
0003f4  e3a00002          MOV      r0,#2
0003f8  ebfffffe          BL       VS1003B_WriteCMD
;;;262    		if(retry++ >10 )return 1;
0003fc  e1a00004          MOV      r0,r4
000400  e2841001          ADD      r1,r4,#1
000404  e350000a          CMP      r0,#0xa
000408  e20140ff          AND      r4,r1,#0xff
00040c  9a000002          BLS      |L1.1052|
                  |L1.1040|
000410  e3a00001          MOV      r0,#1
                  |L1.1044|
000414  e8bd4070          POP      {r4-r6,lr}
;;;263    	}
;;;264    	_delay_ms(20);
;;;265    
;;;266    	VS1003B_SoftReset();	/* A soft reset */
;;;267    
;;;268    	_delay_ms(20);
;;;269    
;;;270    	VS1003B_SPI_High();		/* High SPI clock, for internal pll has been works now */
;;;271    	return 0;
;;;272    }
000418  e12fff1e          BX       lr
                  |L1.1052|
00041c  e3a00002          MOV      r0,#2                 ;259
000420  ebfffffe          BL       VS1003B_ReadCMD
000424  e1500005          CMP      r0,r5                 ;259
000428  e1a01005          MOV      r1,r5                 ;259
00042c  1afffff0          BNE      |L1.1012|
000430  e3a00014          MOV      r0,#0x14              ;264
000434  ebfffffe          BL       soft_delay_ms
000438  ebfffffe          BL       VS1003B_SoftReset
00043c  e3a00014          MOV      r0,#0x14              ;268
000440  ebfffffe          BL       soft_delay_ms
000444  ebfffffe          BL       VS1003B_SPI_High
000448  e3a00000          MOV      r0,#0                 ;271
00044c  eafffff0          B        |L1.1044|
;;;273    
                          ENDP

                  VS1003B_ReadDecodeTime PROC
;;;283    unsigned short VS1003B_ReadDecodeTime()
;;;284    {
000450  e52de004          PUSH     {lr}
;;;285    	VS1003B_SPI_High();
000454  ebfffffe          BL       VS1003B_SPI_High
;;;286    	return VS1003B_ReadCMD(0x04);
000458  e49de004          POP      {lr}
00045c  e3a00004          MOV      r0,#4
000460  eafffffe          B        VS1003B_ReadCMD
;;;287    }
;;;288    
                          ENDP

                  VS1003B_SetVolume PROC
;;;299    void VS1003B_SetVolume(unsigned short vol)
;;;300    {
000464  e1a02000          MOV      r2,r0
000468  e52de004          PUSH     {lr}
;;;301    	VS1003B_SPI_High();
00046c  ebfffffe          BL       VS1003B_SPI_High
;;;302    	VS1003B_WriteCMD(0x0b,vol);	
000470  e49de004          POP      {lr}
000474  e1a01002          MOV      r1,r2
000478  e3a0000b          MOV      r0,#0xb
00047c  eafffffe          B        VS1003B_WriteCMD
;;;303    }
                          ENDP

                  |L1.1152|
000480  e0020000          DCD      0xe0020000
                  |L1.1156|
000484  e0028000          DCD      0xe0028000
                  |L1.1160|
000488  00000804          DCD      0x00000804
                  |L1.1164|
00048c  e002c000          DCD      0xe002c000
                  |L1.1168|
000490  0000fefe          DCD      0x0000fefe
                  |L1.1172|
000494  0000ac45          DCD      0x0000ac45
                  |L1.1176|
000498  00002828          DCD      0x00002828
                  |L1.1180|
00049c  00008888          DCD      0x00008888

⌨️ 快捷键说明

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