英飞凌
直播中

李鑫

8年用户 1418经验值
私信 关注

CYT3BB7CES在时钟频率为250MHz时不运行是怎么回事?

我使用 SDL 7.7 运行芯片 CYT3BB7CEBQ0AESGST。
我使用 SDL 的启动文件夹启动 CM0 芯片。
配置
system_tviibh4m_cm0plus.c文件中的系统初始时钟(ECO=16MHz 时的示例)。
我使用外部晶体 8MHz(ECO =8MHz)。 因此,我更改了CY_SYSTEM_PLLx_CONFIG _REFDIV、CY_SYSTEM_PLLx_CONFIG_ FEEDBACKDIV、CY_SYSTEM_PLLx_CCONFIG_OUTDIV。
以获得PLL0 = 250 MHz
#define CY_SYSTEM_PLL0_CONFIG_REFDIV (2UL)
#define CY_SYSTEM_PLL0_CONFIG_FEEDBACKDIV (125UL)
#define CY_SYSTEM_PLL0_CONFIG_OUTDIV (4UL)
PLL1 = 196607999.92Hz
#define CY_SYSTEM_PLL1_CONFIG_REFDIV (1UL)
#define CY_SYSTEM_PLL1_CONFIG_FB_INT (98UL)
#define CY_SYSTEM_PLL1_CONFIG_FB_FRAC (5100273UL)
#define CY_SYSTEM_PLL1_CONFIG_OUTDIV (4UL)
PLL2 = 160MHz
#define CY_SYSTEM_PLL2_CONFIG_REFDIV (1UL)
#define CY_SYSTEM_PLL2_CONFIG_FEEDBACKDIV (40UL)
#define CY_SYSTEM_PLL2_CONFIG_OUTDIV (4UL)
PLL3 = 80MHz
#define CY_SYSTEM_PLL3_CONFIG_REFDIV (2UL)
#define CY_SYSTEM_PLL3_CONFIG_FEEDBACKDIV (80UL)
#define CY_SYSTEM_PLL3_CONFIG_OUTDIV (4UL)
时钟
/*** 每个 clk_hf 的设置 ***/
    结构{cy_en_hf_clk_dividers_t targetDiv; cy_en_hf_clk_sources_t source;} clkHfSetting[srss_num_hfroot] =
{
        { .targetDiv = CY_SYSCLK_HFCLK_NO_DIVIDE,   .source = CY_SYSCLK_HFCLK_IN_CLKPATH3 /* PLL2: PLL200#0 */ }, // clk_hf0 的设置
        { .targetDiv = CY_SYSCLK_HFCLK_NO_DIVIDE,   .source = CY_SYSCLK_HFCLK_IN_CLKPATH1 /* PLL0: PLL400#0 */ }, // clk_hf1 的设置
        { .targetDiv = CY_SYSCLK_HFCLK_NO_DIVIDE,   .source = CY_SYSCLK_HFCLK_IN_CLKPATH4 /* PLL3: PLL200#1 */ }, // clk_hf2 的设置
        { .targetDiv = CY_SYSCLK_HFCLK_DIVIDE_BY_2, .source = CY_SYSCLK_HFCLK_IN_CLKPATH3 /* PLL2: PLL200#0 */ }, // clk_hf3 的设置
        { .targetDiv = CY_SYSCLK_HFCLK_DIVIDE_BY_4, .source = CY_SYSCLK_HFCLK_IN_CLKPATH2 /* PLL3: PLL400#1 */ }, // clk_hf4 的设置
        { .targetDiv = CY_SYSCLK_HFCLK_NO_DIVIDE,   .source = CY_SYSCLK_HFCLK_IN_CLKPATH2 /* PLL1: PLL400#1 */ }, // clk_hf5 的设置
        { .targetDiv = CY_SYSCLK_HFCLK_NO_DIVIDE,   .source = CY_SYSCLK_HFCLK_IN_CLKPATH3 /* PLL3: PLL200#1 */ }, // clk_hf6 的设置
        { .targetDiv = CY_SYSCLK_HFCLK_NO_DIVIDE,   .source = CY_SYSCLK_HFCLK_IN_CLKPATH5 /* No PLL/FLL */     }, // clk_hf7 的设置
};


问题:
我使用 SDL API:
Cy_SysClk_GetPllOutputFrequency:
-> PLL400#0:250MHz
-> PLL400#1:196.60799992 MHz
-> PLL200#0:160MHz
-> PLL200#1:80MHz
Cy_SysClk_GetFast0Frequency:
-> 250MHz
Cy_SysClk_GetClkMemFrequency:
-> 160MHz
Cy_SysClk_GetClkSlowFrequency
-> 80MHz

似乎没有问题。 但当我运行 CM0 时,它将复位,无法跳转到 CM7_0。
如果将所有 PLL 输出时钟减半 -> CM0 和 CM7_0 正常运行(但时钟比所需时钟少 1/2)
如果使用 16MHz 外部晶振和默认文件system_tviibh4m_cm0plus.c ,一切正常(CM0 和 CM7_0 运行正常)。

问题:
1我认为,根据数据表(Infineon-TRAVEO_T2G_CYT3BB_4BB-DataSheet-v09_00-EN.pdf)的限制,refdiv、feedbackdiv 和 output 均可正常工作。
但为什么芯片不能按预期运行呢?
2.我是否需要编辑其他值,如 ROM/RAM 等待状态和闪存等待周期?
如果是,那么数值应该是多少?


回帖(1)

你又知道了

2024-5-27 17:44:56
CYT3BB7CES 在时钟频率为 250MHz 时不运行的原因可能有以下几点:

1. **PLL 配置错误**:您提供的 PLL 配置参数可能不正确。根据您提供的信息,您希望得到 250MHz 的时钟频率。但是,根据您提供的参数,PLL0 的输出频率计算如下:

   ```
   PLL0 输出频率 = (8MHz * 125) / (2 * 4) = 250MHz
   ```

   这个计算是正确的,但是请确保您在代码中正确设置了这些参数。

2. **PLL 锁定问题**:在某些情况下,PLL 可能无法锁定所需的频率。这可能是由于外部晶体的质量问题或者 PLL 参数设置不正确。您可以检查 PLL 锁定状态,确保它在启动时成功锁定。

3. **时钟分配问题**:确保您正确地将 PLL 输出分配给了 CM0 核心。检查您的时钟分配设置,确保 CM0 核心使用的是 PLL0 的输出频率。

4. **电源问题**:确保您的芯片电源稳定且在规定的范围内。不稳定的电源可能会影响芯片的正常运行。

5. **代码问题**:检查您的代码,确保没有逻辑错误或配置错误。例如,确保您正确地初始化了芯片和时钟系统。

6. **硬件问题**:如果以上步骤都无法解决问题,可能是硬件本身存在问题。您可以尝试更换芯片或与制造商联系寻求技术支持。

为了解决这个问题,您可以尝试以下步骤:

1. 重新检查您的 PLL 配置参数,确保它们正确设置。
2. 检查 PLL 锁定状态,确保在启动时成功锁定。
3. 检查时钟分配设置,确保 CM0 核心使用的是 PLL0 的输出频率。
4. 检查电源稳定性和芯片电源范围。
5. 仔细检查您的代码,确保没有逻辑错误或配置错误。
6. 如果问题仍然存在,尝试更换芯片或联系制造商寻求技术支持。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分