Commit 4638f1172326d3bd48f5f835cb7a9194f3eb5fe6

Authored by luozhesi
1 parent 856470fc

improve a slave issue when not pwm out

1 1 {
2 2 "files.associations": {
3   - "xutility": "c"
  3 + "xutility": "c",
  4 + "app_main.h": "c"
4 5 }
5 6 }
\ No newline at end of file
... ...
... ... @@ -144,7 +144,7 @@ void app_dac_init (void)
144 144 #ifdef I2S1_DATA_OUT
145 145 DMA_Channel0_Init((U32 *)DA_I2S_OUT_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_IIS1_OUT);
146 146 if (app_main_data.share_link_role == SL_ROLE_SLAVE)
147   - DMA_Channel8_Init((U32 *)DA_PP_CLASSD_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_DA_PP);
  147 + DMA_Channel8_Init((U32 *)DA_SPDIF_OUT_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_SPDIF_DAC_OUT);
148 148 #else
149 149 #ifdef AUDIO_PWM_OUTPUT
150 150 DMA_Channel0_Init((U32 *)DA_PP_CLASSD_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_DA_PP);
... ... @@ -480,11 +480,13 @@ void Dma_0_TransmitIsr(void)
480 480 }
481 481 }
482 482
  483 +static int dma8src[4] = {0,0,0,0};
483 484 void Dma_8_TransmitIsr (void)
484 485 {
485 486 U16 len;
486 487 int *pBuf,i;
487 488
  489 +
488 490 if (DMA_0_COUNT == 0)
489 491 {
490 492 if (awOut_contrls.awSize)
... ... @@ -494,7 +496,7 @@ void Dma_8_TransmitIsr (void)
494 496 DMA_0_SOURCE = (int *) &awOutStore.awOutSampleStore[awOut_contrls.awIndex][0]; //Source address
495 497 DMA_0_COUNT = len;
496 498
497   - DMA_8_SOURCE = (int *) &awOutStore.awOutSampleStore[0][0];
  499 + DMA_8_SOURCE = dma8src;//(int *) &awOutStore.awOutSampleStore[0][0];
498 500 DMA_8_COUNT = len - TRANS_PART2_COUNT;
499 501
500 502 /*Clear the previous out data*/
... ... @@ -515,7 +517,7 @@ void Dma_8_TransmitIsr (void)
515 517 DMA_0_SOURCE = (int *) &awOutStore.awOutSampleStore[1-awOut_contrls.awIndex][0]; //Source address
516 518 DMA_0_COUNT = Zero_Buf_Size*2;
517 519
518   - DMA_8_SOURCE = (int *) &awOutStore.awOutSampleStore[0][0];
  520 + DMA_8_SOURCE = dma8src;//(int *) &awOutStore.awOutSampleStore[0][0];
519 521 DMA_8_COUNT = Zero_Buf_Size*2 - TRANS_PART2_COUNT;
520 522 }
521 523 }
... ... @@ -523,7 +525,7 @@ void Dma_8_TransmitIsr (void)
523 525 {
524 526 SOFT3_INT_SET;
525 527
526   - DMA_8_SOURCE = (int *) &awOutStore.awOutSampleStore[0][0];
  528 + DMA_8_SOURCE = dma8src;//(int *) &awOutStore.awOutSampleStore[0][0];
527 529 DMA_8_COUNT = (TRANS_PART1_COUNT + TRANS_PART2_COUNT)*2;
528 530 }
529 531 }
... ...
... ... @@ -1652,14 +1652,14 @@ void taskDec(void *pvParameters)
1652 1652 //optek_hifi2_16b_to_24b(pDacbuf,pDacbuf,(samples<<1));
1653 1653 }
1654 1654 #endif
1655   -/*
  1655 +
1656 1656 if (pOut_up != NULL)
1657 1657 {
1658 1658 app_main_data.playing_stream_chans = 1;
1659 1659 len >>= 1;
1660 1660 pOut = pOut_up;
1661 1661 }
1662   -*/
  1662 +
1663 1663 while(len > max_out_len)
1664 1664 {
1665 1665 slice <<= 1;
... ... @@ -1691,6 +1691,8 @@ void taskDec(void *pvParameters)
1691 1691 I32 adj;
1692 1692 U32 hsamples = TRANS_PART1_SAMPLES/2;
1693 1693
  1694 + adj_outsamples -= last_adj;
  1695 +
1694 1696 last_adj = 0;
1695 1697
1696 1698 adj = adj_outsamples;
... ... @@ -1714,8 +1716,7 @@ void taskDec(void *pvParameters)
1714 1716 last_adj = -adj;
1715 1717 }
1716 1718
1717   - adj_outsamples -= last_adj;
1718   - DBG_Printf("adj:%d,left:%d\r\n",last_adj,adj_outsamples);
  1719 + DBG_Printf("adj:%d,left:%d\r\n",last_adj,adj_outsamples - last_adj);
1719 1720 }
1720 1721 /*********sync end***************/
1721 1722
... ...
... ... @@ -2,6 +2,8 @@
2 2 #define _AUDIO_DEC_H_
3 3
4 4 #include "hw_codec.h"
  5 +#include "hw_da_pp.h"
  6 +
5 7
6 8 #define CO_PROCESSOR_MASK_BITS 0x03
7 9
... ... @@ -110,8 +112,15 @@ extern U16 dec_frame_size;
110 112 #define TRANS_PART1_COUNT SAMPLES2DMACOUNT(TRANS_PART1_SAMPLES)
111 113 #define TRANS_PART2_COUNT SAMPLES2DMACOUNT(TRANS_PART2_SAMPLES)
112 114
113   -#define DMA_UNDERFLOW_DELAY_COUNT 32
114   -
  115 +#ifdef I2S1_DATA_OUT
  116 + #define DMA_UNDERFLOW_DELAY_COUNT 8
  117 +#else
  118 + #ifdef AUDIO_PWM_OUTPUT
  119 + #define DMA_UNDERFLOW_DELAY_COUNT 32
  120 + #else
  121 + #define DMA_UNDERFLOW_DELAY_COUNT 8
  122 + #endif
  123 +#endif
115 124 void app_nav_spdif_stream_reinit (void);
116 125
117 126 void dec_direct_out_24bit( int *pBuf, U16 len );
... ...
... ... @@ -24,6 +24,8 @@
24 24
25 25 #include "app_i2c.h"
26 26
  27 +#include "app_main.h"
  28 +
27 29 #define ADC_MASTER
28 30 #define SINGLE_ENDED_OUTPUT
29 31
... ... @@ -804,10 +806,16 @@ void audio_code_init(void)
804 806
805 807 SPDIF_CONFIG = temp;
806 808
807   -
808   -#if 1//ndef AUDIO_PWM_OUTPUT
809   - DA_PP_CLASSD_EN |= 0x02; //spdif_en enable
810   -#endif
  809 + if (app_main_data.share_link_role == SL_ROLE_SLAVE)
  810 + {
  811 + DA_PP_CLASSD_EN = 0x03;
  812 + }
  813 + else
  814 + {
  815 + #ifndef AUDIO_PWM_OUTPUT
  816 + DA_PP_CLASSD_EN = 0x02; //spdif_en enable
  817 + #endif
  818 + }
811 819
812 820
813 821 //codec setting
... ...
... ... @@ -82,14 +82,12 @@ void dda_pp_init(void)
82 82 #endif
83 83
84 84
85   -#if (SHARE_LINK_MODE == SL_SUBWOOFER)
86 85 if (app_main_data.share_link_role == SL_ROLE_SLAVE)
87 86 {
88 87 classd_config_ahb->pp_clk_config = 2;
89 88 classd_config_ahb->osr_config = 0;
90 89 classd_config_ahb->sigma_delta_quan = 7;
91 90 }
92   -#endif
93 91
94 92 classd_config_ahb->sigma_delta_order = 1;
95 93 #if 0//def PWM_HALF_BRIDGE
... ...
... ... @@ -48,7 +48,7 @@
48 48
49 49 //#define I2S1_MI2SIN_B_GROUP /* only for OTK5282/83/P */
50 50 #define I2S1_MI2SIN_BCK_LRCK_OUT //Outdead: #define I2S1_BCK_LRCK_OUT
51   -//#define I2S1_DATA_OUT
  51 +#define I2S1_DATA_OUT
52 52
53 53 #define I2S1_DATA_IN
54 54
... ...
... ... @@ -233,7 +233,7 @@ void DMA_Channel8_Init(U32 *dest, U32 *src, U32 byte_count, U8 dma_source)
233 233
234 234 pCtrl->size = DMA_TRANSMIT_SIZE_WORD; //Transfer size
235 235 pCtrl->burst_size = DMA_BURST_SINGLE; //1
236   - pCtrl->saddr_inc = DMA_SRC_ADDR_INC;; //Source address inc select
  236 + pCtrl->saddr_inc = DMA_SRC_ADDR_FIXED;; //Source address inc select
237 237 pCtrl->daddr_inc = DMA_SRC_ADDR_FIXED; //Destination address inc select
238 238 pCtrl->source = dma_source; //Dma source select
239 239 pCtrl->start = 0; //not software dma start
... ...
Please register or login to post a comment