Other Parts Discussed in Thread: C2000WARE
器件型号: TMS320F28P650DK
主题: C2000WARE 中讨论的其他器件
尊敬的 champs:
我向我们的客户询问这个问题。
在 C:\ti\c2000\C2000Ware_6_00_01_00\driverlib\f28p65x\driverlib 中
memcfg.h
memcfg.c
MEMCFG_sect_LSX_ALL、MEMCG_sect_GSx_ALL、MEMCG_sect_MSGx_ALL 似乎与寄存器不匹配。
以 MEMCFG_sect_LSX_ALL 为例、定义 0x010003FFU 如下所示。
来自表 3-520。 TRM 的 LSxINITDONE 寄存器字段说明
位 10-31 被保留、因此要求:
- 为什么 0x01003FFU 中有 1?
- 这是否有目的?
- 它是由 TI 保留的、还是代码中的一个拼写错误?
//
// LSxRAM - Local shared RAM config
//
#define MEMCFG_SECT_LS0 0x01000001U //!< LS0 RAM
#define MEMCFG_SECT_LS1 0x01000002U //!< LS1 RAM
#define MEMCFG_SECT_LS2 0x01000004U //!< LS2 RAM
#define MEMCFG_SECT_LS3 0x01000008U //!< LS3 RAM
#define MEMCFG_SECT_LS4 0x01000010U //!< LS4 RAM
#define MEMCFG_SECT_LS5 0x01000020U //!< LS5 RAM
#define MEMCFG_SECT_LS6 0x01000040U //!< LS6 RAM
#define MEMCFG_SECT_LS7 0x01000080U //!< LS7 RAM
#define MEMCFG_SECT_LS8 0x01000100U //!< LS8 RAM
#define MEMCFG_SECT_LS9 0x01000200U //!< LS9 RAM
#define MEMCFG_SECT_LSX_ALL 0x010003FFU //!< All LS RAM
/*****************************************************************************
//
// MemCfg_initSections
//
//*****************************************************************************
void
MemCfg_initSections(uint32_t ramSections)
{
//
// Check the arguments.
//
ASSERT(((ramSections & MEMCFG_SECT_TYPE_MASK) == MEMCFG_SECT_TYPE_D) ||
((ramSections & MEMCFG_SECT_TYPE_MASK) == MEMCFG_SECT_TYPE_LS) ||
((ramSections & MEMCFG_SECT_TYPE_MASK) == MEMCFG_SECT_TYPE_GS) ||
((ramSections & MEMCFG_SECT_TYPE_MASK) == MEMCFG_SECT_TYPE_MSG) ||
(ramSections == MEMCFG_SECT_ALL));
//
// Set the bit in the various initialization registers that starts
// initialization.
//
EALLOW;
switch(ramSections & MEMCFG_SECT_TYPE_MASK)
{
case MEMCFG_SECT_TYPE_D:
HWREG(MEMCFG_BASE + MEMCFG_O_DXINIT) |= MEMCFG_SECT_NUM_MASK &
ramSections;
break;
case MEMCFG_SECT_TYPE_LS:
HWREG(MEMCFG_BASE + MEMCFG_O_LSXINIT) |= MEMCFG_SECT_NUM_MASK &
ramSections;
break;
case MEMCFG_SECT_TYPE_GS:
HWREG(MEMCFG_BASE + MEMCFG_O_GSXINIT) |= MEMCFG_SECT_NUM_MASK &
ramSections;
break;
case MEMCFG_SECT_TYPE_MSG:
HWREG(MEMCFG_BASE + MEMCFG_O_MSGXINIT) |= MEMCFG_SECT_NUM_MASK &
ramSections;
break;
case MEMCFG_SECT_TYPE_MASK:
//
// Initialize all sections.
//
HWREG(MEMCFG_BASE + MEMCFG_O_DXINIT) |= MEMCFG_SECT_NUM_MASK &
MEMCFG_SECT_DX_ALL;
HWREG(MEMCFG_BASE + MEMCFG_O_LSXINIT) |= MEMCFG_SECT_NUM_MASK &
MEMCFG_SECT_LSX_ALL;
HWREG(MEMCFG_BASE + MEMCFG_O_GSXINIT) |= MEMCFG_SECT_NUM_MASK &
MEMCFG_SECT_GSX_ALL;
HWREG(MEMCFG_BASE + MEMCFG_O_MSGXINIT) |= MEMCFG_SECT_NUM_MASK &
MEMCFG_SECT_MSGX_ALL;
break;
default:
//
// Do nothing. Invalid ramSections. Make sure you aren't OR-ing
// values for two different types of RAM.
//
break;
}
EDIS;
}