This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Can't reach 96MHz frequency with MCBSTR9

Hello,

I've been working with a board MCBSTR9 and I thought I had correctly configured the PLL so that I was working at the maximum frequency.

However, revising the configuration in the startup file provided by Keil, I've seen that the following values were set in the PLL configuration:

P = 3; N = 192; M = 25

, which, according to all the manuals I've seen, produces an fPLL frequency of 48MHz (the oscillator's frequency is 25MHz).

So, I changed the value of P to 2, to theorically get a frequency of 96MHz. However, the board don't even start running.

I changed the parameters to several values which should produce a 96MHz output in the PLL, but nothing worked. Restoring a frequency of 48MHz works fine.

I can't see where's my mistake. What am I doing wrong?

Parents
  • I don't work with your processor, so it is a bit hard to help.

    But have you made sure that you don't have any peripherials that gets too high clock frequency when you step up the PLL frequency?

    Have you checked any errata, so you don't have a development board with an early version of the chip?

Reply
  • I don't work with your processor, so it is a bit hard to help.

    But have you made sure that you don't have any peripherials that gets too high clock frequency when you step up the PLL frequency?

    Have you checked any errata, so you don't have a development board with an early version of the chip?

Children
  • The board is practically brand-new, so I don't think it may be obsolete.

    Either way, I have made an "experiment". I set up one of the timers using the "Pulse width modulation mode". Using this mode, one can use a comparation register so that an interruption is generated any time the value of the counter matches the value in the register. Additionally, the counter is reset after each match. The SRT9 Reference Manual gives the following formula to calculate a period of time:

    CompValue = (t * freq/(DIV + 1)) - 5

    freq is the clock frequency, which I am trying to figure out.
    DIV is a frequency divider to adjust the timer speed. Its size is 1 byte.
    CompValue is the value of the comparation register (2 bytes)
    t is the time interval

    Assuming the frequency is 48MHz, I chose a value of 0xFF for DIV (which means we divide the frequency by 256), and 46880 for CompValue. This should generate an interruption every quarter of second. With a counter in the service routine, I print the number of seconds on the screen every four times the routine is called.

    The problem is that "my clock" goes too fast, which means that the frequency is not 48MHz, but higher.

    I still don't know where's the mistake...