<wbr id="9qp22"><legend id="9qp22"><rt id="9qp22"></rt></legend></wbr>
<th id="9qp22"><noframes id="9qp22"><form id="9qp22"></form></noframes></th>

      <dd id="9qp22"><big id="9qp22"><video id="9qp22"></video></big></dd>
      <th id="9qp22"></th>
        <rp id="9qp22"><acronym id="9qp22"></acronym></rp>
        <dd id="9qp22"><pre id="9qp22"></pre></dd>

        1. <dd id="9qp22"><pre id="9qp22"></pre></dd>
          1. 打印

            [DSP] 28335的AIC23B左右通道的問題。。。

            [復制鏈接]
            409|7
            跳轉到指定樓層
            樓主
            如題,我現在在利用28335開發板來設計一個音頻信號處理系統。我仿照《Interfacing the TMS320F2833x the AIC23B Stereo Audio Codec》的例子程序,通過DMA左右聲道的方法來讀取兩路輸入的音頻信號,即將ping_buffer和pong_buffer的前半部分存儲進數組作為接入左聲道的輸入,后半部分存進一個數組作為接入右聲道的輸入,然后再進行算法的計算,然后輸出一個音頻信號。目前主要碰到的問題就是,輸出的信號可以聽到期望的音頻部分,但是總會摻雜著一個嘟嘟嘟的噪聲。嘗試過修改各個寄存器的設置,發現這個噪聲的頻率隨著語音芯片采樣率的變化而改變,改變數據接口McBSPa相關設置對于噪聲也有一定的影響,但是始終沒辦法達到實現消除噪聲的目的。
            以下是部分代碼:
            1. #pragma DATA_SECTION (ping_buffer, "DMARAML5"); // Place ping and pong in DMA RAM L5
            2. #pragma DATA_SECTION (pong_buffer, "DMARAML5");
            3. #pragma DATA_SECTION (out1, "DMARAML6"); // Place ping and pong in DMA RAM L5
            4. #pragma DATA_SECTION (out2, "DMARAML6");
            5. Uint32 out1[1024];          //512// Note that Uint32 is used, not Uint16
            6. Uint32 out2[1024];   //512
            7. Uint32 ping_buffer[1024];  //512        // Note that Uint32 is used, not Uint16
            8. Uint32 pong_buffer[1024];  //512
            9. Uint32 * L_channel = &ping_buffer[0];        // This pointer points to the beginning of the L-C data in either of the buffers
            10. Uint32 * R_channel = &ping_buffer[512];        //256  // This pointer points to the beginning of the R-C data in either of the buffers
            11. Uint32  ping_buff_offset = (Uint32)  &ping_buffer[0];
            12. Uint32  pong_buff_offset = (Uint32)  &pong_buffer[0];
            13. Uint32  out1_offset = (Uint32)  &out1[0];
            14. Uint32  out2_offset = (Uint32)  &out2[0];
            15. Uint16 first_interrupt = 1;   // 1 indicates first interrupt
            16. Uint32 k = 0;
            17. int i, j;
            18. //#pragma DATA_SECTION(noise, ".X");
            19. int noise[NUM_OF_POINT];
            20. //#pragma DATA_SECTION(out_error, ".X");
            21. int out_error[NUM_OF_POINT];
            22. //#pragma DATA_SECTION(out_error2, ".X");//
            23. //float out_error2[NUM_OF_POINT];//
            24. //#pragma DATA_SECTION(out_y, ".X");
            25. int out_y[1024];//512
            26. //#pragma DATA_SECTION(out_y2, ".X");//
            27. //float out_y2[NUM_OF_POINT];//
            28. void main(void)
            29. {
            30.    EALLOW;
            31. // Step 1. Initialize System Control:
            32. // PLL, WatchDog, enable Peripheral Clocks
            33.     InitSysCtrl();
            34. // Step 2. Initalize GPIO:
            35. // For this example, enable the GPIO PINS for McBSP operation.
            36.     InitMcbspGpio();
            37.     InitI2CGpio();
            38. /* Fill the buffer with dummy data */
            39.         for(k=0; k<1024; k++) { ping_buffer[k] = 0x00000000; } //1024
            40.         for(k=0; k<1024; k++) { pong_buffer[k] = 0x00000000; }
            41.         for(k=0; k<1024; k++) { out1[k] = 0x00000000; }
            42.         for(k=0; k<1024; k++) { out2[k] = 0x00000000; }
            43. // Step 3. Clear all interrupts and initialize PIE vector table:
            44. // Disable CPU interrupts
            45.    DINT;
            46. // Initialize PIE control registers to their default state.
            47. // The default state is all PIE interrupts disabled and flags
            48. // are cleared.
            49. // This function is found in the DSP2833x_PieCtrl.c file.
            50.    InitPieCtrl();
            51.    EALLOW;
            52.    DINT;                        // Disable interrupts again (for now)
            53. // Disable CPU interrupts and clear all CPU interrupt flags:
            54.    IER = 0x0000;
            55.    IFR = 0x0000;
            56. // Step 4. Initialize the Peripherals
            57.         ping_buff_offset++;    // Start at location 1 (32-bit r/w from loc. 1, then 0)
            58.         pong_buff_offset++;    // Start at location 1 (32-bit r/w from loc. 1, then 0)                                                                              //init_mcbsp_spi();       // Initialize McBSP-B as SPI Control
            59.         out1_offset++;    // Start at location 1 (32-bit r/w from loc. 1, then 0)
            60.         out2_offset++;    // Start at location 1 (32-bit r/w from loc. 1, then 0)
            61.         I2CA_Init();
            62.                AIC23Write(0x00,0x1f);//左聲道輸入音量
            63.                         Delay(100);
            64.                   AIC23Write(0x02,0x1f);//右聲道輸入音量
            65.                   Delay(100);
            66.                         AIC23Write(0x04,0xBf);//左聲道輸出音量
            67.                         Delay(100);
            68.                   AIC23Write(0x06,0xBf);//右聲道輸出音量
            69.                         Delay(100);
            70.                         AIC23Write(0x08,0x12);//AIC23Write(0x08,0x12);//DAC選擇,lin輸入//AIC23Write(0x08,0x14);//DAC選擇,MIC輸入
            71.                         Delay(100);
            72.                   AIC23Write(0x0A,0x00);//AIC23Write(0x0A,0x00);
            73.                         Delay(100);
            74.                         AIC23Write(0x0C,0x00);
            75.                         Delay(100);
            76.                        AIC23Write(0x0E,0x43);//AIC23Write(0x0E,0x43);//數字音頻接口格式控制,AIC23主模式,dsp初始化,轉換比特值設定00即:16bit--》96dB//AIC23Write(0x0E,0x63);
            77.                         Delay(100);
            78.                        AIC23Write(0x10,0x0d);//AIC23Write(0x10,0x23/0c);//設置采樣率為16khz;USB模式下時鐘為12mhz,采樣率為12/272=44.1Khz//AIC23Write(0x10,0xce);
            79.                         Delay(100);
            80.                   AIC23Write(0x12,0x01);//激活標志
            81.                         Delay(100);                //AIC23Init
            82.                        // AIC23Write(0x1e,0x00);//激活標志
            83.                       //AIC23Init
            84.         init_dma();                                // Initialize the DMA before McBSP, so that DMA is ready to transfer the McBSP data
            85.         InitMcbspa();
            86.         //init_mcbspa();              // Initalize McBSP-A
            87.         //init_zone7();
            88.         //InitMcbspa(); //init_mcbspa();              // Initalize McBSP-A
            89.     delay_loop();
            90.     EALLOW;
            91.     DmaRegs.CH1.CONTROL.bit.RUN = 1; // Start rx on Channel 1
            92. /* Reassign ISRS */
            93.         PieVectTable.DINTCH1 = &local_D_INTCH1_ISR;
            94.     PieVectTable.DINTCH2 = &local_D_INTCH2_ISR;
            95. /* Configure PIE interrupts */
            96.         PieCtrlRegs.PIECTRL.bit.ENPIE = 1;  // Enable vector fetching from PIE block
            97.         PieCtrlRegs.PIEACK.all = 0xFFFF;    // Enables PIE to drive a pulse into the CPU
            98. // The interrupt can be asserted in the following interrupt lines
            99.         PieCtrlRegs.PIEIER7.bit.INTx1 = 1;        // Enable INTx.1 of INT7 (DMA CH1)
            100.     PieCtrlRegs.PIEIER7.bit.INTx2 = 1;  // Enable INTx.2 of INT7 (DMA CH2)
            101. /* Configure system interrupts */
            102.         IER |= 0x0040;                                            // Enable  INT7
            103.     EINT;                                                      // Global enable of interrupts
            104.     EDIS;
            105. /* Wait for data */
            106.           while(1) {
            107.                   for(i=0;i<512;i++)
            108.                                          {
            109.                                          noise[i]=ping_buffer[i];
            110.                                          noise[i+512]=pong_buffer[i];
            111.                                          out_error[i]=ping_buffer[i+512];
            112.                                         out_error[i+512]=pong_buffer[i+512];
            113.                                          }
            114.                       for(i=0;i<1024;i++)                                                                                     {                                                                                                                                                if(i<LMS_M)                                                                                               {                                                                                              for(j=0;j<=i;j++)                                                                                               {                                                                                                lms_x[j] =noise[i-j];                                                                                              lms_error[j]=out_error[i-j];                                                                                               }                                                                                               }                                                                                               else                                                                                               {                                                                                              for(j=0;j<LMS_M;j++)                                                                                               {                                                                                               lms_x[j] = noise[i-j];                                                                                              lms_error[j]=out_error[i-j];                                                                                               }                                                                                               }                                                                                               lms_param_in.d = noise[i];//signal_noise[i];                                                                                               lms_param_in.error = &lms_error[0];                                                                                                lms_param_in.x_ptr = &lms_x[0];                                                                                                lms_param_in.length_x = LMS_M;                                                                                                LMS_Gradient_Instantaneous_Estimates(&lms_param_in, &lms_param_out);                    //運行瞬時梯度估計LMS算法 耗時514個時鐘周期                                                                                                out_y[i] =lms_param_out.y;//                                                                                            //Delay(10);                                                                                            //out_y[i] =noise[i];                                                                                                                 }
            115.                   for(i=0;i<512;i++)
            116.                                     {
            117.                                             out1[i]=out_y[i];        //輸出左通道
            118.                                             out1[i+512]=out_y[i];    //輸出右通道
            119.                                             out2[i]=out_y[i+512];    //輸出左通道
            120.                                             out2[i+512]=out_y[i+512];//輸出右通道
            121.                                 }
            122.                             }//while
            123. }//main
            124. // INT7.1 -
            125. interrupt void local_D_INTCH1_ISR(void)                // DMA Ch1 - McBSP-A Rx
            126. {
            127.     EALLOW;
            128.     if(first_interrupt==1) // No processing needs to be done (B/c interrupt occurs
            129.         {                      // at beginning of DMA transfers to ping buffer - no data received yet)
            130.                     first_interrupt=0; // Turn flag off and exit interrupt
            131.                 }
            132.         else
            133.                 {
            134.         DmaRegs.CH2.CONTROL.bit.RUN = 1;
            135.     }
            136.     // When DMA first starts working on ping buffer, set the shadow registers
            137.     //   to start at pong buffer next time and vice versa
            138.     if(  DmaRegs.CH1.DST_ADDR_SHADOW == ping_buff_offset)
            139.         {
            140.                 DmaRegs.CH1.DST_ADDR_SHADOW = pong_buff_offset;
            141.                   DmaRegs.CH1.DST_BEG_ADDR_SHADOW = pong_buff_offset;
            142.         }
            143.         else
            144.         {
            145.                 DmaRegs.CH1.DST_ADDR_SHADOW = ping_buff_offset;
            146.                   DmaRegs.CH1.DST_BEG_ADDR_SHADOW = ping_buff_offset;
            147. }
            148. // To receive more interrupts from this PIE group, acknowledge this interrupt
            149.     PieCtrlRegs.PIEACK.all = PIEACK_GROUP7;
            150.     EDIS;
            151. }
            152. // INT7.2
            153. interrupt void local_D_INTCH2_ISR(void)                // DMA Ch2 - McBSP-A Tx
            154. {
            155.         // When DMA first starts working on ping buffer, set the shadow registers
            156.     //   to start at pong buffer next time and vice versa
            157.     EALLOW;
            158.            if(DmaRegs.CH2.SRC_ADDR_SHADOW == out1_offset)//
            159.         {
            160.             DmaRegs.CH2.SRC_ADDR_SHADOW = out2_offset;//
            161.             DmaRegs.CH2.SRC_BEG_ADDR_SHADOW = out2_offset;//(Uint32)&out_y[0];
            162.         }
            163.         else
            164.         {
            165.             DmaRegs.CH2.SRC_ADDR_SHADOW =out1_offset;//pong_buff_offset;//(Uint32)&out_y[0];
            166.             DmaRegs.CH2.SRC_BEG_ADDR_SHADOW =  out1_offset;//pong_buff_offset;//(Uint32)&out_y[0];
            167.         }
            168.            PieCtrlRegs.PIEACK.all = PIEACK_GROUP7; // To receive more interrupts from this PIE group, acknowledge this interrupt
            169.     EDIS;
            170. }
            171. void init_dma()
            172. {
            173.   EALLOW;
            174.   DmaRegs.DMACTRL.bit.HARDRESET = 1;
            175.   asm("     NOP");
            176.   DmaRegs.PRIORITYCTRL1.bit.CH1PRIORITY = 0;
            177.   /* DMA Channel 1 - McBSP-A Receive */
            178.   DmaRegs.CH1.BURST_SIZE.all = 1;        // 2 16-bit words/burst (1 32-bit word) - memory address bumped up by 1 internally
            179.   DmaRegs.CH1.SRC_BURST_STEP = 1;        // DRR2 must be read first & then DRR1. Increment by 1. Hence a value of +1. (This is a 2's C #)
            180.   DmaRegs.CH1.DST_BURST_STEP = -1;        // Copy DRR2 data to address N+1 and DRR1 data to N. Hence -1 (32-bit read= read addr N+1 as MSB, then N as LSB)
            181.   DmaRegs.CH1.TRANSFER_SIZE = 1023;//511;        // DMA Interrupt every 1024 (n+1) bursts (1024 32-bit words).

            182.   DmaRegs.CH1.SRC_TRANSFER_STEP = -1; // Decrement source address by 1 (from DRR1 back to DRR2) after processing a burst of data
            183.   DmaRegs.CH1.DST_TRANSFER_STEP = 1025;//513; // After copying 1 32-bit word of L-C data (1 burst), move down to R-C data in a given buffer

            184.   DmaRegs.CH1.SRC_ADDR_SHADOW = (Uint32) &McbspaRegs.DRR2.all;  // First read from DRR2
            185.   DmaRegs.CH1.SRC_BEG_ADDR_SHADOW = (Uint32) &McbspaRegs.DRR2.all;
            186.   DmaRegs.CH1.DST_ADDR_SHADOW = ping_buff_offset;               // First write to ping_buffer[1]
            187.   DmaRegs.CH1.DST_BEG_ADDR_SHADOW = ping_buff_offset;

            188.   DmaRegs.CH1.DST_WRAP_SIZE = 1;          // After LEFT(1) and then RIGHT(2), go back to LEFT buffer
            189.   DmaRegs.CH1.SRC_WRAP_SIZE = 0xFFFF; // Arbitary large value. We'll never hit this.....
            190.   DmaRegs.CH1.DST_WRAP_STEP = 2;      // From starting address, move down 2 16-bit addresses to write nxt 32-bit word

            191.   DmaRegs.CH1.CONTROL.bit.PERINTCLR = 1;
            192.   DmaRegs.CH1.CONTROL.bit.SYNCCLR = 1;
            193.   DmaRegs.CH1.CONTROL.bit.ERRCLR = 1;

            194.   DmaRegs.CH1.MODE.bit.CHINTE = 1;          // Enable DMA channel interrupts
            195.   DmaRegs.CH1.MODE.bit.CHINTMODE = 0;       // Interrupt at beginning of transfer
            196.   DmaRegs.CH1.MODE.bit.PERINTSEL = 15;                // McBSP MREVTA
            197.   DmaRegs.CH1.MODE.bit.CONTINUOUS = 1;      // Enable continuous mode (continuously receives)// Enable interrupts from peripheral (to trigger DMA)
            198.   DmaRegs.CH1.MODE.bit.PERINTE = 1;         // Enable interrupts from peripheral (to trigger DMA)





            199.   /* DMA Channel 2 - McBSP-A Transmit */
            200.   DmaRegs.CH2.BURST_SIZE.all = 1;        // 2 16-bit words/burst (1 32-bit word) - value bumped up by 1 internally
            201.   DmaRegs.CH2.SRC_BURST_STEP = -1;        // Copy data at address N+1 to DXR2 first then data at N to DXR1. Hence -1
            202.   DmaRegs.CH2.DST_BURST_STEP = 1;        // DXR2 must be written to first & then DXR1. Increment by 1. Hence a value of +1. (This is a 2's C #)
            203.   DmaRegs.CH2.TRANSFER_SIZE = 1023;//511;        // DMA Interrupt every 1024 (n+1) 16-bit words. McBSP still handles 16-bit data only in registers

            204.   DmaRegs.CH2.SRC_TRANSFER_STEP = 1025;//513; // After copying 1 32-bit word L-C data, move down to R-C data in a given buffer
            205.   DmaRegs.CH2.DST_TRANSFER_STEP = -1;   // Decrement dest. address by 1 (DXR1 back to DXR2) after processing a burst of data

            206.   DmaRegs.CH2.SRC_ADDR_SHADOW = out1_offset;//;               // First read from ping_buffer[1]
            207.   DmaRegs.CH2.SRC_BEG_ADDR_SHADOW = out1_offset;//;
            208.   DmaRegs.CH2.DST_ADDR_SHADOW = (Uint32) &McbspaRegs.DXR2.all;  // First write to DXR2
            209.   DmaRegs.CH2.DST_BEG_ADDR_SHADOW = (Uint32) &McbspaRegs.DXR2.all;

            210.   DmaRegs.CH2.SRC_WRAP_SIZE = 1;             // After LEFT(1) and then RIGHT(2), go back to LEFT buffer
            211.   DmaRegs.CH2.DST_WRAP_SIZE = 0xFFFF;           // Arbitary large value. We'll never hit this.....
            212.   DmaRegs.CH2.SRC_WRAP_STEP = 2;         // From starting address, move down 2 16-bit addresses to read next 32-bit word

            213.   DmaRegs.CH2.CONTROL.bit.PERINTCLR = 1;
            214.   DmaRegs.CH2.CONTROL.bit.SYNCCLR = 1;
            215.   DmaRegs.CH2.CONTROL.bit.ERRCLR = 1;
            216.   DmaRegs.CH2.MODE.bit.CHINTE = 1;          // Enable DMA channel interrupts
            217.   DmaRegs.CH2.MODE.bit.CHINTMODE = 0;       // Interrupt at beginning of transfer
            218.   DmaRegs.CH2.MODE.bit.PERINTSEL = 14;                // McBSP MXEVTA
            219.   DmaRegs.CH2.MODE.bit.CONTINUOUS = 1;      // Enable continuous mode (continuously transmits)
            220.   DmaRegs.CH2.MODE.bit.PERINTE = 1;         // Enable interrupts from peripheral (to trigger DMA)
            221. }
            222. void I2CA_Init(void)
            223. {
            224.    // Initialize I2C
            225.    I2caRegs.I2CSAR = 0x001A;                // Slave address - EEPROM control code
            226.    #if (CPU_FRQ_150MHZ)             // Default - For 150MHz SYSCLKOUT
            227.         I2caRegs.I2CPSC.all = 14;   // Prescaler - need 7-12 Mhz on module clk (150/15 = 10MHz)
            228.    #endif
            229.    #if (CPU_FRQ_100MHZ)             // For 100 MHz SYSCLKOUT
            230.      I2caRegs.I2CPSC.all = 9;            // Prescaler - need 7-12 Mhz on module clk (100/10 = 10MHz)
            231.    #endif
            232.    I2caRegs.I2CCLKL = 100;                        // NOTE: must be non zero
            233.    I2caRegs.I2CCLKH = 100;                        // NOTE: must be non zero
            234.    I2caRegs.I2CIER.all = 0x24;                // Enable SCD & ARDY interrupts
            235. //   I2caRegs.I2CMDR.all = 0x0020;        // Take I2C out of reset
            236.    I2caRegs.I2CMDR.all = 0x0420;        // Take I2C out of reset                //zq0x0420                                                                        // Stop I2C when suspended
            237.    I2caRegs.I2CFFTX.all = 0x6000;        // Enable FIFO mode and TXFIFO
            238.    I2caRegs.I2CFFRX.all = 0x2040;        // Enable RXFIFO, clear RXFFINT,
            239.    return;
            240. }
            241. Uint16 AIC23Write(int Address,int Data)
            242. {
            243.    if (I2caRegs.I2CMDR.bit.STP == 1)
            244.    {
            245.       return I2C_STP_NOT_READY_ERROR;
            246.    }
            247.    // Setup slave address
            248.    I2caRegs.I2CSAR = 0x1A;
            249.    // Check if bus busy
            250.    if (I2caRegs.I2CSTR.bit.BB == 1)
            251.    {
            252.       return I2C_BUS_BUSY_ERROR;
            253.    }
            254.    // Setup number of bytes to send
            255.    // MsgBuffer + Address
            256.    I2caRegs.I2CCNT = 2;
            257.    I2caRegs.I2CDXR = Address;
            258.    I2caRegs.I2CDXR = Data;
            259.    // Send start as master transmitter
            260.    I2caRegs.I2CMDR.all = 0x6E20;
            261.    return I2C_SUCCESS;
            262. }
            復制代碼

            下面是算法部分代碼:
            1. #include <dotp.h>
            2. #include <string.h>
            3. #include "LMS.h"
            4. #include "math.h"
            5. #pragma DATA_ALIGN(lms_x, 8)
            6. float lms_x[LMS_M];
            7. #pragma DATA_ALIGN(lms_x, 8)
            8. float lms_error[LMS_M];
            9. //輸入信號向量存儲數組
            10. #pragma DATA_ALIGN(lms_w_forward, 8)
            11. float lms_w_forward[LMS_M];                                       //用于存儲未來一時刻濾波系數向量w(k+1)
            12. #pragma DATA_ALIGN(lms_w, 8)
            13. float lms_w[LMS_M];                                                       //用于存儲當前時刻濾波系數矢量w(k)
            14. //#pragma DATA_ALIGN(f, 8)
            15. //float f1=-0.0975884274,f2=-0.05387716,f3=-0.0100407312,f4=0.0334515497,f5=0.0760843381,f6=0.117433414,f7=0.157142982,f8=0.195035622,f9=-0.0992347822,f10=-0.0552046672,f11=-0.0110044545,f12=0.0329072662,f13=0.0759775937,f14=0.117753103,f15=0.157848254,f16=0.196025595;
            16. float a=2,b=0.000000000000025;//0.000000000000025;//
            17. Adaptive_Filter_In    lms_param_in;
            18. Adaptive_Filter_Out  lms_param_out;
            19. void LMS_Gradient_Instantaneous_Estimates(Adaptive_Filter_In *lms_in, Adaptive_Filter_Out* lms_out)
            20. {
            21.     int i;
            22.     static int FIR_order;
            23.     static unsigned char First_in_flag = 1;
            24.     static float *w_ptr, *w_forward_ptr, *Temp_w_ptr;
            25.     static float *x_ptr,*error;
            26.     float  temp,yy=0;
            27.     if(First_in_flag )
            28.     {
            29.         First_in_flag = 0;
            30.         FIR_order = lms_in->length_x;
            31.         memset((void *)lms_w_forward, 0, FIR_order*4);
            32.         memset((void *)lms_w, 0, FIR_order*4);
            33.         w_forward_ptr = lms_w_forward;
            34.         w_ptr = lms_w;
            35.         x_ptr = lms_in->x_ptr;
            36.         error = lms_in->error;
            37.     }
            38.     for(i=0; i<FIR_order; i++)
            39.        {
            40.             yy+=x_ptr[i]*w_ptr[i];
            41.             lms_out->y =yy;
            42.        }
            43.    temp = b*(lms_in->d - lms_out->y);
            44.     for(i=0; i<FIR_order; i++)
            45.     {
            46.         w_forward_ptr[i]   = w_ptr[i]   +temp*x_ptr[i];//*f1;//0.00000005*lms_out->error*x_ptr[i];      
            47.     }
            48.     Temp_w_ptr = w_forward_ptr;        //新舊濾波系數矢量指針交換
            49.     w_forward_ptr = w_ptr;
            50.     w_ptr = Temp_w_ptr;

            51. }
            復制代碼

            希望對這方面比較了解的人能給小弟一些指點!謝謝了!困擾了我好久的問題了。。。

            使用特權

            評論回復

            評論

            2858874703 2019-9-17 15:43 回復TA
            @buda :能加個好友嗎?這程序工程能發過來看看嗎? 
            buda 2019-9-12 16:54 回復TA
            @2858874703 :你能幫我解決我現在這個問題嗎? 
            2858874703 2019-9-10 13:40 回復TA
            方便 的話能交流一下嗎 
            2858874703 2019-9-10 13:37 回復TA
            您好,方便加一個好友嗎?或者能把你這個程序發我看看嘛?我想學學,謝謝,我QQ號:582696350, 郵箱:582696350@qq.com 
            沙發
            | 2019-9-4 23:15 | 只看該作者
            不加信號處理的話   直接進行采集后送出  正常嗎

            使用特權

            評論回復
            板凳
             樓主 | 2019-9-5 10:29 | 只看該作者
            zhangmangui 發表于 2019-9-4 23:15
            不加信號處理的話   直接進行采集后送出  正常嗎

            如果不加信號處理,輸出是正常的

            使用特權

            評論回復
            地板
            | 2019-10-6 09:27 | 只看該作者
            問題解決了 麻煩分享一下  謝謝

            使用特權

            評論回復
            掃描二維碼,隨時隨地手機跟帖
            您需要登錄后才可以回帖 登錄 | 注冊

            本版積分規則

            我要發帖 投訴建議 創建版塊 申請版主

            快速回復

            您需要登錄后才可以回帖
            登錄 | 注冊
            高級模式

            論壇熱帖

            在線客服 快速回復 返回頂部 返回列表
            成人短片线上看