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,7 +144,7 @@ void app_dac_init (void) | ||
| 144 | #ifdef I2S1_DATA_OUT | 144 | #ifdef I2S1_DATA_OUT |
| 145 | DMA_Channel0_Init((U32 *)DA_I2S_OUT_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_IIS1_OUT); | 145 | DMA_Channel0_Init((U32 *)DA_I2S_OUT_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_IIS1_OUT); |
| 146 | if (app_main_data.share_link_role == SL_ROLE_SLAVE) | 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 | #else | 148 | #else |
| 149 | #ifdef AUDIO_PWM_OUTPUT | 149 | #ifdef AUDIO_PWM_OUTPUT |
| 150 | DMA_Channel0_Init((U32 *)DA_PP_CLASSD_FIFO_ADDR, (U32 *)awOutStore.awOutSampleStore[0], DAC_OUT_FRAME_SZIE/4, SOURCE_DMA_DA_PP); | 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,11 +480,13 @@ void Dma_0_TransmitIsr(void) | ||
| 480 | } | 480 | } |
| 481 | } | 481 | } |
| 482 | 482 | ||
| 483 | +static int dma8src[4] = {0,0,0,0}; | ||
| 483 | void Dma_8_TransmitIsr (void) | 484 | void Dma_8_TransmitIsr (void) |
| 484 | { | 485 | { |
| 485 | U16 len; | 486 | U16 len; |
| 486 | int *pBuf,i; | 487 | int *pBuf,i; |
| 487 | 488 | ||
| 489 | + | ||
| 488 | if (DMA_0_COUNT == 0) | 490 | if (DMA_0_COUNT == 0) |
| 489 | { | 491 | { |
| 490 | if (awOut_contrls.awSize) | 492 | if (awOut_contrls.awSize) |
| @@ -494,7 +496,7 @@ void Dma_8_TransmitIsr (void) | @@ -494,7 +496,7 @@ void Dma_8_TransmitIsr (void) | ||
| 494 | DMA_0_SOURCE = (int *) &awOutStore.awOutSampleStore[awOut_contrls.awIndex][0]; //Source address | 496 | DMA_0_SOURCE = (int *) &awOutStore.awOutSampleStore[awOut_contrls.awIndex][0]; //Source address |
| 495 | DMA_0_COUNT = len; | 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 | DMA_8_COUNT = len - TRANS_PART2_COUNT; | 500 | DMA_8_COUNT = len - TRANS_PART2_COUNT; |
| 499 | 501 | ||
| 500 | /*Clear the previous out data*/ | 502 | /*Clear the previous out data*/ |
| @@ -515,7 +517,7 @@ void Dma_8_TransmitIsr (void) | @@ -515,7 +517,7 @@ void Dma_8_TransmitIsr (void) | ||
| 515 | DMA_0_SOURCE = (int *) &awOutStore.awOutSampleStore[1-awOut_contrls.awIndex][0]; //Source address | 517 | DMA_0_SOURCE = (int *) &awOutStore.awOutSampleStore[1-awOut_contrls.awIndex][0]; //Source address |
| 516 | DMA_0_COUNT = Zero_Buf_Size*2; | 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 | DMA_8_COUNT = Zero_Buf_Size*2 - TRANS_PART2_COUNT; | 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,7 +525,7 @@ void Dma_8_TransmitIsr (void) | ||
| 523 | { | 525 | { |
| 524 | SOFT3_INT_SET; | 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 | DMA_8_COUNT = (TRANS_PART1_COUNT + TRANS_PART2_COUNT)*2; | 529 | DMA_8_COUNT = (TRANS_PART1_COUNT + TRANS_PART2_COUNT)*2; |
| 528 | } | 530 | } |
| 529 | } | 531 | } |
| @@ -1652,14 +1652,14 @@ void taskDec(void *pvParameters) | @@ -1652,14 +1652,14 @@ void taskDec(void *pvParameters) | ||
| 1652 | //optek_hifi2_16b_to_24b(pDacbuf,pDacbuf,(samples<<1)); | 1652 | //optek_hifi2_16b_to_24b(pDacbuf,pDacbuf,(samples<<1)); |
| 1653 | } | 1653 | } |
| 1654 | #endif | 1654 | #endif |
| 1655 | -/* | 1655 | + |
| 1656 | if (pOut_up != NULL) | 1656 | if (pOut_up != NULL) |
| 1657 | { | 1657 | { |
| 1658 | app_main_data.playing_stream_chans = 1; | 1658 | app_main_data.playing_stream_chans = 1; |
| 1659 | len >>= 1; | 1659 | len >>= 1; |
| 1660 | pOut = pOut_up; | 1660 | pOut = pOut_up; |
| 1661 | } | 1661 | } |
| 1662 | -*/ | 1662 | + |
| 1663 | while(len > max_out_len) | 1663 | while(len > max_out_len) |
| 1664 | { | 1664 | { |
| 1665 | slice <<= 1; | 1665 | slice <<= 1; |
| @@ -1691,6 +1691,8 @@ void taskDec(void *pvParameters) | @@ -1691,6 +1691,8 @@ void taskDec(void *pvParameters) | ||
| 1691 | I32 adj; | 1691 | I32 adj; |
| 1692 | U32 hsamples = TRANS_PART1_SAMPLES/2; | 1692 | U32 hsamples = TRANS_PART1_SAMPLES/2; |
| 1693 | 1693 | ||
| 1694 | + adj_outsamples -= last_adj; | ||
| 1695 | + | ||
| 1694 | last_adj = 0; | 1696 | last_adj = 0; |
| 1695 | 1697 | ||
| 1696 | adj = adj_outsamples; | 1698 | adj = adj_outsamples; |
| @@ -1714,8 +1716,7 @@ void taskDec(void *pvParameters) | @@ -1714,8 +1716,7 @@ void taskDec(void *pvParameters) | ||
| 1714 | last_adj = -adj; | 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 | /*********sync end***************/ | 1721 | /*********sync end***************/ |
| 1721 | 1722 |
| @@ -2,6 +2,8 @@ | @@ -2,6 +2,8 @@ | ||
| 2 | #define _AUDIO_DEC_H_ | 2 | #define _AUDIO_DEC_H_ |
| 3 | 3 | ||
| 4 | #include "hw_codec.h" | 4 | #include "hw_codec.h" |
| 5 | +#include "hw_da_pp.h" | ||
| 6 | + | ||
| 5 | 7 | ||
| 6 | #define CO_PROCESSOR_MASK_BITS 0x03 | 8 | #define CO_PROCESSOR_MASK_BITS 0x03 |
| 7 | 9 | ||
| @@ -110,8 +112,15 @@ extern U16 dec_frame_size; | @@ -110,8 +112,15 @@ extern U16 dec_frame_size; | ||
| 110 | #define TRANS_PART1_COUNT SAMPLES2DMACOUNT(TRANS_PART1_SAMPLES) | 112 | #define TRANS_PART1_COUNT SAMPLES2DMACOUNT(TRANS_PART1_SAMPLES) |
| 111 | #define TRANS_PART2_COUNT SAMPLES2DMACOUNT(TRANS_PART2_SAMPLES) | 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 | void app_nav_spdif_stream_reinit (void); | 124 | void app_nav_spdif_stream_reinit (void); |
| 116 | 125 | ||
| 117 | void dec_direct_out_24bit( int *pBuf, U16 len ); | 126 | void dec_direct_out_24bit( int *pBuf, U16 len ); |
| @@ -24,6 +24,8 @@ | @@ -24,6 +24,8 @@ | ||
| 24 | 24 | ||
| 25 | #include "app_i2c.h" | 25 | #include "app_i2c.h" |
| 26 | 26 | ||
| 27 | +#include "app_main.h" | ||
| 28 | + | ||
| 27 | #define ADC_MASTER | 29 | #define ADC_MASTER |
| 28 | #define SINGLE_ENDED_OUTPUT | 30 | #define SINGLE_ENDED_OUTPUT |
| 29 | 31 | ||
| @@ -804,10 +806,16 @@ void audio_code_init(void) | @@ -804,10 +806,16 @@ void audio_code_init(void) | ||
| 804 | 806 | ||
| 805 | SPDIF_CONFIG = temp; | 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 | //codec setting | 821 | //codec setting |
| @@ -82,14 +82,12 @@ void dda_pp_init(void) | @@ -82,14 +82,12 @@ void dda_pp_init(void) | ||
| 82 | #endif | 82 | #endif |
| 83 | 83 | ||
| 84 | 84 | ||
| 85 | -#if (SHARE_LINK_MODE == SL_SUBWOOFER) | ||
| 86 | if (app_main_data.share_link_role == SL_ROLE_SLAVE) | 85 | if (app_main_data.share_link_role == SL_ROLE_SLAVE) |
| 87 | { | 86 | { |
| 88 | classd_config_ahb->pp_clk_config = 2; | 87 | classd_config_ahb->pp_clk_config = 2; |
| 89 | classd_config_ahb->osr_config = 0; | 88 | classd_config_ahb->osr_config = 0; |
| 90 | classd_config_ahb->sigma_delta_quan = 7; | 89 | classd_config_ahb->sigma_delta_quan = 7; |
| 91 | } | 90 | } |
| 92 | -#endif | ||
| 93 | 91 | ||
| 94 | classd_config_ahb->sigma_delta_order = 1; | 92 | classd_config_ahb->sigma_delta_order = 1; |
| 95 | #if 0//def PWM_HALF_BRIDGE | 93 | #if 0//def PWM_HALF_BRIDGE |
| @@ -48,7 +48,7 @@ | @@ -48,7 +48,7 @@ | ||
| 48 | 48 | ||
| 49 | //#define I2S1_MI2SIN_B_GROUP /* only for OTK5282/83/P */ | 49 | //#define I2S1_MI2SIN_B_GROUP /* only for OTK5282/83/P */ |
| 50 | #define I2S1_MI2SIN_BCK_LRCK_OUT //Outdead: #define I2S1_BCK_LRCK_OUT | 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 | #define I2S1_DATA_IN | 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,7 +233,7 @@ void DMA_Channel8_Init(U32 *dest, U32 *src, U32 byte_count, U8 dma_source) | ||
| 233 | 233 | ||
| 234 | pCtrl->size = DMA_TRANSMIT_SIZE_WORD; //Transfer size | 234 | pCtrl->size = DMA_TRANSMIT_SIZE_WORD; //Transfer size |
| 235 | pCtrl->burst_size = DMA_BURST_SINGLE; //1 | 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 | pCtrl->daddr_inc = DMA_SRC_ADDR_FIXED; //Destination address inc select | 237 | pCtrl->daddr_inc = DMA_SRC_ADDR_FIXED; //Destination address inc select |
| 238 | pCtrl->source = dma_source; //Dma source select | 238 | pCtrl->source = dma_source; //Dma source select |
| 239 | pCtrl->start = 0; //not software dma start | 239 | pCtrl->start = 0; //not software dma start |
Please
register
or
login
to post a comment