Beispiel #1
0
/*******************************************************************************
* Function Name  : I2C_FCLKConfig
* Description    : Configures frequency bits according to RCLK frequency.
*                  the selected I2C  must be disabled
* Input          : I2Cx ( I2C0 or I2C1 )
* Return         : None.
*******************************************************************************/
void I2C_FCLKConfig (I2C_TypeDef *I2Cx)
{
  u32 FCLK=0;
     /* Get the FCLK frequency using the RCCU library */
  FCLK = RCCU_FrequencyValue ( RCCU_FCLK );
     /* Test the value of the FCLK and affect FR0,FR1&FR2 of the OAR2 register */
  if (FCLK > 5000000)
    {
    if (FCLK <10000000)
      I2Cx->OAR2 |= 0x00;
    else if (FCLK <16670000)
      I2Cx->OAR2 |= 0x20;
    else if (FCLK < 26670000)
      I2Cx->OAR2 |= 0x40;
    else if (FCLK <40000000)
      I2Cx->OAR2 |= 0x60;
    else if (FCLK < 53330000)
      I2Cx->OAR2 |= 0x80;
    else if (FCLK < 66000000)
      I2Cx->OAR2 |= 0xA0;
    else if (FCLK <80000000)
      I2Cx->OAR2 |= 0xC0;
    else if (FCLK <100000000)
      I2Cx->OAR2 |= 0xE0;
   }
}
Beispiel #2
0
/*******************************************************************************
* Function Name  : WDG_PeriodValueConfig
* Description    : Set the prescaler and counter reload value
* Input          : Amount of time (us) needed
* Return         : None
*******************************************************************************/
void WDG_PeriodValueConfig ( u32 Time )
{
	unsigned int a;
	unsigned long n, b;

	n = Time * (RCCU_FrequencyValue(RCCU_PCLK) / 1000000);
	FindFactors(n, &a, &b);
    WDG->PR = a - 1;
    WDG->VR = b - 1;
}
Beispiel #3
0
/*******************************************************************************
* Function Name      : ADC12_PrescalerConfig
* Description        : This function is used to configure the ADC sampling
*                      frequency by setting the prescaler register.
* Input              : - Adc12_clk: specifies the sampling frequency in Hz.
* Output             : None.
* Return             : None.
*******************************************************************************/
void ADC12_PrescalerConfig(u32 Adc12_clk)
{
    u32 temp = 0;

    temp = (vu16)((RCCU_FrequencyValue(RCCU_PCLK2)*10) / (Adc12_clk * 512 * 8));

    /* Configure the ADC12_CPR register with the nearest prescaler value */
    if(temp - ((temp/10)*10) < 5)
    {
        ADC12->CPR = (u16)(temp/10);
    }
    else
    {
        ADC12->CPR = (u16)((temp/10)+1);
    }
}
Beispiel #4
0
/*******************************************************************************
* Function Name  : RCCU_PLL1Config
* Description    : Configures the PLL1 division and multiplication factors.
* Input          : - New_Mul: the PLL1 multiplication factor it can be: 
*                     RCCU_PLL1_Mul_12, RCCU_PLL1_Mul_16,RCCU_PLL1_Mul_20,
*                     RCCU_PLL1_Mul_24
*                  - New_Div: the PLL1 division factor it can be: 
*                     RCCU_Div_1, RCCU_Div_2, RCCU_Div_3, RCCU_Div_4,RCCU_Div_5,
*                     RCCU_Div_6, RCCU_Div_7
* Output         : None.
* Return         : None.
*******************************************************************************/
void RCCU_PLL1Config (RCCU_PLL1_Mul New_Mul, RCCU_PLL_Div New_Div)
{
  /* Turn off the PLL1 by setting bits DX[2:0] */
  RCCU->PLL1CR = 0x0007;
   
  /* Set the PLL1 multiplication factor */
  RCCU->PLL1CR =  New_Mul << RCCU_MX_Index;

  /* Set the PLL1 division factor */
  RCCU->PLL1CR |=  New_Div;

  /* Set the PLL1 FREF_RANGE bit according to the PLL1 input frequency */
  if (RCCU_FrequencyValue(RCCU_CLK2) > 3000000)
  {
    RCCU->PLL1CR |= RCCU_FREFRANGE_Mask;
  }
   
  /* Set the CK2_16 Bit in the CFR to allow PLL1 to be selected */
  RCCU->CFR |= RCCU_CK2_16_Mask;
}
Beispiel #5
0
/*******************************************************************************
* Function Name  : I2C_SpeedConfig
* Description    : Selects I2C clock speed and configures its corresponding mode.
* Input          : I2Cx ( I2C0 or I2C1 )
*                  Clock: I2C expected clock in Hertz.
* Return         : None.
*******************************************************************************/
void I2C_SpeedConfig (I2C_TypeDef *I2Cx, u32 Clock)
{
  u32 FCLK=0;
  u16 result=0;
  /* Get the FCLK frequency using the RCCU library */
  FCLK = RCCU_FrequencyValue ( RCCU_FCLK );
  /* Test on speed mode */
  /* Update the CCR and ECCR are updated */
  if (Clock <=100000)
  /* Standard mode selected */
  {
    result = ((FCLK / Clock) - 7)/2;
    /* Clear FM/SM bit */
    I2Cx->CCR=result &0x7f;
  }
  else if (Clock <=400000)
  {
    /* Fast mode selected */
    result = ((FCLK/Clock)-9)/3;
    /* set FM/SM bit */
    I2Cx->CCR=result |0x80;
  }
  I2Cx->ECCR= result >>7;
}
Beispiel #6
0
/*******************************************************************************
* Function Name      : ADC12_PrescalerConfig
* Description        : This routine is used to configure the prescaler register
* Input              : Adc12_clk: Sampling frequency in Hz.
* Return             : None.
*******************************************************************************/
void ADC12_PrescalerConfig(u32 Adc12_clk)
{
  /* Update the Prescaler Register */
  ADC12->CPR = (vu16) (RCCU_FrequencyValue(RCCU_PCLK)/(Adc12_clk*512*8));
}
Beispiel #7
0
/*******************************************************************************
* Function Name  : UART_BaudRateConfig
* Description    : This function configures the baud rate of the selected UART.
* Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2        : The baudrate value
* Output         : None
* Return         : None
*******************************************************************************/
void UART_BaudRateConfig(UART_TypeDef *UARTx, u32 BaudRate)
{
  UARTx->BR = (u16)(RCCU_FrequencyValue(RCCU_FCLK)/(16UL * BaudRate));
}