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.

[参考译文] CCS/TMS320C6748:初始化 AIC3106时卡住

Guru**** 2553260 points
Other Parts Discussed in Thread: TMS320C6748

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/621835/ccs-tms320c6748-stuck-initializing-aic3106

器件型号:TMS320C6748

工具/软件:Code Composer Studio

我刚刚开始使用 Code Composer 和 TMS320C6748 LCDK、并使用书籍"Real Time Digital Signal Processing from Matlab to C Second Edition"来帮助您开始配置 LCDK 以编写 C 代码。

我正在尝试使用他们提供的一些代码来帮助创建正弦波查找表并通过线输出结果。  我有一些问题,但到目前为止,我觉得我对需要做的事情有一个很好的了解。  但是、我的代码在运行、但在尝试初始化 AIC3106音频编解码器时会卡住。

// Welch、Wright 和 Morrow、
//实时数字信号处理、2017

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//文件名:LCDK_Support_DSP.c
//
概述:支持 OMAP-L138基本初始化的函数
// 硬件资源。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


#include "DSP_Config.h"
#include "AIC3106.h"


静态浮点 SampleFreq = 0.0F;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//用途:返回
由//确定的当前采样频率 INIT_OMAPL138和 SetSampleRate_AIC3106函数。
//
//输入: 无
//
//返回:浮点格式的采样频率
//
//调用: 无
//
//备注: 无
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
float GetSampleFreq()
{
返回 SampleFreq;
}//////////////////////////////////////////////////////////////////////////////////////////////

////////////////
//用途:初始化 OMAP-L138 DSP 和编解码器
//
//输入: 无
//
//返回:无
//
//调用: init_interrupts、Init_I2C、Init_AIC3106、Init_McASP0、EnableInterrupts
//
//注意: SampleRateSeting 的定义见 OMAPL138_Config.h
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void DSP_Init()
{
Init_interrupts ();
Init_I2C ();
if (!Init_AIC3106 (SampleRateSeting))){
while (1);//编解码器初始化失败时停止
}
Init_McASP0 ();
EnableInterrupts ();
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//用途:初始化 OMAP-L138 DSP 和编解码器以供 EDMA 使用
//
输入: 无
//
//返回:无
//
//调用: init_interrupts_EDMA、Init_I2C、Init_AIC3106、Init_McASP0、EnableInterrupts_EDMA
//
注意: SampleRateSeting 的定义见 OMAPL138_Config.h
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void DSP_Init_EDMA ()
{
Init_interrupts_EDMA ();
Init_I2C ();
if (!Init_AIC3106 (SampleRateSetting))){
while (1);//因编解码器初始化失败而停止

我还收到错误"File boards/lcdkomapl138.xml does not exist. 已包含在文件 C:/Users/admin/workspace_v7/Sine 波形发生器/LCDK_TargetConfiguration.ccxml LCDK_TargetConfiguration.ccxml /Sine Wave Generator line 0 problem 中。  但是、我似乎无法解决此错误。

我已经检查了 S1上的开关、它们设置为。

S1=off

S2=开

S3=开

S4=开

S5=off

S6 =关闭

S7=关闭

S8=开

我还附上了我的工作区的图片。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已通知软件团队。 反馈将发布在此处。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否指示您是否使用 GEL 文件初始化器件时钟。 这不是 TI 提供的代码、因此我们很难提供支持。

    请确保进入 AIC 的 BCLK 显示时钟被启用并单步执行代码。 AIC 编解码器由 SOC 使用 I2C 接口和 I2C 地址进行配置。 确保 I2C 的引脚多路复用器设置正确、并且您使用正确的 I2C 地址与 AIC 编解码器芯片通信。

    我们在 Processor SDK RTOS 和 Starterware 中提供了示例代码、这些代码展示了通过 AIC3106进行音频回路的工作方式、因此您可以尝试使用该代码来确保您的硬件没有问题。

    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在下面提供了 GEL 文件。  我在文件中没有看到任何提到 BCLK 或 AIC 的情况。

    我也尝试了 Starterware、并尝试实施 MCASP 音频环回示例、我通过耳机只需要一个小弹出窗口、其他什么都没有。  我所做的就是下载该文件并将其导入到 Code Composer 中、构建该文件并运行它。  我确实收到了几个警告、但没有错误。

    #define PLL0_BASE 0x01C11000 /*SYSTEM PLL 基址*/
    #define PLL0_PID *(unsigned int*)(PLL0_BASE + 0x00) /*PID*/
    #define PLL0_RSTYPE *(unsigned int*)(PLL0_BASE + 0xE4) /*复位类型状态寄存器*/
    #define PLL0_PLLCTL *(无符号 int*)(PLL0_BASE + 0x100)/* PLL 控制寄存器*/
    #define PLL0_OCSEL *(unsigned int*)(PLL0_BASE + 0x104)/* OBSCLK 选择寄存器*/
    #define PLL0_SECCTL *(unsigned int*)(PLL0_BASE + 0x108)/* PLL 次级控制寄存器*/
    #define PLL0_PLLM *(unsigned int*)(PLL0_BASE + 0x110)/* PLL 乘法器*/
    #define PLL0_PREDIV *(unsigned int*)(PLL0_BASE + 0x114)/*前置分频器*/
    #define PLL0_PLLDIV1 *(unsigned int*
    )(PLL0_BASE + 0x118)/
    
    无
    符号分频器-1*/#define PLL0_PLIV2 *(PLL0_base + 0x11C*)*(PLL0_CLDIV*+#define +#define PLLDIV*+#define +#PL0*(PLLDIV*)+#define L124*/#define LDIV*(PL0*)+#define LDIV*(PL0*)+#PLL124*+#PLL124*/PLLDIV*)+#define LDIV*(PL0*+#define L124*/PL0*(PLLDIV*) /*分频器*/
    #define PLL0_BPDIV *(unsigned int*)(PLL0_BASE + 0x12C)/*旁路分频器*/
    #define PLL0_WAKEUP *(unsigned int*)(PLL0_BASE + 0x130)/*唤醒寄存器*/
    #define PLL0_PLLCMD *(unsigned int*)(PLL0_BASE + 0x138)/*命令注册*/
    #define PLL0_PLLSTAT *(unsigned int*)(PLL0_BASE + 0x13C)/*状态注册*/
    #define PLL0_ALNCTL *(unsigned int*)(PLL0_BASE + 0x140)/*时钟对齐控制寄存器*/
    #define PLL0_DCHANGE *(unsigned int*)(PLL0_BASE + 0x144)/* PLLDIV 比率填充状态*/
    #define PLL0_CKEN *(无符号 int*)(PLL0_BASE + 0x148)/*时钟使能寄存器*/
    #define PLL0_CKSTAT *(unsigned int*)(PLL0_BASE + 0x14C)/*时钟状态寄存器*/
    #define PLL0_SYSTAT *(无符号整型*)(PLL0_BASE + 0x150)/* SYSCLK 状态寄存器*/
    #define PLL0_PLLDIV4 *(无符号整型*)(PLL0_BASE + 0x160)/*无
    
    符号整型4*/#define PLL0_PLLDIV5 *(PLL0_BASE + 0x164*)
    
    *(PLLDIV0*+ PLLDIV0*+ PLLDIV0*)+ PLLDIV0*(PLL0*+ PLLDIV0*+ PLL168*+ PLLDIV0*)+ PLLDIV0*(无符号整型)+ PLL168*(PLL0*+ PLLDIV0*+ PLL0*)+ PLLDIV0*(无符号整型)+ PLLDIV0*(PLL168*)+ PL (PLL0_BASE + 0x170)/*分频器8*/
    #define PLL0_PLLDIV9 *(unsigned int*)(PLL0_BASE + 0x174)/*分频器9*/
    #define PLL0_PLLDIV10 *(
    
    unsigned int*)(PLL0_base + 0x178)/分频器10*/
    #define PLLDIV12*(PLL12*+ PLLDIV12*)#define 12*(PLLDIV0*+ PLL12*)#define 12*(PLLDIV0*+ PLL12*) /
    
    
    无符号除法器13*/#define PLL0_PLLDIV14 *(unsigned int*)(PLL0_BASE + 0x188)/*除法器14*/#define PLL0_PLLDIV15 *(unsigned int*)(PLL0_BASE + 0x18C)/*除法器15*/#define PLL0_PLLDIV15 *(PLL190_PLL190*
    
    + PLL16*)+ PLLIVL1 (#define 16)*+ PLL16*+ CLINT_BASE (无符号除法器) 0x01E1A000 /*SYSTEM PLL1基址*/
    #define PLL1_PID *(unsigned int*)(PLL1_base + 0x00) /*PID*/
    #define PLL1_RSTYPE *(unsigned int*)(PLL1_base + 0xE4) /*复位类型状态寄存器*/
    #define PLL1_PLLCTL *(unsigned int*)(PLL1_base + 0x100)/* PLL 控制寄存器*/
    #define PLL1_OCSEL *(unsigned int*)(PLL1_base + 0x104)/* OBSCLK 选择寄存器*/
    #define PLL1_SECCTL *(unsigned int*)(PLL1_base + 0x108)/* PLL 次级控制寄存器*/
    #define PLL1_PLLM *(unsigned int*)(PLL1_base + 0x110)/* PLL 乘法器*/
    #define PLL1_PREDIV *(无符号 int*)(PLL1_base + 0x114)/*前置分频器*/
    #define PLL1_PLLDIV1 *(无符号 int*)(PLL1_base + 0x118)/*分频器-1*/
    #define PLL1_PLLDIV2 *(无
    
    
    符号 IN*)(PLL1_BASE + 0x11C)/*(PLL1_PLL1*/#define DIV*+#define DIV*(PLL1*)+#PLL1*+#define DIV*(PLL1*)+#PLL1*+#PLL1*(PLL1*+#define DIV*+#PLL1*)+#PLL1*(PLL1*)+#define DIV*(PLL124*+#PLL1*(PLL1*)+# /*分频器*/
    #define PLL1_BPDIV *(unsigned int*)(PLL1_base + 0x12C)/*旁路分频器*/
    #define PLL1_WAKEUP *(unsigned int*)(PLL1_base + 0x130)/*唤醒寄存器*/
    #define PLL1_PLLCMD *(unsigned int*)(PLL1_base + 0x138)/*命令注册*/
    #define PLL1_PLLSTAT *(unsigned int*)(PLL1_base + 0x13C)/*状态注册*/
    #define PLL1_ALNCTL *(unsigned int*)(PLL1_base + 0x140)/*时钟对齐控制寄存器*/
    #define PLL1_DCHANGE *(unsigned int*)(PLL1_base + 0x144)/* PLLDIV 比率填充状态*/
    #define PLL1_CKEN *(unsigned int*)(PLL1_base + 0x148)/*时钟启用寄存器*/
    #define PLL1_CKSTAT *(unsigned int*)(PLL1_base + 0x14C)/*时钟状态寄存器*/
    #define PLL1_SYSTAT *(unsigned int*)(PLL1_base + 0x150)/* SYSCLK 状态寄存器*/
    #define PLL1_PLLDIV4 *(unsigned int*)(PLL1_base + 0x160)/#define PLL1_PLIV5
    *(unsigned int*)(PLL1_base + 0x164)/PLL1*#define DIV*
    
    (PLL1*6 + PLLDIV*+#define + PLLDIV6*)*(PLLDIV6*)*(PLLDIV*+#define + PLL168*)
    *(PLLDIV*+ PLL168*)*(PLLDIV*)*(PLL106*+ PLLDIV*+ PLLDIV6*+ PLLDIV*) (PLL1_BASE + 0x170)/*分频器8*/
    #define PLL1_PLLDIV9 *(unsigned int*)(PLL1_BASE + 0x174)/*分频器9*/
    #define PLL1_PLLDIV10 *(unsigned int*)(PLL1_BASE + 0x178)/*无
    
    
    符号分频器10*/#define PLL1_PLL1*(PLLDIV12*)+ PLL12*(PLL12*+ PLLDIV12*)+ PLL12*(PLL12*+ PLLDIV*+ PLL12*+ PLLDIV*+ PLL12*+ PLL12*) /
    
    
    
    
    分频器13*/#define PLL1_PLLDIV14 *(unsigned int*)(PLL1_base + 0x188)/*分频器14*/#define PLL1_PLLDIV15 *(unsigned int*)(PLL1_base + 0x18C)/#define PLL1_PLL1_PLLDIV16 *(PLL1_BASE*)/#define CLL1_RELATED 寄存器15*/#define PLL1_SPCST_CLUSD*/#define CLUSDIDESD*(PLL0*)/#define CL
    0x01C10000
    #define PSC1_base 0x01E27000
    
    #define PSC0_MDCTL (PSC0_BASE+0xA00)
    #define PSC0_mdstat (PSC0_BASE+0x800)
    #define PSC0_PTCMD *(unsigned int*)(PSC0_BASE + 0x120)
    #define PSC0_PTSTAT *(unsigned int*)(PSC0_BASE + 0x128)
    
    #define PSC1_MDCTL (PSC1_BASE+0xA00)
    #define PSC1_mdstat (PSC1_BASE+0x800)
    #define PSC1_PTCMD *(unsigned int*)(PSC1_base + 0x120)
    #define PSC1_PTSTAT *(unsigned int*)(PSC1_base + 0x128)
    
    #define PSC_TIMEOUT 200 //此值可由用户
    
    #define LPSC EDMA_cC0
    #define LPSC EDMA_TC0 1
    #define LPSC EDMA_TC1 2
    #define LPSC EMIFA 优化 3 /*PSC0*/
    #define LPSC_SPI0 4 /*PSC0*/
    #define LPSC_MMCSD0 5 /*PSC0*/
    #define LPSC_ARM_AINTC 6
    #define LPSC_ARM_RAMROM 7 /*PSC0*/
    // LPSC #8未使用
    #define LPSC_UART0 9 /*PSC0*/
    #define LPSC_SCR0 10
    #define LPSC_SCR1 11
    #define LPSC_SCR2 12
    // LPSC #13未使用
    #define LPSC ARM 14 /*PSC0*/
    #define LPSC_DSP 15 /*PSC0*/
    
    #define LPSC_EDMA_CC1 0
    #define LPSC_USB20 1 /*PSC1*/
    #define LPSC_USB11 2 /*PSC1*/
    #define LPSC_GPIO 3 /*PSC1*/
    #define LPSC_UHPI 4 /*PSC1*/
    #define LPSC_EMAC 5 /*PSC1*/
    #define LPSC_DDR 6 /*PSC1*/
    #define LPSC_McASP0 7 /*PSC1*/
    #define LPSC_SATA 8 /*PSC1*/
    #define LPSC_VPIF 9 /*PSC1*/
    #define LPSC_SPI1 10 /*PSC1*/
    #define LPSC_I2C1 11 /*PSC1*/
    #define LPSC_UART1 12 /*PSC1*/
    #define LPSC_UART2 13 /*PSC1*/
    #define LPSC_MCBSP0 14 /*PSC1*/
    #define LPSC_MCBSP1 15 /*PSC1*/
    #define LPSC_LCDC 16 /*PSC1*/
    #define LPSC_ePWM 17 /*PSC1*/
    #define LPSC_MMCSD1 18
    #define LPSC UPP 19
    #define LPSC_ECAP 20
    #define LPSC_EDMA_TC2 21
    // LPSC #22-23未使用
    #define LPSC_SCR_F0 24
    #define LPSC_SCR_F1 25
    #define LPSC_SCR_F2 26
    #define LPSC_SCR_F6 27
    #define LPSC_SCR_F7 28
    #define LPSC_SCR_F8 29
    #define LPSC_BR_F7 30
    #define LPSC_SHARD_RAM 31
    
    /*DDR MMR Declaration */
    #define VTPIO_CTL *(无符号 int*)(0x01E2C000) // VTPIO_CTL 寄存
    器#define EMIFDDR_SDRAM_CFG 0xB0000000
    #define EMIFDDR_REVID *(无符号 int*)(EMIFDDR_SDRAM_CFG + 0x00) //EMIF 模块 ID 和修订版本寄存
    器#define EMIFDDR_SDRSTAT *(unsigned int*)(EMIFDDR_SDRAM_CFG + 0x04) //SDRAM 状态寄存
    器#define EMIFDDR_SDCR *(无符号 int*)(EMIFDDR_SDRAM_CFG + 0x08) //SDRAM 组配置寄存
    器#define EMIFDDR_SDRCR *(unsigned int*)(EMIFDDR_SDRAM_CFG + 0x0C) //SDRAM 刷新控制寄存
    器#define EMIFDDR_SDTIMR1 *(无符号 int*)(EMIFDDR_SDRAM_CFG + 0x10) //SDRAM 时序寄存器1
    #define EMIFDDR_SDTIMR2 *(unsigned int*)(EMIFDDR_SDRAM_CFG + 0x14) //SDRAM 时序寄存器2
    #define EMIFDDR_SDCR2 *(无符号 int*)(EMIFDDR_SDRAM_CFG + 0x1C) //SDRAM 配置寄存器2
    #define EMIFDDR_PBBPR *(无符号 int*)(EMIFDDR_SDRAM_CFG + 0x20) //VBUSM 突发优先级寄存
    器#define EMIFDDR_VBUSMCFG1 *(无符号 int*)(EMIFDDR_SDRAM_CFG + 0x28) //VBUSM 配置 Value1寄存
    器#define EMIFDDR_VBUSMCFG2 *(无符号 int*)(EMIFDDR_SDRAM_CFG + 0x2C) //VBUSM 配置 Value2寄存器
    #define EMIFDDR_IRR *(unsigned int*)(EMIFDDR_SDRAM_CFG + 0xC0) //中断原始寄存
    器#define EMIFDDR_IMR *(unsigned int*)(EMIFDDR_SDRAM_CFG + 0xC4) //中断屏蔽寄存器
    #define EMIFDDR_IMSR *(无符号 int*)(EMIFDDR_SDRAM_CFG + 0xC8) //中断屏蔽设置寄存
    器#define EMIFDDR_IMCR *(unsigned int*)(EMIFDDR_SDRAM_CFG + 0xCC) //中断屏蔽清除寄存器
    #define DDRPHYREV *(unsigned int*)(EMIFDDR_SDRAM_CFG + 0xE0) //DDR PHY ID 和修订版寄存器
    #define DRPYC1R *(unsigned int*)(EMIFDDR_SDRAM_CFG + 0xE4) //DDR PHY 控制1寄存器
    
    #define DDR2 0 //不要更改此值
    #define mDDR 1 //不要更改此值
    #define VTP 超时200 //用户
    #define DDR_DEBUG 0可以优化此值 //将其设置为"1"以使用更多时序可宽延
    
    时间#define EMIFDDR_BASE_ADDR 对 DDR 进行编程 0xC0000000
    #define EMIFA_BASE_ADDR 0x40000000
    #define EMIFA_CS2_base_ADDR 0x60000000
    #define EMIFA_CS3_BASE_ADDR 0x62000000
    #define EMIFA_CS4_BASE_ADDR 0x64000000
    #define EMIFA_CS5_base_ADDR 0x66000000
    
    /* EMIF2.5 MMR 声明*/
    #define EMIFA 0x68000000
    
    #define EMIFA_AWAITCFG *(unsigned int*)(EMIFA + 0x04)
    #define EMIFA_SDCFG *(无符号 int*)(EMIFA + 0x08)
    #define EMIFA_SDREF *(unsigned int*)(EMIFA + 0x0C)
    #define EMIFA_ACFG2 *(unsigned int*)(EMIFA + 0x10)//异 步 Bank1配置寄存
    器#define EMIFA_ACFG3 *(unsigned int*)(EMIFA + 0x14)//异 步 Bank2配置寄存
    器#define EMIFA_ACFG4 *(无符号 int*)(EMIFA + 0x18)//异 步 Bank3配置寄存
    器#define EMIFA_ACFG5 *(无符号 int*)(EMIFA + 0x1C)//异 步 Bank4配置寄存
    器#define EMIFA_SDTIM *(无符号 int*)(EMIFA + 0x20)//SDRAM 时序寄存
    器#define EMIFA_SRPD *(无符号 int*)(EMIFA + 0x3C)
    #define EMIFA_NANDFCR *(unsigned int*)(EMIFA + 0x60)
    
    /* GPIO MMR*/
    #define GPIO_REG_base (0x01E26000)
    #define GPIO_Bank_OFFSET (0x28)
    #define GPIO_DAT_OFFSET (0x04)
    #define GPIO_SET_OFFSET (0x08)
    #define GPIO_CLR_OFFSET (0x0C)
    #define GPIO_BINTEN *(unsigned int*)(GPIO_REG_base + 0x08)
    #define GPIO_BANK01_BASE (GPIO_REG_BASE + 0x10)
    #define GPIO_BANK23_BASE (GPIO_BANK01_BASE + GPIO_Bank_OFFSET)
    #define GPIO_BANK45_BASE (GPIO_BANK23_BASE + GPIO_Bank_OFFSET)
    #define GPIO_BANK67_BASE (GPIO_BANK45_BASE + GPIO_Bank_OFFSET)
    #define GPIO_BANK8_BASE (GPIO_BANK67_BASE + GPIO_Bank_OFFSET)
    #define GPIO_BANK23_DIR *(unsigned int*)(GPIO_BANK23_BASE)
    #define GPIO_BANK23_DAT *(unsigned int*)(GPIO_BANK23_BASE + GPIO_DAT_OFFSET)
    #define GPIO_BANK23_SET *(unsigned int*)(GPIO_BANK23_BASE + GPIO_SET_OFFSET)
    #define GPIO_BANK23_CLR *(unsigned int*)(GPIO_BANK23_BASE + GPIO_CLR_OFFSET)
    
    /*系统 MMR 声明*/
    #define SYS_base 0x01C14000
    #define HOST0CFG *(unsigned int*)(SYS_base + 0x040)//arm HOST0CFG
    #define KICK0R *(unsigned int*)(SYS_base + 0x038)
    #define KICK1R *(unsigned int*)(SYS_base + 0x03c)
    #define PINMUX0 *(unsigned int*)(SYS_base + 0x120)//PINMUX0
    #define PINMUX1 *(unsigned int*)(SYS_base + 0x124)//PINMUX1
    #define PINMUX2 *(unsigned int*)(SYS_base + 0x128)//PINMUX2
    #define PINMUX3 *(unsigned int*)(SYS_base + 0x12C)//PINMUX3
    #define PINMUX4 *(unsigned int*)(SYS_base + 0x130)//PINMUX4
    #define PINMUX5 *(unsigned int*)(SYS_base + 0x134)//PINMUX5
    #define PINMUX6 *(unsigned int*)(SYS_base + 0x138)//PINMUX6
    #define PINMUX7 *(unsigned int*)(SYS_base + 0x13C)//PINMUX7
    #define PINMUX8 *(unsigned int*)(SYS_base + 0x140)//PINMUX8
    #define PINMUX9 *(unsigned int*)(SYS_base + 0x144)//PINMUX9
    #define PINMUX10 *(unsigned int*)(SYS_base + 0x148)//PINMUX10
    #define PINMUX11 *(unsigned int*)(SYS_base + 0x14C)//PINMUX11
    #define PINMUX12 *(unsigned int*)(SYS_base + 0x150)//PINMUX12
    #define PINMUX13 *(unsigned int*)(SYS_base + 0x154)//PINMUX13
    #define PINMUX14 *(unsigned int*)(SYS_base + 0x158)//PINMUX14
    #define PINMUX15 *(unsigned int*)(SYS_base + 0x15C)//PINMUX15
    #define PINMUX16 *(unsigned int*)(SYS_base + 0x160)//PINMUX16
    #define PINMUX17 *(unsigned int*)(SYS_base + 0x164)//PINMUX17
    #define PINMUX18 *(unsigned int*)(SYS_base + 0x168)//PINMUX18
    #define PINMUX19 *(unsigned int*)(SYS_base + 0x16C)//PINMUX19
    #define CFGCHIP0 *(unsigned int*)(SYS_base + 0x17C)
    #define CFGCHIP2 *(unsigned int*)(SYS_base + 0x184)
    #define CFGCHIP3 *(unsigned int*)(SYS_base + 0x188)
    #define PD0 0 /*Power Domain-0*/
    #define PD1 1 /*电源域-1*/
    
    #define PLLEN_MUX_SWITCH 4
    #define PLL_LOCK_TIME_CNT 2400
    #define PLL_稳定化 时间2000
    #define PLL_RESET_TIME_CNT 200
    
    OnTargetConnect()
    {
    GEL_TextOut ("\tTarget 已连接。\n"、"输出"、1、1);
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1、1);
    CLEAR_Memory_Map();
    Setup_Memory_Map();
    GEL_Reset ();
    
    PSC_all_ON();
    core_300MHz_mDDR_150MHz ();
    
    WAKE_DSP();
    }
    
    菜单项"WAKE Core"
    热菜单 WAKE_DSP()
    {
    PSC0_LPSC enableCore (1、LPSC DSP);
    
    GEL_TextOut ("\tDSP 唤醒完成。\n"、"输出"、1、1、1);
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    菜单项"OMAP-L138内存映射"
    /*-------------------------------------- *
    * *
    * clear_Memory_Map() *
    * 清除内存映射 *
    * *
    *------------------------------------------------ //
    热菜单 clear_Memory_Map ()
    {
    GEL_MapOff ();
    GEL_MapReset();
    GEL_TextOut ("\tMemory Map Cleared。\n"、"Output"、1、1);
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    热菜单 Setup_Memory_Map()
    {
    GEL_MapOn();
    GEL_MapReset();
    
    /* arm */
    GEL_MapAddStr (0xFFFD0000、0、0x00010000、"R|W|AS4"、0); // ARM 本地 ROM
    GEL_MapAddStr (0xFFFEE000、0、0x00001000、"R|W|AS4"、0); // ARM INTC
    GEL_MapAddStr (0xFFFFFF0000、0、0x00002000、"R|W|AS4"、0); // ARM 本地 RAM
    GEL_MapAddStr (0x01BC0000、0、0x00001000、"R|W|AS4"、0); // ARM ETB 内存
    GEL_MapAddStr (0x01BC1000、0、0x00000800、"R|W|AS4"、0); // ARM ETB 寄存器
    GEL_MapAddStr (0x01BC1800、0、0x00000100、"R|W|AS4"、0); //手臂冰上撑
    
    /* DSP */
    GEL_MapAddStr (0x00700000、0、0x00100000、"R|W|AS4"、0); // DSP L2 ROM
    GEL_MapAddStr (0x00800000、0、0x00040000、"R|W|AS4"、0); // DSP L2 RAM
    GEL_MapAddStr (0x00E00000、0、0x00008000、"R|W|AS4"、0); // DSP L1P RAM
    GEL_MapAddStr (0x00F00000、0、0x00008000、"R|W|AS4"、0); // DSP L1D RAM
    GEL_MapAddStr (0x01800000、0、0x00010000、"R|W|AS4"、0); // DSP 中断控制器
    GEL_MapAddStr (0x01810000、0、0x00001000、"R|W|AS4"、0); // DSP 断电控制器
    GEL_MapAddStr (0x01811000、0、0x00001000、"R|W|AS4"、0); // DSP 安全 ID
    GEL_MapAddStr (0x01812000、0、0x00008000、"R|W|AS4"、0); // DSP 修订 ID
    GEL_MapAddStr (0x01820000、0、0x00010000、"R|W|AS4"、0); // DSP EMC
    GEL_MapAddStr (0x01830000、0、0x00010000、"R|W|AS4"、0); // DSP 内部保留
    GEL_MapAddStr (0x01840000、0、0x00010000、"R|W|AS4"、0); // DSP 内存系统
    
    GEL_MapAddStr (0x11700000、0、0x00100000、"R|W|AS4"、0); // DSP L2 ROM (镜像)
    GEL_MapAddStr (0x11800000、0、0x00040000、"R|W|AS4"、0); // DSP L2 RAM (镜像)
    GEL_MapAddStr (0x11E00000、0、0x00008000、"R|W|AS4"、0); // DSP L1P RAM (镜像)
    GEL_MapAddStr (0x11F00000、0、0x00008000、"R|W|AS4"、0); // DSP L1D RAM (镜像)
    
    /*共享 RAM */
    GEL_MapAddStr (0x80000000、0、0x00020000、"R|W|AS4"、0); //共享 RAM
    
    /* EMIFA */
    GEL_MapAddStr (0x40000000、0、0x20000000、"R|W|AS4"、0); // EMIFA SDRAM 数据
    GEL_MapAddStr (0x60000000、0、0x02000000、"R|W|AS4"、0); // EMIFA CS2
    GEL_MapAddStr (0x62000000、0、0x02000000、"R|W|AS4"、0); // EMIFA CS3
    GEL_MapAddStr (0x64000000、0、0x02000000、"R|W|AS4"、0); // EMIFA CS4
    GEL_MapAddStr (0x66000000、0、0x02000000、"R|W|AS4"、0); // EMIFA CS5
    GEL_MapAddStr (0x68000000、0、0x00008000、"R|W|AS4"、0); // EMIFA 控制
    
    /* DDR */
    GEL_MapAddStr (0xB0000000、0、0x00008000、"R|W|AS4"、0); // DDR 控制
    GEL_MapAddStr (0xC0000000、0、0x20000000、"R|W|AS4"、0); // DDR 数据
    
    /*外设*/
    GEL_MapAddStr (0x01C00000、0、0x00008000、"R|W|AS4"、0); // TPCC0
    GEL_MapAddStr (0x01C08000、0、0x00000400、"R|W|AS4"、0); // TPTC0
    GEL_MapAddStr (0x01C08400、0、0x00000400、"R|W|AS4"、0); // TPTC1
    GEL_MapAddStr (0x01C10000、0、0x00001000、"R|W|AS4"、0); // PSC 0
    GEL_MapAddStr (0x01C11000、0、0x00001000、"R|W|AS4"、0); // PLL 控制器0
    GEL_MapAddStr (0x01C12000、0、0x00001000、"R|W|AS4"、0); //密钥管理器
    GEL_MapAddStr (0x01C13000、0、0x00001000、"R|W|AS4"、0); // Secco
    GEL_MapAddStr (0x01C14000、0、0x00001000、"R|W|AS4"、0); // SysConfig
    GEL_MapAddStr (0x01C16000、0、0x00001000、"R|W|AS4"、0); // IOPU 0
    GEL_MapAddStr (0x01C17000、0、0x00001000、"R|W|AS4"、0); // IOPU 2
    GEL_MapAddStr (0x01C20000、0、0x00001000、"R|W|AS4"、0); // Timer64P 0
    GEL_MapAddStr (0x01C21000、0、0x00001000、"R|W|AS4"、0); // Timer64P 1.
    GEL_MapAddStr (0x01C22000、0、0x00001000、"R|W|AS4"、0); // I2C 0
    GEL_MapAddStr (0x01C23000、0、0x00001000、"R|W|AS4"、0); // RTC
    GEL_MapAddStr (0x01C24000、0、0x00001000、"R|W|AS4"、0); // IOPU 1
    GEL_MapAddStr (0x01C30000、0、0x00000200、"R|W|AS4"、0); // PRU 数据 RAM 0
    GEL_MapAddStr (0x01C32000、0、0x00000200、"R|W|AS4"、0); // PRU 数据 RAM 1.
    GEL_MapAddStr (0x01C34000、0、0x00004000、"R|W|AS4"、0); // PRU 控制寄存器
    GEL_MapAddStr (0x01C38000、0、0x00001000、"R|W|AS4"、0); // PRU 0配置存储器
    GEL_MapAddStr (0x01C3C000、0、0x00001000、"R|W|AS4"、0); // PRU 1配置存储器
    GEL_MapAddStr (0x01C40000、0、0x00001000、"R|W|AS4"、0); // MMC/SD 0
    GEL_MapAddStr (0x01C41000、0、0x00001000、"R|W|AS4"、0); // SPI 0
    GEL_MapAddStr (0x01C42000、0、0x00001000、"R|W|AS4"、0); // UART 0
    GEL_MapAddStr (0x01C43000、0、0x00001000、"R|W|AS4"、0); // MPU 0
    GEL_MapAddStr (0x01D00000、0、0x00001000、"R|W|AS4"、0); // McASP 0控制
    GEL_MapAddStr (0x01D01000、0、0x00001000、"R|W|AS4"、0); // McASP 0 FIFO 控制
    GEL_MapAddStr (0x01D02000、0、0x00001000、"R|W|AS4"、0); // McASP 0数据
    GEL_MapAddStr (0x01D0C000、0、0x00001000、"R|W|AS4"、0); // UART 1.
    GEL_MapAddStr (0x01D0D000、0、0x00001000、"R|W|AS4"、0); // UART 2.
    GEL_MapAddStr (0x01D0E000、0、0x00001000、"R|W|AS4"、0); // IOPU 4.
    GEL_MapAddStr (0x01D10000、0、0x00000800、"R|W|AS4"、0); // McBSP 0控制
    GEL_MapAddStr (0x01D10800、0、0x00000200、"R|W|AS4"、0); // McBSP 0 FIFO 控制
    GEL_MapAddStr (0x01D11000、0、0x00000800、"R|W|AS4"、0); // McBSP 1控制
    GEL_MapAddStr (0x01D11800、0、0x00000200、"R|W|AS4"、0); // McBSP 1 FIFO 控制
    GEL_MapAddStr (0x01E00000、0、0x00010000、"R|W|AS4"、0); // USB0 (USB HS)配置
    GEL_MapAddStr (0x01E10000、0、0x00001000、"R|W|AS4"、0); // UHPI 配置
    GEL_MapAddStr (0x01E11000、0、0x00001000、"R|W|AS4"、0); // UHPI (IODFT)
    GEL_MapAddStr (0x01E13000、0、0x00001000、"R|W|AS4"、0); // LCD 控制器
    GEL_MapAddStr (0x01E14000、0、0x00001000、"R|W|AS4"、0); // MPU 1.
    GEL_MapAddStr (0x01E15000、0、0x00001000、"R|W|AS4"、0); // MPU 2.
    GEL_MapAddStr (0x01E16000、0、0x00001000、"R|W|AS4"、0); // UPP
    GEL_MapAddStr (0x01E17000、0、0x00001000、"R|W|AS4"、0); // VPIF
    GEL_MapAddStr (0x01E18000、0、0x00002000、"R|W|AS4"、0); // SATA
    GEL_MapAddStr (0x01E1A000、0、0x00001000、"R|W|AS4"、0); // PLL 控制器1
    GEL_MapAddStr (0x01E1B000、0、0x00001000、"R|W|AS4"、0); // MMC/SD 1.
    GEL_MapAddStr (0x01E20000、0、0x00002000、"R|W|AS4"、0); // EMAC CPPI
    GEL_MapAddStr (0x01E22000、0、0x00001000、"R|W|AS4"、0); // EMAC 控制寄存器
    GEL_MapAddStr (0x01E23000、0、0x00001000、"R|W|AS4"、0); // EMAC 寄存器
    GEL_MapAddStr (0x01E24000、0、0x00001000、"R|W|AS4"、0); // EMAC MDIO 端口
    GEL_MapAddStr (0x01E25000、0、0x00001000、"R|W|AS4"、0); // USB1 (USB FS)
    GEL_MapAddStr (0x01E26000、0、0x00001000、"R|W|AS4"、0); // GPIO
    GEL_MapAddStr (0x01E27000、0、0x00001000、"R|W|AS4"、0); // PSC 1.
    GEL_MapAddStr (0x01E28000、0、0x00001000、"R|W|AS4"、0); // I2C 1.
    GEL_MapAddStr (0x01E29000、0、0x00001000、"R|W|AS4"、0); // IOPU 3.
    GEL_MapAddStr (0x01E2A000、0、0x00001000、"R|W|AS4"、0); // PBIST 控制器
    GEL_MapAddStr (0x01E2B000、0、0x00001000、"R|W|AS4"、0); // PBIST 组合器
    GEL_MapAddStr (0x01E2C000、0、0x00001000、"R|W|AS4"、0); //系统配置
    
    GEL_MapAddStr (0x01E30000、0、0x00008000、"R|W|AS4"、0); // TPCC1
    GEL_MapAddStr (0x01E38000、0、0x00000400、"R|W|AS4"、0); // TPTC2
    GEL_MapAddStr (0x01F00000、0、0x00001000、"R|W|AS4"、0); // ePWM 0
    GEL_MapAddStr (0x01F01000、0、0x00001000、"R|W|AS4"、0); // HRPWM 0
    GEL_MapAddStr (0x01F02000、0、0x00001000、"R|W|AS4"、0); // ePWM 1.
    GEL_MapAddStr (0x01F03000、0、0x00001000、"R|W|AS4"、0); // HRPWM 1.
    GEL_MapAddStr (0x01F06000、0、0x00001000、"R|W|AS4"、0); // ECAP 0
    GEL_MapAddStr (0x01F07000、0、0x00001000、"R|W|AS4"、0); // ECAP 1.
    GEL_MapAddStr (0x01F08000、0、0x00001000、"R|W|AS4"、0); // ECAP 2.
    GEL_MapAddStr (0x01F0B000、0、0x00001000、"R|W|AS4"、0); // IOPU 5.
    GEL_MapAddStr (0x01F0C000、0、0x00001000、"R|W|AS4"、0); // Timer64P 2.
    GEL_MapAddStr (0x01F0D000、0、0x00001000、"R|W|AS4"、0); // Timer64P 3.
    GEL_MapAddStr (0x01F0E000、0、0x00001000、"R|W|AS4"、0); // SPI1
    GEL_MapAddStr (0x01F10000、0、0x00001000、"R|W|AS4"、0); // McBSP 0 FIFO 数据
    GEL_MapAddStr (0x01F11000、0、0x00001000、"R|W|AS4"、0); // McBSP 1 FIFO 数据
    GEL_TextOut ("\t 内存映射设置完成。\n"、"输出"、1、1);
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    SET_Core_456MHz (){
    DEVICE_PLL0 (0、18、0、0、1、11、5);
    GEL_TextOut ("\tPLL0 init done for Core:456MHz、EMIFA:38MHz\n"、"输出"、1、1);
    }
    SET_Core_300MHz (){
    DEVICE_PLL0 (0、24、1、0、1、11、5);
    GEL_TextOut ("\tPLL0 init done for Core:300MHz、EMIFA:25MHz\n"、"输出"、1、1);
    }
    SET_Core_200MHz (){
    DEVICE_PLL0 (0、24、2、0、1、7、3);
    GEL_TextOut ("\tPLL0 init done for Core:200MHz、EMIFA:25MHz\n"、"输出"、1、1);
    }
    SET_Core_100MHz (){
    DEVICE_PLL0 (0、24、5、0、1、3、1);
    GEL_TextOut ("\tPLL0 init done for Core:100MHz、EMIFA:25MHz\n"、"输出"、1、1);
    }
    
    SET_DDRPLL_150MHz (){
    DEVICE_PLL1 (24、1、0、1、2);
    GEL_TextOut ("\tPLL1 init done for DDR:150MHz\n"、"输出"、1、1);
    }
    SET_DDRPLL_132MHz (){
    DEVICE_PLL1 (21、1、0、1、2);
    GEL_TextOut ("\tPLL1 init done for DDR:132MHz\n"、"Output"、1、1);
    }
    SET_DDRPLL_126MHz (){
    DEVICE_PLL1 (20、1、0、1、2);
    GEL_TextOut ("\tPLL1 init done for DDR:126MHz\n"、"Output"、1、1);
    }
    SET_DDRPLL_102MHz (){
    DEVICE_PLL1 (16、1、0、1、2);
    GEL_TextOut ("\tPLL1 init done for DDR:102MHz\n"、"输出"、1、1);
    }
    
    SET_DDR2_150MHz (){
    GEL_TextOut ("\TDDR 初始化正在进行...\n"、"输出"、1、1);
    SET_DDRPLL_150MHz ();
    DEVICE_DDRConfig (DDR2、150);
    GEL_TextOut ("\tDDR2初始化150MHz 已完成\n"、"输出"、1、1);
    }
    
    SET_DDR2_132MHz (){
    GEL_TextOut ("\TDDR 初始化正在进行...\n"、"输出"、1、1);
    SET_DDRPLL_132MHz ();
    DEVICE_DDRConfig (DDR2、132);
    GEL_TextOut ("\t132 MHz 的 DDR2初始化已完成\n"、"输出"、1、1);
    }
    
    SET_DDR2_126MHz (){
    GEL_TextOut ("\TDDR 初始化正在进行...\n"、"输出"、1、1);
    SET_DDRPLL_126MHz ();
    DEVICE_DDRConfig (DDR2、126);
    GEL_TextOut ("\t126 MHz 的 DDR2初始化已完成\n"、"输出"、1、1);
    }
    
    SET_DDR2_102MHz (){
    GEL_TextOut ("\TDDR 初始化正在进行...\n"、"输出"、1、1);
    SET_DDRPLL_102MHz ();
    DEVICE_DDRConfig (DDR2、102);
    GEL_TextOut ("\TDDR 初始化102MHz 已完成\n"、"输出"、1、1);
    }
    
    菜单项"频率设置"
    热菜单 Core_456MHz_mDDR_150MHz (){
    Set_Core_456MHz ();
    SET_DDR2_150MHz ();
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    热菜单 Core_300MHz_mDDR_150MHz (){
    Set_Core_300MHz ();
    SET_DDR2_150MHz ();
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    热菜单 Core_300MHz_mDDR_132MHz (){
    Set_Core_300MHz ();
    SET_DDR2_132MHz ();
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    热菜单 Core_300MHz_mDDR_126MHz (){
    Set_Core_300MHz ();
    SET_DDR2_126MHz ();
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    热菜单 Core_300MHz_mDDR_102MHz (){
    Set_Core_300MHz ();
    SET_DDR2_102MHz ();
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    热菜单 Core_200MHz_mDDR_126MHz (){
    Set_Core_200MHz ();
    SET_DDR2_126MHz ();
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    热菜单 Core_100MHz_mDDR_102MHz (){
    Set_Core_100MHz ();
    SET_DDR2_102MHz ();
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    菜单项"Experimenter"
    
    菜单项"Full EVM"
    
    热菜单 PSC_ALL_ON(){
    // PSC0
    PSC0_LPSC 使能(0、LPSC EDMA_cC0);
    PSC0_LPSC 使能(0、LPSC EDMA_TC0);
    PSC0_LPSC_ENABLE (0、LPSC_EDMA_TC1);
    PSC0_LPSC_ENABLE (0、LPSC_EMIFA);
    PSC0_LPSC 使能(0、LPSC SPI0);
    PSC0_LPSC 使能(0、LPSC MMCSD0);
    PSC0_LPSC 使能(0、LPSC ARM_AINTC);
    PSC0_LPSC 使能(0、LPSC ARM_RAMROM);
    PSC0_LPSC 使能(0、LPSC UART0);
    PSC0_LPSC 使能(0、LPSC SCR0);
    PSC0_LPSC_ENABLE (0、LPSC_SCR1);
    PSC0_LPSC_ENABLE (0、LPSC_SCR2);
    
    // PSC1
    PSC1_LPSC_ENABLE (0、LPSC_EDMA_CC1);
    PSC1_LPSC_ENABLE (0、LPSC_USB20);
    PSC1_LPSC_ENABLE (0、LPSC_USB11);
    CFGCHIP2 = 0x09F2;//启用 USB 时钟、PHY_PLLON、胶合逻辑多路复用器(USB2参考时钟输入)
    PSC1_LPSC_ENABLE (0、LPSC_GPIO);
    PSC1_LPSC_ENABLE (0、LPSC_UHPI);
    PSC1_LPSC_ENABLE (0、LPSC_EMAC);
    PSC1_LPSC_ENABLE (0、LPSC_McASP0);
    PSC1_LPSC_FORCE (LPSC_SATA);
    PSC1_LPSC_ENABLE (0、LPSC_SATA);
    PSC1_LPSC_ENABLE (0、LPSC_VPIF);
    PSC1_LPSC_ENABLE (0、LPSC_SPI1);
    PSC1_LPSC_ENABLE (0、LPSC_I2C1);
    PSC1_LPSC_ENABLE (0、LPSC_UART1);
    PSC1_LPSC_ENABLE (0、LPSC_UART2);
    PSC1_LPSC_ENABLE (0、LPSC_MCBSP0);
    PSC1_LPSC_ENABLE (0、LPSC_MCBSP1);
    PSC1_LPSC_ENABLE (0、LPSC_LCDC);
    PSC1_LPSC_ENABLE (0、LPSC_ePWM);
    PSC1_LPSC_ENABLE (0、LPSC_MMCSD1);
    PSC1_LPSC_ENABLE (0、LPSC_UPP);
    PSC1_LPSC_ENABLE (0、LPSC_ECAP);
    PSC1_LPSC_ENABLE (0、LPSC_EDMA_TC2);
    PSC1_LPSC 使能(0、LPSC SCR_F0);
    PSC1_LPSC_ENABLE (0、LPSC_SCR_F1);
    PSC1_LPSC_ENABLE (0、LPSC_SCR_F2);
    PSC1_LPSC_ENABLE (0、LPSC_SCR_F6);
    PSC1_LPSC_ENABLE (0、LPSC_SCR_F7);
    PSC1_LPSC_ENABLE (0、LPSC_SCR_F8);
    PSC1_LPSC 使能(0、LPSC BR_F7);
    PSC1_LPSC_ENABLE (0、LPSC_SHARD_RAM);
    
    GEL_TextOut ("\tPSC Enable Complete"、"Output"、1、1);
    GEL_TextOut ("\t\t----------------- \n"、"输出"、1、1);
    }
    
    热菜单 EMIFA_NAND_PINMUX (){
    PSC0_LPSC_ENABLE (0、LPSC_EMIFA);
    PINMUX7 =(PINMUX7 &~0x00FF0FF0)| 0x00110110;
    PINMUX8= 0x11111111;
    PINMUX9. = 0x111111;
    PINMUX12. =(PINMUX12 &~0x0FF00000)| 0x01100000;
    EMIFA_ACFG3 |= 0x1;
    EMIFA_NANDFCR =(EMIFA_NANDFCR &~0x30)| 0x12;
    
    GEL_TextOut (为 NAND 配置的"\tEMIFA 引脚。\n"、"输出"、1、1);
    GEL_TextOut ("\t\t----------------- "、"输出"、1、1);
    }
    
    /
    DEVICE_PLL0初始化:
    
    CLKMODE - 0--->片上振荡器1--->外部振荡器
    PLL0_SYSCLK1 -固定比率/1
    PLL0_SYSCLK2 -固定比率/2
    PLL0_SYSCLK3 -
    
    
    
    
    可变分频器(EMIFA) PLL0_SYSCLKII -未使用的比率/SYSCL0_SYSCL06 -无用比率 /
    DEVICE_PLL0 (unsigned int CLKMODE、unsigned int PLLM、unsigned int POSTDIV、unsigned int PLLDIV1、unsigned int PLLDIV2、unsigned int PLLDIV3、unsigned int PLLDIV7){
    
    unsigned int i=0;
    
    /*清除 PLL 锁定位*/
    CFGCHIP0 &=~(0x00000010);
    
    /*设置 PLLENSRC '0'、位5、PLL 使能(PLLEN)选择通过 MMR 控制*/
    PLL0_PLLCTL &=~(0x00000020);
    
    对于 Freon、/* PLLCTL.EXTCLKSRC 位9应该保持为0。*/
    PLL0_PLLCTL &=~(0x00000200);
    
    /*将 PLLEN=0设置为进入旁路模式*/
    PLL0_PLLCTL &=~(0x00000001);
    
    /*等待4个周期以使 PLLEN 多路复用器正确绕过时钟*/
    对于(i=0;i <'0',bit="" 5,="" enable(pllen)="" selection="" controlled="" through="" mmr="" pll1_pllctl="" pllctl.extclksrc="" 9="" should="" be="" left="" at="" freon="" put="" cycles="" allow="" mux="" switches="" properly="" clock*="" i"\tkick="" unlocked.\n","output",1,1,1);="" gel_textout("\t---------------------------------------------\n","output",1,1,1);="" psc="" common="" functions="" :="" *force="" module="" state="" without="" handshaking="" psc1_lpsc_force(unsigned="" lpsc_num)="" *(unsigned="" int*)="" (psc1_mdctl+4*lpsc_num)="(*(unsigned" 0x80000000);="" *syncreset="" function="" psc1*="" psc1_lpsc_syncreset(unsigned="" pd,="" j;="" if(="" (*(unsigned="" int*)(psc1_mdstat+4="" 0x1f)="" !="0x1" 0xffffffe0)="" 0x0001;="" psc1_ptcmd="0x1<" j="0;" transition="" finish*="" while(="" (psc1_ptstat="" (0x1<psc_timeout){
    GEL_TextOut ("\tPSC1同步重置转换超时、域%d、LPSC %d\n"、"输出"、1、1、1、PD、LPSC _num);
    中断;
    }
    }
    
    J = 0;
    while ((*(unsigned int*)(PSC1_mdstat+4 * LPSC _num)& 0x1F)!=0x1){
    if (j++> psc_timeout){
    GEL_TextOut ("\tPSC1同步重置验证域%d、LPSC %d\n"、"输出"、1、1、1、PD、LPSC num 上的超时);
    中断;
    }
    }
    
    }
    
    /* PSC1*/
    PSC1_LPSC_ENABLE (unsigned int pd、unsigned int LPSC_num){
    unsigned int j;
    
    if ((*(unsigned int*)(PSC1_mdstat+4 * LPSC _num)& 0x1F)!= 0x3){
    *(unsigned int*)(PSC1_MDCTL+4*LPSC_num)=(*(unsigned int*)(PSC1_MDCTL+4*LPSC_num)& 0xFFFFFFE0)| 0x0003;
    PSC1_PTCMD = 0x1< <psc_timeout){
    GEL_TextOut ("\tPSC1在域%d、LPSC %d\n"、"输出"、1、1、1、PD、LPSC num 上启用转换超时);
    中断;
    }
    }
    
    J = 0;
    while ((*(unsigned int*)(PSC1_mdstat+4 * LPSC _num)& 0x1F)!=0x3){
    if (j++> psc_timeout){
    GEL_TextOut ("\tPSC1在域%d、LPSC %d\n"、"输出"、1、1、1、PD、LPSC num 上启用验证超时);
    中断;
    }
    }
    
    用于
    
    ARM 或 DSP*/
    PSC0_LPSC_enableCore (unsigned int pd、unsigned int LPSC_num){
    unsigned int j;
    
    if ((*(unsigned int*)(PSC0_mdstat+4 * LPSC _num)& 0x11F)!= 0x103){
    *(unsigned int*)(PSC0_MDCTL+4*LPSC_num)=(*(unsigned int*)(PSC0_MDCTL+4*LPSC_num)& 0xFFFFFE0)| 0x0103;
    PSC0_PTCMD = 0x1< <psc_timeout){
    GEL_TextOut ("\tPSC0在域%d、LPSC %d\n"、"输出"、1、1、1、PD、LPSC _num 上启用内核转换超时);
    中断;
    }
    }
    
    J = 0;
    while ((*(unsigned int*)(PSC0_mdstat+4 * LPSC _num)& 0x11F)!=0x103){
    if (j++> psc_timeout){
    GEL_TextOut ("\tPSC0在域%d、LPSC %d\n"、"输出"、1、1、1、PD、LPSC _num 上启用内核验证超时);
    中断;
    }
    }
    
    }
    
    /* PSC0*/
    PSC0_LPSC_SyncReset (unsigned int pd、unsigned int LPSC_num){的 SyncReset 函数
    unsigned int j;
    
    if ((*(unsigned int*)(PSC0_mdstat+4 * LPSC _num)& 0x1F)!= 0x1){
    *(unsigned int*)(PSC0_MDCTL+4*LPSC_num)=(*(unsigned int*)(PSC0_MDCTL+4*LPSC_num)& 0xFFFFFFE0)| 0x0001;
    PSC0_PTCMD = 0x1< <psc_timeout){
    GEL_TextOut ("\tPSC0域%d、LPSC %d\n"、"输出"、1、1、1、PD、LPSC _num 上的同步复位转换超时);
    中断;
    }
    }
    
    J = 0;
    while ((*(unsigned int*)(PSC0_mdstat+4 * LPSC _num)& 0x1F)!=0x1){
    if (j++> psc_timeout){
    GEL_TextOut ("\tPSC0同步重置验证域%d、LPSC %d\n"、"输出"、1、1、1、PD、LPSC num 上的超时);
    中断;
    }
    }
    
    }/*
    
    启用 PSC0*/
    PSC0_LPSC_ENABLE (unsigned int pd、unsigned int LPSC_num){
    unsigned int j;
    
    if ((*(unsigned int*)(PSC0_mdstat+4 * LPSC _num)& 0x1F)!= 0x3){
    *(unsigned int*)(PSC0_MDCTL+4*LPSC_num)=(*(unsigned int*)(PSC0_MDCTL+4*LPSC_num)& 0xFFFFFFE0)| 0x0003;
    PSC0_PTCMD = 0x1< <psc_timeout){
    GEL_TextOut ("\tPSC0在域%d、LPSC %d\n"、"输出"、1、1、1、PD、LPSC num 上启用转换超时);
    中断;
    }
    }
    
    J = 0;
    while ((*(unsigned int*)(PSC0_mdstat+4 * LPSC _num)& 0x1F)!=0x3){
    if (j++> psc_timeout){
    GEL_TextOut ("\tPSC0在域%d、LPSC %d\n"、"输出"、1、1、1、PD、LPSC num 上启用验证超时);
    中断;
    }
    }
    
    }
    
    
    /*********
    DDR 配置例程:
    1. DDR 使能
    2. VTP 校准
    3.配置 DDR
    4.设置为自刷新、启用 mclkstop 和 DDR 同步复位
    5.启用 DDR 和禁用自刷新
    
    int freq 为 MHz
    
    DDR2 = 0
    mDDR = 1
    
    DDR 配置电子表格工具位于此处:
       processors.wiki.ti.com/.../C674x
    
    /
    
    device_DDRConfig (unsigned int DDR_type、unsigned int freq)
    {
    unsigned int j;
    unsigned int tmp_sdcr;
    
    //启用 EMIFDDR SDRAM 的时钟
    PSC1_LPSC_ENABLE (PD0、LPSC_DDR);
    
    //开始 VTP 校准
    VTPIO_CTL &=~0x00000040; //清除 POWERDN
    VTPIO_CTL &=~0x00000080; //清除锁定
    VTPIO_CTL |= 0x00002000; //设置 CLKRZ,以防它之前被清除(VTP 查找 CLKRZ 边沿转换)
    VTPIO_CTL &=~0x00002000; //清除 CLKRZ (使用读-修改-写来确保等待前一条指令的1个 VTP 周期)
    VTPIO_CTL |= 0x00002000; //设置 CLKRZ (使用读-修改-写来确保等待前一条指令的1个 VTP 周期)
    
    J = 0;
    //轮询就绪位以查看 VTP 校准何时完成
    while (((VTPIO_CTL 和0x00008000)= 0){
    if (j++>vt_timeout){
    GEL_TextOut ("\tVTP 就绪超时\n"、"输出"、1、1);
    中断;
    }
    }
    
    VTPIO_CTL |= 0x00000080; //为静态校准模式设置锁定位
    VTPIO_CTL |= 0x00000040; //设置 POWERDN 位以关闭 VTP 模块
    //结束 VTP 校准
    
    VTPIO_CTL |= 0x00004000; //将 IOPWRDN 设置为在 PWRDNEN 被置位时允许输入接收器断电
    
    //
    //设置1Gb DDR2 Samsung K4T1G164QF-BCF8
    //配置 DDR 时序
    DRPYC1R =(0x0 <<8)|//保留
    (0x1. << 7)|// EXT_STRBEN
    (0x1. << 6)|// PWRDNEN
    (0x0 <<3)|//保留
    (0x4 <<<<0); // RL
    // DRPYC1R 值= 0x000000C4
    
    if (DDR_DEBUG){
    //使用最大时序配置 EMIF 以实现更长的可宽延时间
    //如果内存不稳定,请尝试此操作
    DRPYC1R |= 0x7;// RL
    }
    
    EMIFDDR_SDCR |= 0x00800000;//设置 BOOTUNLOCK
    
    //设置取决于 DDR2
    TMP_SDCR =(0x0 <<25)|// MSDRAMEN
    (0x1. < 20);// DDR2EN
    GEL_TextOut ("\t 使用 DDR2设置\n"、"输出"、1、1);
    
    EMIFDDR_SDCR = tmp_SDCR |//根据 DDR2或 mDDR 而变化的设置
    (EMIFDDR_SDCR 和0xF0000000)|//保留
    (0x0 <<27)|// DDR2TERM1
    (0x0 << 26)|// IBANK_POS
    (0x0 <<24)|// DDRDRIVE1
    (0x0 <<23)|// BOOTUNLOCK
    (0x0 <<22)|// DDR2DDQS
    (0x0 <<21)|// DDR2TERM0
    (0x0 << 19)|// DDRDLL_DIS
    (0x0 <<18)|// DDRDRIVE0
    (0x1. << 17)|// DDREN
    (0x1. << 16)|// SDRAMEN
    (0x1. << 15)|// TIMUNLOCK
    (0x1. < 14)|// nm
    (0x0 <<12)|//保留
    (0x4 <<9)|// CL
    (0x0 <<7)|//保留
    (0x3. << 4)|// IBANK
    (0x0 <<3)|//保留
    (0x2. <<<<0); //页面大小
    
    EMIFDDR_SDCR2 = 0x00000000;// IBANK_POS 设置为0、因此该寄存器不适用
    
    if (DDR_DEBUG){
    //使用最大时序配置 EMIF 以实现更长的可宽延时间
    //如果内存不稳定,请尝试此操作
    
    EMIFDDR_SDTIMR1 =(0x7F << 25) |//tRFC
    (0x07 << 22) |// TRP
    (0x07 << 19) |// tRCD
    (0x07 << 16) |// TWR
    (0x1f << 11) |// tras
    (0x1f << 6) |// TRC
    (0x07 <<3) |// tRRD
    (EMIFDDR_SDTIMR1和0x4)|//保留
    (0x03 <<0); // tWTR
    
    EMIFDDR_SDTIMR2 =(EMIFDDR_SDTIMR2和0x8000000) |//保留
    (((unsigned int)((70000 / 3400)- 0.5))<< 27)|// tRASMAX (原始7812.5)
    (0x3. << 25)|// TxP
    (0x0 << 23)|// tODT (不支持)
    (0x7f << 16)|// tXSNR
    (0xFF <<8)|// tXSRD
    (0x07 <<5)|// tRTP (1周期)
    (0x1f <<<<0); // tCKE
    
    GEL_TextOut ("\TDDR 时序配置用于调试\n"、"输出"、1、1);
    }
    否则{
    //让 float ->整数截断句柄减1;更安全地针对计时进行舍入
    EMIFDDR_SDTIMR1 =((unsigned int)(127.5 * freq / 1000))<< 25)|// tRFC
    (((unsigned int)(13.13 * freq / 1000))<< 22)|// TRP
    (((unsigned int)(13.13 * freq / 1000))<< 19)|// tRCD
    (((unsigned int)(15.0 * freq / 1000))<< 16)|// TWR
    (((unsigned int)(45.0 * freq / 1000))<< 11)|// tras
    (((unsigned int)(58.13 * freq / 1000))<< 6)|// trc
    (((unsigned int)(7.5 * freq / 1000))<< 3)|// tRRD
    (EMIFDDR_SDTIMR1和0x4) |//保留
    ((2 - 1) <<<<0); // tWTR
    
    EMIFDDR_SDTIMR2 =(EMIFDDR_SDTIMR2和0x8000000) |//保留
    (((unsigned int)((70000 / 7800)- 1))<< 27)|// tRASMAX (原始3400)
    ((0x3-1) << 25)|// TxP (根据 MT46H64M16LFBF-6数据表应为6-1、但字段最多为0b11)
    (0x0 << 23)|// tODT (不支持)
    (((unsigned int)(137.5 * freq / 1000))<< 16)|// tXSNR (对于 mDDR 为 tXSR)
    ((200-1)<< 8)|// tXSRD (对于 mDDR 为 tXSR)
    ((2 - 1) <<5)|// tRTP
    ((3 - 1) <<<<0); // tCKE
    }
    
    EMIFDDR_SDCR &=~0x00008000;//清除 TIMUNLOCK
    
    //让浮点->整数截断句柄 RR 舍入;刷新率更安全地舍入
    EMIFDDR_SDRCR =(0x1. << 31)|// LPMODEN (LPSC SyncReset/Enable 所需)
    (0x1. < 30)|// MCLKSTOPEN (LPSC SyncReset/Enable 需要)
    (0x0 << 24)|//保留
    (0x0 < 23)|// SR_PD
    (0x0 <<16)|//保留
    (((unsigned int)(7.8 * freq))<<<<0); // RR (原7.8125)
    
    //同步将时钟重置为 EMIFDDR SDRAM
    PSC1_LPSC_SyncReset (PD0、LPSC_DDR);
    
    //启用 EMIFDDR SDRAM 的时钟
    PSC1_LPSC_ENABLE (PD0、LPSC_DDR);
    
    //禁用自刷新
    EMIFDDR_SDRCR &=~0xC0000000;
    
    EMIFDDR_PBBPR = 0x30;
    }
    
    
    
    

    下面是尝试运行 Audio Pass Through 时的警告。

    无效的工程路径:未找到包含路径(C:\ti\C6748_StarterWare_1_20_04_01\ipclite\include)。


    此工程是使用当前未安装的编译器版本创建的- 7.2.1 [C6000]。 编译器的另一个版本将在编译期间使用- 7.4.22。 请参阅"帮助">"安装新软件"并选择"代码生成工具更新"以检查此编译器是否可通过 CCS 更新获得。 访问 CCS App Center 以获取最新的编译器支持。 或 "="">software-dl.ti.com/.../a> 并安装编译器、然后通过"Preferences > CCS > Build > Compiler"在 CCS 中注册。 McASP_C674x_C6748_lcdkC6748属性问题

    我认为我不需要获取旧版编译器?  但是、我可能只下载用于构建此代码的版本、然后查看它是否可以解决我的任何问题。

    谢谢、

    Tyler

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rahul、

    我能够使 TI Starterware 中的代码正常工作。 MCASP Audio Pass 示例成功工作、我能够听到音频。 在我卸载所有 TI 材料并重新安装 CCS V7后、该操作就开始了。 在此过程中、我必须更改一个设置。

    我仍在对 RT-DSP 提供的这个余弦表代码进行故障排除。 尝试初始化编解码器时仍然卡滞。 我想、除非有人执行 RT-DSP 手册中的代码、否则我将继续前进。

    谢谢、
    Tyler