Si aumenta la frecuencia de reloj de su micro, entonces sí, tendrá que ajustar cualquier característica de su código que se base en que sea una frecuencia determinada. Esto puede ser muchas cosas o no, dependiendo de su diseño.
Cualquier comunicación asíncrona como USART, periféricos como ADC / DAC es una preocupación obvia aquí. SPI e I2C solo tendrán una frecuencia de reloj más alta, lo que puede o no ser deseado (o puede que no funcione si el bus está en el límite a la frecuencia original). Los tiempos de la interfaz de memoria dependen de una determinada velocidad de reloj (como el retardo). Usted menciona puede verse afectado), etc., etc.
Tienes la idea.
Para determinar lo que debe hacer, deberá examinar su código cuidadosamente. Dependiendo de cómo esté escrito, puede adaptarse fácilmente o no.
Por ejemplo, a menudo se usa una macro para calcular la proporción de divisor para un periférico, de modo que todo lo que se necesita cambiar es una # definición de la frecuencia de reloj. Si su código utiliza este tipo de técnica, entonces el ajuste será menos doloroso. Me imagino que las bibliotecas de Renasas lo harán, así que es de esperar que solo sea un caso de lectura de la documentación de la biblioteca.
Este es un ejemplo de algún código de configuración de UART (parte de la función de inicio USART para una biblioteca de periféricos ARM STM32 que estoy usando actualmente). Observe que el valor del registro BRR final se basa en la tasa de apbclock y el valor de USART_BaudRate (pasado en un estructura a la función de inicio) Esto significa que cualquier cambio en la frecuencia del reloj se maneja siempre que se actualice una definición global (que se usa en la función RCC_GetClocksFreq ()):
/*---------------------------- USART BRR Configuration -----------------------*/
/* Configure the USART Baud Rate -------------------------------------------*/
RCC_GetClocksFreq(&RCC_ClocksStatus);
if (usartxbase == USART1_BASE)
{
apbclock = RCC_ClocksStatus.PCLK2_Frequency;
}
else
{
apbclock = RCC_ClocksStatus.PCLK1_Frequency;
}
/* Determine the integer part */
if ((USARTx->CR1 & CR1_OVER8_Set) != 0)
{
/* Integer part computing in case Oversampling mode is 8 Samples */
integerdivider = ((25 * apbclock) / (2 * (USART_InitStruct->USART_BaudRate)));
}
else /* if ((USARTx->CR1 & CR1_OVER8_Set) == 0) */
{
/* Integer part computing in case Oversampling mode is 16 Samples */
integerdivider = ((25 * apbclock) / (4 * (USART_InitStruct->USART_BaudRate)));
}
tmpreg = (integerdivider / 100) << 4;
/* Determine the fractional part */
fractionaldivider = integerdivider - (100 * (tmpreg >> 4));
/* Implement the fractional part in the register */
if ((USARTx->CR1 & CR1_OVER8_Set) != 0)
{
tmpreg |= ((((fractionaldivider * 8) + 50) / 100)) & ((uint8_t)0x07);
}
else /* if ((USARTx->CR1 & CR1_OVER8_Set) == 0) */
{
tmpreg |= ((((fractionaldivider * 16) + 50) / 100)) & ((uint8_t)0x0F);
}
/* Write to USART BRR */
USARTx->BRR = (uint16_t)tmpreg;