📄 i2s_codec.txt
字号:
;;;1361 I2C_GenerateSTOP(I2C1, ENABLE);
0000b0 2101 MOVS r1,#1
0000b2 4628 MOV r0,r5
0000b4 f7fffffe BL I2C_GenerateSTOP
;;;1362
;;;1363 /* Load the register value */
;;;1364 tmp = I2C_ReceiveData(I2C1);
0000b8 4628 MOV r0,r5
0000ba f7fffffe BL I2C_ReceiveData
0000be 4604 MOV r4,r0
;;;1365
;;;1366 /* Disable Acknowledgement */
;;;1367 I2C_AcknowledgeConfig(I2C1, ENABLE);
0000c0 2101 MOVS r1,#1
0000c2 4628 MOV r0,r5
0000c4 f7fffffe BL I2C_AcknowledgeConfig
;;;1368
;;;1369 /* Return the read value */
;;;1370 return tmp;
0000c8 4620 MOV r0,r4
;;;1371 }
0000ca e8bd81f0 POP {r4-r8,pc}
;;;1372
ENDP
0000ce 0000 DCW 0x0000
|L3.208|
DCD 0x40005400
|L3.212|
DCD 0x00030001
|L3.216|
DCD 0x00070082
AREA ||i.CODEC_WriteRegister||, CODE, READONLY, ALIGN=2
CODEC_WriteRegister PROC
;;;1231 *******************************************************************************/
;;;1232 u32 CODEC_WriteRegister(u32 RegisterAddr, u32 RegisterValue)
000000 e92d41f0 PUSH {r4-r8,lr}
;;;1233 {
;;;1234 u32 read_verif = 0;
;;;1235
;;;1236 /* Reset all I2C2 registers */
;;;1237 I2C_SoftwareResetCmd(I2C1, ENABLE);
000004 4d23 LDR r5,|L4.148|
000006 4604 MOV r4,r0 ;1233
000008 460e MOV r6,r1 ;1233
00000a 2700 MOVS r7,#0 ;1234
00000c 2101 MOVS r1,#1
00000e 4628 MOV r0,r5
000010 f7fffffe BL I2C_SoftwareResetCmd
;;;1238 I2C_SoftwareResetCmd(I2C1, DISABLE);
000014 2100 MOVS r1,#0
000016 4628 MOV r0,r5
000018 f7fffffe BL I2C_SoftwareResetCmd
;;;1239
;;;1240 /* Enable the I2C1 peripheral */
;;;1241 I2C_Cmd(I2C1, ENABLE);
00001c 2101 MOVS r1,#1
00001e 4628 MOV r0,r5
000020 f7fffffe BL I2C_Cmd
;;;1242
;;;1243 /* Configure the I2C peripheral */
;;;1244 I2C_Config();
000024 f7fffffe BL I2C_Config
;;;1245
;;;1246 /* Begin the config sequence */
;;;1247 I2C_GenerateSTART(I2C1, ENABLE);
000028 2101 MOVS r1,#1
00002a 4628 MOV r0,r5
00002c f7fffffe BL I2C_GenerateSTART
;;;1248
;;;1249 /* Test on EV5 and clear it */
;;;1250 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))
000030 f8df8064 LDR r8,|L4.152|
|L4.52|
000034 4628 MOV r0,r5
000036 4641 MOV r1,r8
000038 f7fffffe BL I2C_CheckEvent
00003c 2800 CMP r0,#0
00003e d0f9 BEQ |L4.52|
;;;1251 {}
;;;1252 /* Transmit the slave address and enable writing operation */
;;;1253 I2C_Send7bitAddress(I2C1, CODEC_ADDRESS, I2C_Direction_Transmitter);
000040 2200 MOVS r2,#0
000042 2127 MOVS r1,#0x27
000044 4628 MOV r0,r5
000046 f7fffffe BL I2C_Send7bitAddress
;;;1254
;;;1255 /* Test on EV6 and clear it */
;;;1256 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))
00004a f8df8050 LDR r8,|L4.156|
|L4.78|
00004e 4628 MOV r0,r5
000050 4641 MOV r1,r8
000052 f7fffffe BL I2C_CheckEvent
000056 2800 CMP r0,#0
000058 d0f9 BEQ |L4.78|
;;;1257 {}
;;;1258 /* Transmit the first address for r/w operations */
;;;1259 I2C_SendData(I2C1, RegisterAddr);
00005a b2e1 UXTB r1,r4
00005c 4628 MOV r0,r5
00005e f7fffffe BL I2C_SendData
;;;1260
;;;1261 /* Test on EV8 and clear it */
;;;1262 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED))
000062 4c0e LDR r4,|L4.156|
000064 1ca4 ADDS r4,r4,#2
|L4.102|
000066 4621 MOV r1,r4
000068 4628 MOV r0,r5
00006a f7fffffe BL I2C_CheckEvent
00006e 2800 CMP r0,#0
000070 d0f9 BEQ |L4.102|
;;;1263 {}
;;;1264
;;;1265 /* Prepare the register value to be sent */
;;;1266 I2C_SendData(I2C1, RegisterValue);
000072 b2f1 UXTB r1,r6
000074 4628 MOV r0,r5
000076 f7fffffe BL I2C_SendData
|L4.122|
;;;1267
;;;1268 /* Test on EV8 and clear it */
;;;1269 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED))
00007a 4621 MOV r1,r4
00007c 4628 MOV r0,r5
00007e f7fffffe BL I2C_CheckEvent
000082 2800 CMP r0,#0
000084 d0f9 BEQ |L4.122|
;;;1270 {}
;;;1271
;;;1272 /* End the configuration sequence */
;;;1273 I2C_GenerateSTOP(I2C1, ENABLE);
000086 2101 MOVS r1,#1
000088 4628 MOV r0,r5
00008a f7fffffe BL I2C_GenerateSTOP
;;;1274
;;;1275 /* Verify (if needed) that the loaded data is correct */
;;;1276 #ifdef VERIFY_WRITTENDATA
;;;1277 /* Read the just written register*/
;;;1278 read_verif = CODEC_ReadRegister(RegisterAddr);
;;;1279
;;;1280 /* Load the register and verify its value */
;;;1281 if(read_verif != RegisterValue)
;;;1282 {
;;;1283 /* Control data wrongly tranfered */
;;;1284 read_verif = 1;
;;;1285 }
;;;1286 else
;;;1287 {
;;;1288 /* Control data correctly transfered */
;;;1289 read_verif = 0;
;;;1290 }
;;;1291 #endif
;;;1292
;;;1293 /* Return the verifying value: 0 (Passed) or 1 (Failed) */
;;;1294 return read_verif;
00008e 4638 MOV r0,r7
;;;1295 }
000090 e8bd81f0 POP {r4-r8,pc}
;;;1296
ENDP
|L4.148|
DCD 0x40005400
|L4.152|
DCD 0x00030001
|L4.156|
DCD 0x00070082
AREA ||i.DecrementVar_AudioDataIndex||, CODE, READONLY, ALIGN=2
DecrementVar_AudioDataIndex PROC
;;;699 *******************************************************************************/
;;;700 void DecrementVar_AudioDataIndex(u32 DecrementNumber)
000000 4904 LDR r1,|L5.20|
;;;701 {
;;;702 if (DecrementNumber >= AudioDataIndex)
000002 694a LDR r2,[r1,#0x14] ; AudioDataIndex
000004 4290 CMP r0,r2
000006 d301 BCC |L5.12|
;;;703 {
;;;704 ResetVar_AudioDataIndex();
000008 f7ffbffe B.W ResetVar_AudioDataIndex
|L5.12|
;;;705 }
;;;706 else
;;;707 {
;;;708 AudioDataIndex -= (u32)DecrementNumber;
00000c 694a LDR r2,[r1,#0x14] ; AudioDataIndex
00000e 1a10 SUBS r0,r2,r0
000010 6148 STR r0,[r1,#0x14] ; AudioDataIndex
;;;709 }
;;;710 }
000012 4770 BX lr
;;;711
ENDP
|L5.20|
DCD ||.data||
AREA ||i.Decrement_AudioReplay||, CODE, READONLY, ALIGN=2
Decrement_AudioReplay PROC
;;;813 *******************************************************************************/
;;;814 void Decrement_AudioReplay(void)
000000 4906 LDR r1,|L6.28|
;;;815 {
;;;816 if (AudioReplay != 0)
000002 6988 LDR r0,[r1,#0x18] ; AudioReplay
000004 2800 CMP r0,#0
000006 d007 BEQ |L6.24|
;;;817 {
;;;818 AudioReplayCount--;
000008 69c8 LDR r0,[r1,#0x1c] ; AudioReplayCount
00000a 1e40 SUBS r0,r0,#1
;;;819
;;;820 if (AudioReplayCount == 0)
00000c 61c8 STR r0,[r1,#0x1c] ; AudioReplayCount
00000e d103 BNE |L6.24|
000010 6248 STR r0,[r1,#0x24] ; AudioPlayStatus
000012 6a48 LDR r0,[r1,#0x24] ; AudioPlayStatus
;;;821 {
;;;822 /* Command the Stop of the audio playing */
;;;823 SetVar_AudioPlayStatus(AudioPlayStatus_STOPPED);
;;;824
;;;825 /* Reset the counter */
;;;826 AudioReplayCount = AudioReplay;
000014 6988 LDR r0,[r1,#0x18] ; AudioReplay
000016 61c8 STR r0,[r1,#0x1c] ; AudioReplayCount
|L6.24|
;;;827 }
;;;828 }
;;;829 }
000018 4770 BX lr
;;;830
ENDP
00001a 0000 DCW 0x0000
|L6.28|
DCD ||.data||
AREA ||i.GetVar_AudioDataIndex||, CODE, READONLY, ALIGN=2
GetVar_AudioDataIndex PROC
;;;657 *******************************************************************************/
;;;658 u32 GetVar_AudioDataIndex(void)
000000 4801 LDR r0,|L7.8|
;;;659 {
;;;660 return AudioDataIndex;
000002 6940 LDR r0,[r0,#0x14] ; AudioDataIndex
;;;661 }
000004 4770 BX lr
;;;662
ENDP
000006 0000 DCW 0x0000
|L7.8|
DCD ||.data||
AREA ||i.GetVar_AudioDataLength||, CODE, READONLY, ALIGN=2
GetVar_AudioDataLength PROC
;;;849 *******************************************************************************/
;;;850 u32 GetVar_AudioDataLength(void)
000000 4801 LDR r0,|L8.8|
;;;851 {
;;;852 return AudioDataLength;
000002 68c0 LDR r0,[r0,#0xc] ; AudioDataLength
;;;853 }
000004 4770 BX lr
;;;854
ENDP
000006 0000 DCW 0x0000
|L8.8|
DCD ||.data||
AREA ||i.GetVar_AudioPlayStatus||, CODE, READONLY, ALIGN=2
GetVar_AudioPlayStatus PROC
;;;773 *******************************************************************************/
;;;774 u32 GetVar_AudioPlayStatus(void)
000000 4801 LDR r0,|L9.8|
;;;775 {
;;;776 return AudioPlayStatus;
000002 6a40 LDR r0,[r0,#0x24] ; AudioPlayStatus
;;;777 }
000004 4770 BX lr
;;;778
ENDP
000006 0000 DCW 0x0000
|L9.8|
DCD ||.data||
AREA ||i.GetVar_AudioReplay||, CODE, READONLY, ALIGN=2
GetVar_AudioReplay PROC
;;;800 *******************************************************************************/
;;;801 u32 GetVar_AudioReplay(void)
000000 4801 LDR r0,|L10.8|
;;;802 {
;;;803 return AudioReplay;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -