Commit 4638f1172326d3bd48f5f835cb7a9194f3eb5fe6
1 parent
856470fc
improve a slave issue when not pwm out
Showing
9 changed files
with
38 additions
and
19 deletions
No preview for this file type
| ... | ... | @@ -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 | ... | ... |
| ... | ... | @@ -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