📄 vs1003.txt
字号:
000014 6020 STR r0,[r4,#0]
;;;277 SPIPutChar(VS_READ_COMMAND); //发送读寄存器命令
000016 2003 MOVS r0,#3
000018 f7fffffe BL SPIPutChar
;;;278 SPIPutChar(addressbyte); //发送寄存器的地址
00001c 4618 MOV r0,r3
00001e f7fffffe BL SPIPutChar
;;;279 resultvalue = SPIGetChar() << 8;//读取高8位数据
000022 f7fffffe BL SPIGetChar
000026 0205 LSLS r5,r0,#8
;;;280 resultvalue |= SPIGetChar(); //读取低8位数据
000028 f7fffffe BL SPIGetChar
;;;281 Mp3DeselectControl();
00002c 6821 LDR r1,[r4,#0]
00002e 4328 ORRS r0,r0,r5 ;280
000030 f0410102 ORR r1,r1,#2
000034 6021 STR r1,[r4,#0]
;;;282 return resultvalue; //返回16位寄存器的值
;;;283
;;;284 }
000036 bd70 POP {r4-r6,pc}
;;;285
ENDP
|L8.56|
000038 4001080c DCD 0x4001080c
AREA ||i.VsRamTest||, CODE, READONLY, ALIGN=2
VsRamTest PROC
;;;214 void VsRamTest(void)
;;;215 {
000000 b510 PUSH {r4,lr}
000002 4c28 LDR r4,|L9.164|
;;;216 u16 regvalue ;
;;;217
;;;218 regvalue = 0;
;;;219 Mp3PutInReset();
000004 6820 LDR r0,[r4,#0]
000006 f0200001 BIC r0,r0,#1
00000a 6020 STR r0,[r4,#0]
;;;220 Delay(100);
00000c 2064 MOVS r0,#0x64
00000e f7fffffe BL Delay
;;;221 SPIPutChar(0xff); //发送一个字节的无效数据,启动SPI传输
000012 20ff MOVS r0,#0xff
000014 f7fffffe BL SPIPutChar
;;;222 Mp3DeselectControl();
000018 6820 LDR r0,[r4,#0]
00001a f0400002 ORR r0,r0,#2
00001e 6020 STR r0,[r4,#0]
;;;223 Mp3DeselectData();
000020 6820 LDR r0,[r4,#0]
000022 f0400004 ORR r0,r0,#4
000026 6020 STR r0,[r4,#0]
;;;224 Mp3ReleaseFromReset();
000028 6820 LDR r0,[r4,#0]
00002a f0400001 ORR r0,r0,#1
00002e 6020 STR r0,[r4,#0]
000030 f6a4040c SUB r4,r4,#0x80c
;;;225 Delay(100);
000034 2064 MOVS r0,#0x64
000036 f7fffffe BL Delay
;;;226 Mp3WriteRegister(SPI_MODE,0x08,0x20); // 进入vs1003的测试模式
00003a 2220 MOVS r2,#0x20
00003c 2108 MOVS r1,#8
00003e 2000 MOVS r0,#0
000040 f7fffffe BL Mp3WriteRegister
;;;227 while (GPIO_ReadInputData(GPIOA) & MP3_DREQ == 0); // 等待DREQ为高
000044 4817 LDR r0,|L9.164|
000046 380c SUBS r0,r0,#0xc
000048 f7fffffe BL GPIO_ReadInputData
00004c f604040c ADD r4,r4,#0x80c
;;;228 Mp3SelectData(); // xDCS = 1,选择vs1003的数据接口
000050 6820 LDR r0,[r4,#0]
000052 f0200004 BIC r0,r0,#4
000056 6020 STR r0,[r4,#0]
;;;229
;;;230 SPIPutChar(0x4d);
000058 204d MOVS r0,#0x4d
00005a f7fffffe BL SPIPutChar
;;;231 SPIPutChar(0xea);
00005e 20ea MOVS r0,#0xea
000060 f7fffffe BL SPIPutChar
;;;232 SPIPutChar(0x6d);
000064 206d MOVS r0,#0x6d
000066 f7fffffe BL SPIPutChar
;;;233 SPIPutChar(0x54);
00006a 2054 MOVS r0,#0x54
00006c f7fffffe BL SPIPutChar
;;;234 SPIPutChar(0x00);
000070 2000 MOVS r0,#0
000072 f7fffffe BL SPIPutChar
;;;235 SPIPutChar(0x00);
000076 2000 MOVS r0,#0
000078 f7fffffe BL SPIPutChar
;;;236 SPIPutChar(0x00);
00007c 2000 MOVS r0,#0
00007e f7fffffe BL SPIPutChar
;;;237 SPIPutChar(0x00);
000082 2000 MOVS r0,#0
000084 f7fffffe BL SPIPutChar
;;;238 Delay(500);
000088 f44f70fa MOV r0,#0x1f4
00008c f7fffffe BL Delay
;;;239 Mp3DeselectData();
000090 6820 LDR r0,[r4,#0]
000092 f0400004 ORR r0,r0,#4
000096 6020 STR r0,[r4,#0]
;;;240
;;;241 regvalue = Mp3ReadRegister(SPI_HDAT0); // 如果得到的值为0x807F,则表明完好。
000098 e8bd4010 POP {r4,lr}
00009c 2008 MOVS r0,#8
00009e f7ffbffe B.W Mp3ReadRegister
;;;242
;;;243 }
;;;244
ENDP
0000a2 0000 DCW 0x0000
|L9.164|
0000a4 4001080c DCD 0x4001080c
AREA ||i.VS1003_Config||, CODE, READONLY, ALIGN=2
VS1003_Config PROC
;;;293 void VS1003_Config(void)
;;;294 {
000000 b570 PUSH {r4-r6,lr}
;;;295 GPIO_InitTypeDef GPIO_InitStructure;
;;;296 SPI_InitTypeDef SPI_InitStructure;
;;;297
;;;298 RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
000002 2101 MOVS r1,#1
000004 b086 SUB sp,sp,#0x18 ;294
000006 0388 LSLS r0,r1,#14
000008 f7fffffe BL RCC_APB1PeriphClockCmd
;;;299 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
00000c 2101 MOVS r1,#1
00000e 2008 MOVS r0,#8
000010 f7fffffe BL RCC_APB2PeriphClockCmd
;;;300
;;;301 /* PA.1->XCS
;;;302 PA.0->XRESET
;;;303 PA.2->XDCS,all low lever avalible
;;;304 */
;;;305 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;
000014 2507 MOVS r5,#7
000016 f8ad5014 STRH r5,[sp,#0x14]
;;;306 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00001a 2403 MOVS r4,#3
00001c f88d4016 STRB r4,[sp,#0x16]
;;;307 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
000020 2010 MOVS r0,#0x10
;;;308 GPIO_Init(GPIOA, &GPIO_InitStructure);
000022 4e23 LDR r6,|L10.176|
000024 f88d0017 STRB r0,[sp,#0x17] ;307
000028 a905 ADD r1,sp,#0x14
00002a 4630 MOV r0,r6
00002c f7fffffe BL GPIO_Init
;;;309
;;;310 /* PB.3->DREQ */
;;;311 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
000030 2008 MOVS r0,#8
000032 f8ad0014 STRH r0,[sp,#0x14]
;;;312 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000036 f88d4016 STRB r4,[sp,#0x16]
;;;313 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
00003a 2048 MOVS r0,#0x48
00003c f88d0017 STRB r0,[sp,#0x17]
;;;314 GPIO_Init(GPIOA, &GPIO_InitStructure);
000040 a905 ADD r1,sp,#0x14
000042 4630 MOV r0,r6
000044 f7fffffe BL GPIO_Init
;;;315
;;;316 /* Diable all pins */
;;;317 GPIOA->ODR = 0xFF;
000048 4919 LDR r1,|L10.176|
00004a 20ff MOVS r0,#0xff
00004c 310c ADDS r1,r1,#0xc
00004e 6008 STR r0,[r1,#0]
;;;318
;;;319 /* Configure SPI2 pins: SCK, MISO and MOSI ---------------------------------*/
;;;320 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
000050 0368 LSLS r0,r5,#13
000052 f8ad0014 STRH r0,[sp,#0x14]
;;;321 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000056 f88d4016 STRB r4,[sp,#0x16]
;;;322 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
00005a 2018 MOVS r0,#0x18
00005c f88d0017 STRB r0,[sp,#0x17]
;;;323 GPIO_Init(GPIOB, &GPIO_InitStructure);
000060 a905 ADD r1,sp,#0x14
000062 4814 LDR r0,|L10.180|
000064 f7fffffe BL GPIO_Init
;;;324
;;;325 /* SPI2 Config --------------------------------------------------*/
;;;326 SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
000068 2000 MOVS r0,#0
00006a f8ad0000 STRH r0,[sp,#0]
;;;327 SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
00006e f44f7182 MOV r1,#0x104
000072 f8ad1002 STRH r1,[sp,#2]
;;;328 SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
000076 f8ad0004 STRH r0,[sp,#4]
;;;329 SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
00007a 2102 MOVS r1,#2
00007c f8ad1006 STRH r1,[sp,#6]
;;;330 SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
000080 2101 MOVS r1,#1
000082 f8ad1008 STRH r1,[sp,#8]
;;;331 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
000086 0249 LSLS r1,r1,#9
000088 f8ad100a STRH r1,[sp,#0xa]
;;;332 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
00008c 2120 MOVS r1,#0x20
00008e f8ad100c STRH r1,[sp,#0xc]
;;;333 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
;;;334 SPI_InitStructure.SPI_CRCPolynomial = 7;
;;;335 SPI_Init(SPI2, &SPI_InitStructure);
000092 4c09 LDR r4,|L10.184|
000094 f8ad000e STRH r0,[sp,#0xe] ;333
000098 f8ad5010 STRH r5,[sp,#0x10] ;334
00009c 4669 MOV r1,sp
00009e 4620 MOV r0,r4
0000a0 f7fffffe BL SPI_Init
;;;336
;;;337 /* Enable SPI2 */
;;;338 SPI_Cmd(SPI2, ENABLE);
0000a4 2101 MOVS r1,#1
0000a6 4620 MOV r0,r4
0000a8 f7fffffe BL SPI_Cmd
;;;339
;;;340 }
0000ac b006 ADD sp,sp,#0x18
0000ae bd70 POP {r4-r6,pc}
;;;341
ENDP
|L10.176|
0000b0 40010800 DCD 0x40010800
|L10.180|
0000b4 40010c00 DCD 0x40010c00
|L10.184|
0000b8 40003800 DCD 0x40003800
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -