⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drvi2s.c

📁 cortex-m0 LCD1602程序
💻 C
📖 第 1 页 / 共 4 页
字号:
/*               I2S MCLK (Master Clock) frequency                                                         */
/*                                                                                                         */
/* Description:                                                                                            */
/*               Get I2S MCLK (Master Clock) frequency. MCLK = I2S source clock / (2xMCLK_DIV)             */       
/*---------------------------------------------------------------------------------------------------------*/
uint32_t DrvI2S_GetMCLKFreq(void)
{
    uint32_t u32Reg, u32SrcClk;

    u32Reg = I2S->I2SCLKDIV.MCLK_DIV;

    u32SrcClk = DrvI2S_GetSourceClockFreq();    

    if (u32Reg == 0)
        return u32SrcClk;
    else
        return ((u32SrcClk >> 1) / u32Reg);
}


/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2S_SetMCLKFreq                                                                            */
/*                                                                                                         */
/* Parameters:                                                                                             */
/*               u32Mclk   - [in]       I2S master clock output ftequency (Hz)                             */
/*                                                                                                         */
/* Returns:                                                                                                */
/*               None                                                                                      */
/*                                                                                                         */
/* Description:                                                                                            */
/*               Set master clock divider. MCLK = I2S source clock / (2xMCLK_DIV)                          */       
/*---------------------------------------------------------------------------------------------------------*/
void DrvI2S_SetMCLKFreq(uint32_t u32Mclk)
{
    uint8_t u8Divider;
    uint32_t u32SrcClk;

    u32SrcClk = DrvI2S_GetSourceClockFreq(); 

    if (u32Mclk == u32SrcClk)
    {
        u8Divider = 0;
    }
    else
    {
        u8Divider = (u32SrcClk/u32Mclk) >> 1;
    }
    
    I2S->I2SCLKDIV.MCLK_DIV = u8Divider;
}

/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2S_SetChannelZeroCrossDetect                                                              */
/*                                                                                                         */
/* Parameters:                                                                                             */
/*               channel    - [in]      I2S_LEFT_CHANNEL / I2S_RIGHT_CHANNEL                               */
/*               i32flag    - [out]     1:Enable / 0:Disable                                               */
/*                                                                                                         */
/* Returns:                                                                                                */
/*               0       Success                                                                           */
/*              <0       Incorrect Argument                                                                */
/*                                                                                                         */
/* Description:                                                                                            */
/*               Enable/Disable left/right channel zero cross detect function                              */
/*---------------------------------------------------------------------------------------------------------*/
int32_t DrvI2S_SetChannelZeroCrossDetect(E_I2S_CHANNEL channel, int32_t i32flag)
{
    if (channel == I2S_LEFT_CHANNEL)
    {
        I2S->I2SCON.LCHZCEN = i32flag;
    }
    else if (channel == I2S_RIGHT_CHANNEL)
    {
        I2S->I2SCON.RCHZCEN = i32flag;
    }
    else
        return E_DRVI2S_ERR_ARGUMENT;

    return E_SUCCESS;
}

/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2S_EnableTxDMA                                                                            */
/*                                                                                                         */
/* Parameters:                                                                                             */
/*               None                                                                                      */
/*                                                                                                         */
/* Returns:                                                                                                */
/*               None                                                                                      */
/*                                                                                                         */
/* Description:                                                                                            */
/*               Enable I2S Tx DMA function. I2S requests DMA to transfer data to Tx FIFO                  */
/*---------------------------------------------------------------------------------------------------------*/
void DrvI2S_EnableTxDMA(void)
{   
    I2S->I2SCON.TXDMA = 1;
}

/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2S_DisableTxDMA                                                                           */
/*                                                                                                         */
/* Parameters:                                                                                             */
/*               None                                                                                      */
/*                                                                                                         */
/* Returns:                                                                                                */
/*               None                                                                                      */
/*                                                                                                         */
/* Description:                                                                                            */
/*               Disable I2S Tx DMA function.                                                              */
/*---------------------------------------------------------------------------------------------------------*/
void DrvI2S_DisableTxDMA(void)
{   
    I2S->I2SCON.TXDMA = 0;
}

/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2S_EnableRxDMA                                                                            */
/*                                                                                                         */
/* Parameters:                                                                                             */
/*               None                                                                                      */
/*                                                                                                         */
/* Returns:                                                                                                */
/*               None                                                                                      */
/*                                                                                                         */
/* Description:                                                                                            */
/*               Enable I2S Rx DMA function. I2S requests DMA to transfer data from Rx FIFO                */
/*---------------------------------------------------------------------------------------------------------*/
void DrvI2S_EnableRxDMA(void)
{
    I2S->I2SCON.RXDMA = 1; 
}

/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2S_DisableRxDMA                                                                           */
/*                                                                                                         */
/* Parameters:                                                                                             */
/*               None                                                                                      */
/*                                                                                                         */
/* Returns:                                                                                                */
/*               None                                                                                      */
/*                                                                                                         */
/* Description:                                                                                            */
/*               Disable I2S Rx DMA function.                                                              */
/*---------------------------------------------------------------------------------------------------------*/
void DrvI2S_DisableRxDMA(void)
{
    I2S->I2SCON.RXDMA = 0; 
}

/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2S_EnableTx                                                                               */
/*                                                                                                         */
/* Parameters:                                                                                             */
/*               None                                                                                      */
/*                                                                                                         */
/* Returns:                                                                                                */
/*               None                                                                                      */
/*                                                                                                         */
/* Description:                                                                                            */
/*               Enable I2S Tx function                                                                    */
/*---------------------------------------------------------------------------------------------------------*/
void DrvI2S_EnableTx(void)
{
    I2S->I2SCON.TXEN = 1;
}

/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2S_DisableTx                                                                              */
/*                                                                                                         */
/* Parameters:                                                                                             */
/*               None                                                                                      */
/*                                                                                                         */
/* Returns:                                                                                                */
/*               None                                                                                      */
/*                                                                                                         */
/* Description:                                                                                            */
/*               Disable I2S Tx function                                                                    */
/*---------------------------------------------------------------------------------------------------------*/
void DrvI2S_DisableTx(void)
{
    I2S->I2SCON.TXEN = 0;
}

/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2S_EnableRx                                                                               */
/*                                                                                                         */
/* Parameters:                                                                                             */
/*               None                                                                                      */
/*                                                                                                         */
/* Returns:                                                                                                */
/*               None                                                                                      */
/*                                                                                                         */
/* Description:                                                                                            */
/*               Disable I2S Rx function                                                                   */
/*---------------------------------------------------------------------------------------------------------*/
void DrvI2S_EnableRx(void)
{
    I2S->I2SCON.RXEN = 1;  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -