您好!
是否可以使用 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 的说明:
谢谢。
哈维尔