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

📄 i2s_codec.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00011a  07f8              LSLS     r0,r7,#31
00011c  d06c              BEQ      |L2.504|
;;;1157     {
;;;1158   		/* PLL Slave SD/WS reference mode ----------------------*/
;;;1159   		if (I2S_MCLKOutput == I2S_MCLKOutput_Disable)
00011e  f1b80f00          CMP      r8,#0
000122  d112              BNE      |L2.330|
;;;1160   		{
;;;1161   		  /* Phillips(0x03)/MSB(0x02)/LSB(0x01) mode with no PLL */
;;;1162   		  counter += CODEC_WriteRegister(0x04, (Standard | 0x20));
000124  f0440120          ORR      r1,r4,#0x20
000128  2004              MOVS     r0,#4
00012a  f7fffffe          BL       CODEC_WriteRegister
00012e  1944              ADDS     r4,r0,r5
;;;1163   		  /* MCKI input frequency = 256.Fs */
;;;1164   		  counter += CODEC_WriteRegister(0x05, 0x03);
000130  2103              MOVS     r1,#3
000132  2005              MOVS     r0,#5
000134  f7fffffe          BL       CODEC_WriteRegister
000138  4404              ADD      r4,r4,r0
;;;1165   		  /* VCOM Power up (PMVCM bit)*/
;;;1166   		  counter += CODEC_WriteRegister(0x00, 0x40);
00013a  2140              MOVS     r1,#0x40
00013c  2000              MOVS     r0,#0
00013e  f7fffffe          BL       CODEC_WriteRegister
000142  4404              ADD      r4,r4,r0
;;;1167   		  /* Enable PLL*/
;;;1168   		  counter += CODEC_WriteRegister(0x01, 0x01);
000144  2101              MOVS     r1,#1
000146  4608              MOV      r0,r1
000148  e00b              B        |L2.354|
                  |L2.330|
;;;1169   		}
;;;1170   		/* Ext Slave mode with no PLL --------------------------*/
;;;1171   		else
;;;1172   		{
;;;1173   		  /* Phillips(0x03)/MSB(0x02)/LSB(0x01) mode with no PLL */
;;;1174   		  counter += CODEC_WriteRegister(0x04, Standard);
00014a  4621              MOV      r1,r4
00014c  2004              MOVS     r0,#4
00014e  f7fffffe          BL       CODEC_WriteRegister
000152  1944              ADDS     r4,r0,r5
;;;1175   		  /* MCKI input frequency = 256.Fs */
;;;1176   		  counter += CODEC_WriteRegister(0x05, 0x00);
000154  2100              MOVS     r1,#0
000156  2005              MOVS     r0,#5
000158  f7fffffe          BL       CODEC_WriteRegister
00015c  4404              ADD      r4,r4,r0
;;;1177   		  /* VCOM Power up (PMVCM bit)*/
;;;1178   		  counter += CODEC_WriteRegister(0x00, 0x40);
00015e  2140              MOVS     r1,#0x40
000160  2000              MOVS     r0,#0
                  |L2.354|
000162  f7fffffe          BL       CODEC_WriteRegister
000166  4404              ADD      r4,r4,r0
;;;1179   		}
;;;1180   	
;;;1181   	  /* Command the sending of dummy data */
;;;1182   	  SetVar_SendDummyData();
000168  f7fffffe          BL       SetVar_SendDummyData
;;;1183   	
;;;1184   	  /* Enable the I2S2 TXE Interrupt  => Generate the clocks*/ 
;;;1185   	  SPI_I2S_ITConfig(SPI2, SPI_I2S_IT_TXE, ENABLE);
00016c  2201              MOVS     r2,#1
00016e  2171              MOVS     r1,#0x71
000170  4648              MOV      r0,r9
000172  f7fffffe          BL       SPI_I2S_ITConfig
;;;1186   	  
;;;1187   	  /* ReSelect the MCKI frequency (FS0-1 bits): 256.Fs */
;;;1188   	  counter += CODEC_WriteRegister(0x05, 0x02 );
000176  2102              MOVS     r1,#2
000178  2005              MOVS     r0,#5
00017a  f7fffffe          BL       CODEC_WriteRegister
00017e  4404              ADD      r4,r4,r0
;;;1189   	  /* Set up the path "DAC->Speaker-Amp" with no power save (DACS and SPPSN bits) */ 
;;;1190   	  counter += CODEC_WriteRegister(0x02, 0x20 );
000180  2120              MOVS     r1,#0x20
000182  2002              MOVS     r0,#2
000184  f7fffffe          BL       CODEC_WriteRegister
000188  4404              ADD      r4,r4,r0
;;;1191   	  /* Speaker Gain (SPKG0-1 bits): Gain=+10.65dB(ALC off)/+12.65(ALC on) */
;;;1192   	  counter += CODEC_WriteRegister(0x03, 0x10);
00018a  2110              MOVS     r1,#0x10
00018c  2003              MOVS     r0,#3
00018e  f7fffffe          BL       CODEC_WriteRegister
000192  4404              ADD      r4,r4,r0
;;;1193   	
;;;1194   	  /* Extra Configuration (of the ALC) */
;;;1195   	  counter += CODEC_WriteRegister(0x06, 0x3C );
000194  213c              MOVS     r1,#0x3c
000196  2006              MOVS     r0,#6
000198  f7fffffe          BL       CODEC_WriteRegister
00019c  4404              ADD      r4,r4,r0
;;;1196   	  counter += CODEC_WriteRegister(0x08, 0xE1 );
00019e  21e1              MOVS     r1,#0xe1
0001a0  2008              MOVS     r0,#8
0001a2  f7fffffe          BL       CODEC_WriteRegister
0001a6  4404              ADD      r4,r4,r0
;;;1197   	  counter += CODEC_WriteRegister(0x0B, 0x00 );
0001a8  2100              MOVS     r1,#0
0001aa  200b              MOVS     r0,#0xb
0001ac  f7fffffe          BL       CODEC_WriteRegister
0001b0  4404              ADD      r4,r4,r0
;;;1198   	  counter += CODEC_WriteRegister(0x07, 0x20 );
0001b2  2120              MOVS     r1,#0x20
0001b4  2007              MOVS     r0,#7
0001b6  f7fffffe          BL       CODEC_WriteRegister
0001ba  4404              ADD      r4,r4,r0
;;;1199   	  counter += CODEC_WriteRegister(0x09, 0x91 );
0001bc  2191              MOVS     r1,#0x91
0001be  2009              MOVS     r0,#9
0001c0  f7fffffe          BL       CODEC_WriteRegister
0001c4  4404              ADD      r4,r4,r0
;;;1200   	  counter += CODEC_WriteRegister(0x0C, 0x91 );
0001c6  2191              MOVS     r1,#0x91
0001c8  200c              MOVS     r0,#0xc
0001ca  f7fffffe          BL       CODEC_WriteRegister
0001ce  4404              ADD      r4,r4,r0
;;;1201   	
;;;1202   	  /* Left Channel Digital Volume control */
;;;1203   	  counter += CODEC_WriteRegister(0x0A, Volume);  
0001d0  4651              MOV      r1,r10
0001d2  200a              MOVS     r0,#0xa
0001d4  f7fffffe          BL       CODEC_WriteRegister
0001d8  4404              ADD      r4,r4,r0
;;;1204   	  /* Right Channel Digital Volume control */
;;;1205   	  counter += CODEC_WriteRegister(0x0D, Volume);
0001da  4651              MOV      r1,r10
0001dc  200d              MOVS     r0,#0xd
0001de  f7fffffe          BL       CODEC_WriteRegister
0001e2  4404              ADD      r4,r4,r0
;;;1206   	  /* Power up Speaker and DAC (PMSPK and PMDAC bits)*/
;;;1207   	  counter += CODEC_WriteRegister(0x00, 0x54);
0001e4  2154              MOVS     r1,#0x54
0001e6  2000              MOVS     r0,#0
0001e8  f7fffffe          BL       CODEC_WriteRegister
0001ec  4404              ADD      r4,r4,r0
;;;1208   	  /* Set up the path "DAC -> Speaker-Amp" with no power save */ 
;;;1209   	  counter += CODEC_WriteRegister(0x02, 0xA0 /*0xA1*/);   
0001ee  21a0              MOVS     r1,#0xa0
0001f0  2002              MOVS     r0,#2
0001f2  f7fffffe          BL       CODEC_WriteRegister
0001f6  1905              ADDS     r5,r0,r4
                  |L2.504|
;;;1210     }
;;;1211   
;;;1212     /* Disable the I2S2 TXE Interrupt */ 
;;;1213     SPI_I2S_ITConfig(SPI2, SPI_I2S_IT_TXE, DISABLE);
0001f8  2200              MOVS     r2,#0
0001fa  2171              MOVS     r1,#0x71
0001fc  4648              MOV      r0,r9
0001fe  f7fffffe          BL       SPI_I2S_ITConfig
;;;1214     
;;;1215   	/* Disable the sending of Dummy data */
;;;1216   	ResetVar_SendDummyData();
000202  f7fffffe          BL       ResetVar_SendDummyData
;;;1217   
;;;1218     /* Return the counter value */
;;;1219   	return counter;
000206  4628              MOV      r0,r5
;;;1220   }
000208  e8bd87f0          POP      {r4-r10,pc}
;;;1221   
                          ENDP

                  |L2.524|
                          DCD      0x40003800

                          AREA ||i.CODEC_ReadRegister||, CODE, READONLY, ALIGN=2

                  CODEC_ReadRegister PROC
;;;1303   *******************************************************************************/
;;;1304   u32 CODEC_ReadRegister(u32 RegisterAddr)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;1305   {
;;;1306     u32 tmp = 0;
;;;1307   
;;;1308     /* Disable the I2C1 peripheral  */
;;;1309     I2C_Cmd(I2C1, DISABLE);
000004  4d32              LDR      r5,|L3.208|
000006  4606              MOV      r6,r0                 ;1305
000008  2100              MOVS     r1,#0
00000a  4628              MOV      r0,r5
00000c  f7fffffe          BL       I2C_Cmd
;;;1310   
;;;1311   	/* Reset all I2C2 registers */       
;;;1312     I2C_SoftwareResetCmd(I2C1, ENABLE);
000010  2101              MOVS     r1,#1
000012  4628              MOV      r0,r5
000014  f7fffffe          BL       I2C_SoftwareResetCmd
;;;1313     I2C_SoftwareResetCmd(I2C1, DISABLE);
000018  2100              MOVS     r1,#0
00001a  4628              MOV      r0,r5
00001c  f7fffffe          BL       I2C_SoftwareResetCmd
;;;1314     
;;;1315     /* Configure the I2C peripheral */
;;;1316   	I2C_Config();
000020  f7fffffe          BL       I2C_Config
;;;1317   
;;;1318     /* Enable the I2C peripheral */
;;;1319     I2C_GenerateSTART(I2C1, ENABLE);
000024  2101              MOVS     r1,#1
000026  4628              MOV      r0,r5
000028  f7fffffe          BL       I2C_GenerateSTART
;;;1320     
;;;1321     /* Test on EV5 and clear it */
;;;1322     while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))
00002c  4c29              LDR      r4,|L3.212|
                  |L3.46|
00002e  4628              MOV      r0,r5
000030  4621              MOV      r1,r4
000032  f7fffffe          BL       I2C_CheckEvent
000036  2800              CMP      r0,#0
000038  d0f9              BEQ      |L3.46|
;;;1323     {} 
;;;1324   
;;;1325   	/* Disable Acknowledgement */
;;;1326     I2C_AcknowledgeConfig(I2C1, DISABLE);
00003a  2100              MOVS     r1,#0
00003c  4628              MOV      r0,r5
00003e  f7fffffe          BL       I2C_AcknowledgeConfig
;;;1327   	 
;;;1328     /* Transmit the slave address and enable writing operation */
;;;1329     I2C_Send7bitAddress(I2C1, CODEC_ADDRESS, I2C_Direction_Transmitter);
000042  2200              MOVS     r2,#0
000044  2127              MOVS     r1,#0x27
000046  4628              MOV      r0,r5
000048  f7fffffe          BL       I2C_Send7bitAddress
;;;1330     
;;;1331     /* Test on EV6 and clear it */
;;;1332     while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))
00004c  4f22              LDR      r7,|L3.216|
                  |L3.78|
00004e  4628              MOV      r0,r5
000050  4639              MOV      r1,r7
000052  f7fffffe          BL       I2C_CheckEvent
000056  2800              CMP      r0,#0
000058  d0f9              BEQ      |L3.78|
;;;1333     {}
;;;1334       
;;;1335     /* Transmit the first address for r/w operations */
;;;1336     I2C_SendData(I2C1, RegisterAddr);
00005a  b2f1              UXTB     r1,r6
00005c  4628              MOV      r0,r5
00005e  f7fffffe          BL       I2C_SendData
;;;1337     
;;;1338     /* Test on EV8 and clear it */
;;;1339     while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED))
000062  4e1d              LDR      r6,|L3.216|
000064  1cb6              ADDS     r6,r6,#2
                  |L3.102|
000066  4631              MOV      r1,r6
000068  4628              MOV      r0,r5
00006a  f7fffffe          BL       I2C_CheckEvent
00006e  2800              CMP      r0,#0
000070  d0f9              BEQ      |L3.102|
;;;1340     {}
;;;1341   
;;;1342     /* Regenerate a start condition */
;;;1343     I2C_GenerateSTART(I2C1, ENABLE);
000072  2101              MOVS     r1,#1
000074  4628              MOV      r0,r5
000076  f7fffffe          BL       I2C_GenerateSTART
                  |L3.122|
;;;1344     
;;;1345     /* Test on EV5 and clear it */
;;;1346     while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))
00007a  4621              MOV      r1,r4
00007c  4628              MOV      r0,r5
00007e  f7fffffe          BL       I2C_CheckEvent
000082  2800              CMP      r0,#0
000084  d0f9              BEQ      |L3.122|
;;;1347     {} 
;;;1348      
;;;1349     /* Transmit the slave address and enable writing operation */
;;;1350     I2C_Send7bitAddress(I2C1, CODEC_ADDRESS, I2C_Direction_Receiver);
000086  2201              MOVS     r2,#1
000088  2127              MOVS     r1,#0x27
00008a  4628              MOV      r0,r5
00008c  f7fffffe          BL       I2C_Send7bitAddress
;;;1351     
;;;1352     /* Test on EV6 and clear it */
;;;1353     while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED))
000090  4c10              LDR      r4,|L3.212|
000092  1c64              ADDS     r4,r4,#1
                  |L3.148|
000094  4621              MOV      r1,r4
000096  4628              MOV      r0,r5
000098  f7fffffe          BL       I2C_CheckEvent
00009c  2800              CMP      r0,#0
00009e  d0f9              BEQ      |L3.148|
;;;1354     {}
;;;1355   
;;;1356     /* Test on EV7 and clear it */
;;;1357     while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED))
0000a0  4c0c              LDR      r4,|L3.212|
0000a2  343f              ADDS     r4,r4,#0x3f
                  |L3.164|
0000a4  4621              MOV      r1,r4
0000a6  4628              MOV      r0,r5
0000a8  f7fffffe          BL       I2C_CheckEvent
0000ac  2800              CMP      r0,#0
0000ae  d0f9              BEQ      |L3.164|
;;;1358     {} 
;;;1359   
;;;1360     /* End the configuration sequence */

⌨️ 快捷键说明

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