Hello, Maybe somebody from Keil can explain this; I still haven't tried it on the device itself, but it would be refreshing to understand the actual requirements. Trying to run a STR9 at 96 MHz, I stubled upon the following guildelines:
KEIL (see http://www.keil.com/support/docs/3306.htm) When you set the PLL post-divider value (PLL_PDIV) to 2 (hence: in order to run at 96 MHz), you must change the Clock Control Register (SCU_CLKCNTR) to the following: * EMIRATIO: External Memory Interface Ratio fBCLK=HCLK/2 *
FMISEL: Flash Memory Interface Clock Divider FMICLK=RCLK/2
ST (see www.st.com/.../13563.pdf) The Flash memory interface clock (FMICLK) should have the same frequency as the RCLK clock (96 MHz)
this means no FMICLK dividers used
. As a result since Flash has a Sequential Burst read up to 96 MHz, we reduce execution time from there.
Robert, Thanks a lot for your reply. I have read the errata sheet for the STR9 and I figured out what went wrong. But, I still have a question related to this issue: please see http://www.keil.com/support/docs/3215.htm. The statement "The JTAG on the STR9 device can be blocked by user code with invalid values for the register SCU_CLKCNTR (AHBDIV, RCLKDIV, MCLKSEL)" baffles me. Could you give an example for such values? I tried to run my device at 48 MHz with PCLK ticking at 12 MHz (and even 24 MHz) which resulted in the device becoming inaccessable and required the recovery procedure that is specified in the link. MCLKSEL was set to PLL, APBDIV to 1 (i.e. RCLK/2), RCLKDIV was 0 (=MSTRCLK) and FMISEL was 0. I had to set FMISEL to make this work. But why? What "invalid" settings does the link refer to (I didn't find these in the documentation)? Can the simulator warn of such settings?
Thanks in advance
I have experienced blocked JTAG in some user codes I've received and they all configured the clock improperly (invalid values in registers or clocks not in specified boundaries).
I haven't investigated into details and I don't remember the exact values anymore which caused the problems. I just know that such HW problem exist and provided a solution for JTAG recovery (maybe newer silicon revisions have less such problems).
Also I haven't seen this documented by ST however it happens on HW.
Thanks a lot for your assistence.