您好!
是否可以使用 SYSCFG 配置 PLL 和 clkout 引脚? 我看不到使用 SYSCFG 1.17.0.3128时的情况、也 找不到中所述的 GEL 文件(用于此 UC)
如果没有、是否有任何我可以查看的 SDK/示例代码?
谢谢。
Javier。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
是否可以使用 SYSCFG 配置 PLL 和 clkout 引脚? 我看不到使用 SYSCFG 1.17.0.3128时的情况、也 找不到中所述的 GEL 文件(用于此 UC)
如果没有、是否有任何我可以查看的 SDK/示例代码?
谢谢。
Javier。
Javier、您好!
可以在以下位置找到包含用于配置上一篇文章中提到的 PLL 的函数的 GEL 文件:
"C:\ccs12##\ccs\ccs_base\emulation\gel\AM263x\AM263_PLL\*"
或
" \ccs12##\ccs\ccs_base\emulation\gel\AM263x\AM263_PLL\*"
在安装过程中、具体取决于您将 Code Composer Studio 保存在本地机器上的位置。
我没有找到明确的 CLKOUTx 示例、因此我将提出一个错误、确保将该错误添加到 SDK 中、并在平均时间内处理一个简短的测试示例。
此致、
扎卡里·弗莱诺
嗨、Javier、
我将包含一些示例 GEL 代码、可用作起点。
将此源代码保存到一个新的 AM263_CLKOUT_CFG.gel 文件中上述响应中提到的 GEL 目录、并将以下行与主 AM263x.gel 文件中的其他 GEL 文件调用一起添加: GEL_LoadGel ("$(GEL_file_dir)/AM263_PLL/AM263_CLKOUT_CFG.gel");
/**
* \file AM263_CLKOUT_CONFIG.gel
*
* \brief GEL File to configure CLKOUT0 for AM263x
*/
/* Copyright (c) 2024, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
/* Revision history:
* 02-15-2024 - Initial Creation
*/
// Register Definitions and Offsets
#define IOMUX_U_BASE (0x53100000U)
#define IOMUX_IO_CFG_KICK0 (0x00000298U)
#define IOMUX_IO_CFG_KICK1 (0x0000029CU)
#define IOMUX_CLKOUT0_CFG_REG (0x00000228U)
#define IOMUX_SDFM0_CLK0_CFG_REG (0x000001E8U)
#define MSS_TOP_RCM_U_BASE (0x53200000U)
#define MSS_TOP_RCM_LOCK0_KICK0 (0x00001008U)
#define MSS_TOP_RCM_LOCK0_KICK1 (0x0000100CU)
#define MSS_TOP_RCM_CLKOUT0_CLK_SRC_SEL (0x00000C00U)
#define MSS_TOP_RCM_CLKOUT1_CLK_SRC_SEL (0x00000C04U)
#define MSS_TOP_RCM_CLKOUT0_DIV_VAL (0x00000C08U)
#define MSS_TOP_RCM_CLKOUT1_DIV_VAL (0x00000C0CU)
#define MSS_TOP_RCM_CLKOUT0_CLK_GATE (0x00000C10U)
#define MSS_TOP_RCM_CLKOUT1_CLK_GATE (0x00000C14U)
#define MSS_TOP_RCM_CLKOUT0_CLK_STATUS (0x00000C18U)
#define MSS_TOP_RCM_CLKOUT1_CLK_STATUS (0x00000C1CU)
#define XTALCLK (0x000)
#define DPLL_CORE_HSDIV_CLKOUT0 (0x111)
#define DPLL_CORE_HSDIV_CLKOUT1 (0x222)
#define DPLL_PER_HSDIV_CLKOUT0 (0x333)
#define DPLL_PER_HSDIV_CLKOUT1 (0x444)
#define RCCLK10M (0x555)
#define RCCLK32K (0x666)
#define CPTS_GENF0 (0x777)
#define div1 (0x000)
#define div2 (0x111)
#define div3 (0x222)
#define div4 (0x333)
#define div5 (0x444)
#define div6 (0x555)
#define div7 (0x666)
#define div8 (0x777)
#define div9 (0x888)
#define div10 (0x999)
#define div11 (0xAAA)
#define div12 (0xBBB)
#define div13 (0xCCC)
#define div14 (0xDDD)
#define div15 (0xEEE)
#define div16 (0xFFF)
hotmenu Make_CLKOUT0_25MHz_XTALCLK_div1()
{
MSS_TOPRCM_unlock();
// Use CLK Source defines as the input source clock for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_CLK_SRC_SEL, XTALCLK);
GEL_TextOut("XTALCLK selected as CLK source for CLKOUT0\n");
// Write DIV_VAL as the clock divider value for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_DIV_VAL, div1);
GEL_TextOut("XTALCLK will be divided by 0 for 25MHz CLKOUT0\n");
}
hotmenu Make_CLKOUT0_10MHz_RCCLK10M_div1()
{
MSS_TOPRCM_unlock();
// Use CLK Source defines as the input source clock for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_CLK_SRC_SEL, RCCLK10M);
GEL_TextOut("RCCLK10M selected as CLK source for CLKOUT0\n");
// Write DIV_VAL as the clock divider value for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_DIV_VAL, div1);
GEL_TextOut("RCCLK10M will be divided by 1 for 10MHz CLKOUT0\n");
}
hotmenu Make_CLKOUT0_5MHz_RCCLK10M_div2()
{
MSS_TOPRCM_unlock();
// Use CLK Source defines as the input source clock for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_CLK_SRC_SEL, RCCLK10M);
GEL_TextOut("RCCLK10M selected as CLK source for CLKOUT0\n");
// Write DIV_VAL as the clock divider value for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_DIV_VAL, div1);
GEL_TextOut("RCCLK10M will be divided by 2 for 5MHz CLKOUT0\n");
}
hotmenu Make_CLKOUT0_2MHz_RCCLK10M_div5()
{
MSS_TOPRCM_unlock();
// Use CLK Source defines as the input source clock for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_CLK_SRC_SEL, RCCLK10M);
GEL_TextOut("RCCLK10M selected as CLK source for CLKOUT0\n");
// Write DIV_VAL as the clock divider value for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_DIV_VAL, div5);
GEL_TextOut("RCCLK10M will be divided by 5 for 2MHz CLKOUT0\n");
}
hotmenu Make_CLKOUT0_32kHz_RCCLK32_div1()
{
MSS_TOPRCM_unlock();
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_CLK_SRC_SEL, RCCLK32K);
GEL_TextOut("RCCLK32K selected as CLK source for CLKOUT0\n");
// Write DIV_VAL as the clock divider value for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_DIV_VAL, div1);
GEL_TextOut("RCCLK32K will be divided by 1 for 32kHz CLKOUT0\n");
}
hotmenu Make_CLKOUT0_16kHz_RCCLK32K_div2()
{
MSS_TOPRCM_unlock();
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_CLK_SRC_SEL, RCCLK10M);
GEL_TextOut("RCCLK32K selected as CLK source for CLKOUT0\n");
// Write DIV_VAL as the clock divider value for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_DIV_VAL, div2);
GEL_TextOut("RCCLK32K will be divided by 2 for 16kHz CLKOUT0\n");
}
hotmenu Make_CLKOUT0_8kHz_RCCLK32K_div4()
{
MSS_TOPRCM_unlock();
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_CLK_SRC_SEL, RCCLK32K);
GEL_TextOut("RCCLK32K selected as CLK source for CLKOUT0 \n");
// Write DIV_VAL as the clock divider value for CLKOUT0
Write_MMR(MSS_TOP_RCM_U_BASE+ MSS_TOP_RCM_CLKOUT0_DIV_VAL, div4);
GEL_TextOut("RCCLK32K will be divided by 4 for 8kHz CLKOUT0\n");
}
希望这对您有所帮助!
此致、
扎卡里·弗莱诺
只是为了确认 Zachary、它对我起了作用。 唯一需要做的是、我必须禁用 SYSCFG 才能手动更改 CLKOUT1引脚的 PIN_MODE。 此链接包含禁用 SYSCFG 的说明:
谢谢。
哈维尔