分享一个feisi的DA音频驱动示例代码。

2020-02-20 21:00发布

本帖最后由 FSL_TICS_Robin 于 2014-11-27 10:24 编辑

///  ¶¨Ê±Æ÷1³õʼ»¯,µ¥Î»£ºus
void PIT1_Init(uint8_t pit,uint32_t time)
{         
        GetProcessorInfo();  //¼ÆËãϵͳʱÖÓ
        time=time*(PInfo.BusClock/1000000);
        //¿ªÊ¼¶¨Ê±Æ÷ÅäÖÃ
        SIM->SCGC6|=SIM_SCGC6_PIT_MASK;//¿ªÆôpitÄ£¿éʱÖÓ£¬¼û²Î¿¼ÊÖ²á269Ò³
        PIT->MCR&=~PIT_MCR_MDIS_MASK;   //¿ªÆôpitÄ£¿é£¬¼û²Î¿¼ÊÖ²á974Ò³
        PIT->MCR|=PIT_MCR_FRZ_MASK;   //¿ªÆôpitÄ£¿é£¬¼û²Î¿¼ÊÖ²á974Ò³
        PIT->CHANNEL[pit].LDVAL=(uint32_t)time;//ÉèÖÃÑÓʱʱ¼ä£¬¼û²Î¿¼ÊÖ²á975Ò³

        DA_COUNT=0;
        //¿ªÆôÄں˽ÓÊÜÖжÏ
        switch(pit)
        {                                       

                case 1:
                        NVIC_EnableIRQ(PIT1_IRQn);
                        break;   

        }
        PIT->CHANNEL[pit].TFLG  |=PIT_TFLG_TIF_MASK;//Çå³ý±ê־λ
        PIT->CHANNEL[pit].TCTRL |=(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);//¿ªÆô¶¨Ê±Æ÷¼°Öжϣ¬¼û²Î¿¼ÊÖ²á976Ò³
}

//º¯ÊýÃû£ºDAC_Init
//˵  Ã÷£º´Ëº¯ÊýÊǽ«dacÄ£¿é½øÐгõʼ»¯ÅäÖÃ
//ûÓпªÆô»º´æ¼°dma¹¦ÄÜ
/********************************************************************************/       
void DAC_Init(void)
{
        SIM->SCGC2|=SIM_SCGC2_DAC0_MASK;   //¿ªÆôdacÄ£¿éʱÖÓ£¬¼û²Î¿¼ÊÖ²á263Ò³
        DAC0->C0|=DAC_C0_DACRFS_MASK;  //ÅäÖòο¼µçѹԴΪ2ºÅ£¬¼û²Î¿¼ÊÖ²á798Ò³
        DAC0->C0|=DAC_C0_DACEN_MASK ;  //¿ªÆôdacÄ£¿é£¬¼û²Î¿¼ÊÖ²á798Ò³
       
}
上面是DA初始化和定时器初始化
void PIT1_IRQHandler(void)
{ uint16   da;  
        PIT->CHANNEL[1].TFLG|=PIT_TFLG_TIF_MASK;//Çå±ê־λ

PIT->CHANNEL[1].LDVAL=Sound_TONE;///*18;       

if (Sound_OFF==0)
{
da=s_sin[DA_COUNT];
DA_COUNT++;
if (DA_COUNT>=12) DA_COUNT=0;
}
else //Sound_OFF=1
{
da=512;
}

if (Sound_OFF==0)
{
//LPC_DAC->DACR = (da << 6) | DAC_BIAS;               
DAC0->DAT[0].DATL=((da>>0)&0x00FF);
DAC0->DAT[0].DATH=((da>>8)&0x00FF);
}

  //Your Code
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。