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.
你(们)好
我使用 F28M35 在16位主机模式。上建立2个 SRAM
我不知道如何配置一些分段引脚。
例如 ,EPI0S36 --A11---- Pb7_GPIO15
请访问 hw_gpio.h
#define GPIO_PCTL_PB7_M 0xF0000000 // PB7掩码
#define GPIO_PCTL_PB7_NMI 0x40000000 // PB7上的 NMI
#define GPIO_PCTL_PB7_MIIRXD1 0x70000000 // PB7上的 EMAC MIIRXD1
#define GPIO_PCTL_PB7_I2C0SCL 0xD0000000 // PB7上的 I2C0SCL
在 PB7上#define GPIO_PCTL_PB7_U1RX 0xE0000000 // U1RX
#define GPIO_PCTL_PB7_SSI1FSS 0xF0000000 // PB7上的 SSI1FSS
没有 下述定义;
#define GPIO_PCTL_PB5_EPI0S22 0x00800000 // PB5上的 EPI0S22
感谢您的回复 。 我做了 建议,你 让我很高;
HWREG (GPIO_PORTB_BASE + GPIO_O_PCTL)= GPIO_PCTL_PB4_EPI0S23 |
GPIO_PCTL_PB5_EPI0S22|
GPIO_PCTL_PB6_EPI0S37|
GPIO_PCTL_PB7_EPI0S36;
另一个引脚也是这样、但它不能正常工作。下面是我的项目、它基于"EPI_SRAM_8bit.c"、该文件在控制套件。中找到、问题是我无法 在 SRAM 中读取或写入。
我对 SRAM 的需求基于 F28M35x Concerto微控制器中的表5-49。
内部
main (空)
{
//禁用保护
HWREG (SYSCTL_MWRALLOW)= 0xA5A5A5;
//为75MHz - M3和150MHz - C28x 设置主时钟树
SysCtlClockConfigSet (SYSCTL_SYSDIV_1 | SYSCTL_M3SSDIV_2 | SYSCTL_USE_PLL |
(SYSCTL_SPLLIMULT_M & 0x0F);
#ifdef _flash
//将时间关键代码和闪存设置代码复制到 RAM
//这包括以下函数: InitFlash();
// RamfuncsLoadStart、RamfuncsLoadSize 和 RamfuncsRunStart
//符号由链接器创建。 请参阅器件.cmd 文件。
memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);
//调用闪存初始化以设置闪存等待状态
//此函数必须驻留在 RAM 中
FlashInit();
#endif
//启用 EPI 和 GPIO 端口的时钟
SysCtlPeripheralEnable (SYSCTL_Periph_EPI0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOH);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);
//为 EPI 管脚配置 GPIO 设置。
SetPortControl();
GPIODirModeSet (GPIO_PORTB_BASE、
(GPIO_PIN_4 | GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7)、
GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTB_BASE、
(GPIO_PIN_4 | GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7)、
GPIO_PIN_TYPE_STD_WPU);
GPIODirModeSet (GPIO_PORTC_BASE、
(GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7)、
GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTC_BASE、
(GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7)、
GPIO_PIN_TYPE_STD_WPU);
GPIODirModeSet (GPIO_PORTD_BASE、
(GPIO_PIN_2 | GPIO_PIN_3|GPIO_PIN_7)、
GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTD_BASE、
(GPIO_PIN_2 | GPIO_PIN_3|GPIO_PIN_7)、
GPIO_PIN_TYPE_STD_WPU);
GPIODirModeSet (GPIO_Porte _BASE、
(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5)、
GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_Porte _BASE、
(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5)、
GPIO_PIN_TYPE_STD_WPU);
GPIODirModeSet (GPIO_PORTF_BASE、
(GPIO_PIN_4 | GPIO_PIN_5|GPIO_PIN_6)、
GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTF_BASE、
(GPIO_PIN_4 | GPIO_PIN_5|GPIO_PIN_6)、
GPIO_PIN_TYPE_STD_WPU);
GPIODirModeSet (GPIO_PORTG_base、
(GPIO_PIN_0 | GPIO_PIN_1_GPIO_PIN_2|GPIO_PIN_5|GPIO_PIN_6)、
GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTG_base、
(GPIO_PIN_0 | GPIO_PIN_1_GPIO_PIN_2|GPIO_PIN_5|GPIO_PIN_6)、
GPIO_PIN_TYPE_STD_WPU);
GPIODirModeSet (GPIO_Porth_BASE、
(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 |
GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7)、
GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_Porth_BASE、
(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 |
GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7)、
GPIO_PIN_TYPE_STD_WPU);
GPIODirModeSet (GPIO_PORTJ_BASE、
(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 |
GPIO_PIN_4 | GPIO_PIN_5)、
GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTJ_BASE、
(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 |
GPIO_PIN_4 | GPIO_PIN_5)、
GPIO_PIN_TYPE_STD_WPU);
//使用 GPIO 等 EPI31并将其连接到存储器的 A20引脚。
// GPIOPinTypeGPIOOutput (GPIO_PORTG_base、GPIO_PIN_7);
// GPIOPinWrite (GPIO_PORTG_base、GPIO_PIN_7、GPIO_PIN_7);
//设置16位 HostBus 模式。
EPImodeSet (EPI0_BASE、EPI_MODE_HB16);
//将时钟分频器设置为1 (2分频)。 在此 EPI 频率下、帧速率将为37.5MHz (M3-Frq/2)。
EPIDividerSet (EPI0_BASE、0x2);
//读取等待状态= 0
//写入等待状态= 0
//地址和数据不复用(ADNOMUX = 0x1)。
EPIModeSet (EPI0_BASE、EPI_MODE_HB16);
EPIConfigHB16Set (EPI0_BASE、(EPI_HB16_MODE_ADDEMUX | EPI_HB16_WRWAIT_0|EPI_HB16_BSEL | EPI_HB16_RDWAIT_0)、0);
EPIAddressMapSet (EPI0_BASE,(EPI_ADDR_RAM_SIZE _256MB | EPI_ADDR_RAM_BASE_6));
//字访问模式被启用。
// EPI0S30用作 CSN/CEN
HWREG (EPI0_BASE + EPI_O_HB16CFG2)= EPI_HB16CFG2_CSCFGEXT |EPI_HB16CFG2_CSCFG_CS;
//初始化变量。
test_fail_cnt = 0;
test_cnt = 0;
while (1)
{
//递增测试计数号
test_cnt++;
GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_7、0);
//简单的读/写访问(半字)。
test_fail_cnt += mem_read_write ();
//不同的数据类型访问。
test_fail_cnt += mem_data_size ();
//存储器访问在数据线上具有0 -> 1 -> 0模式。
test_fail_cnt += mem_data_walk ();
//存储器访问可切换地址行的所有位。
test_fail_cnt += mem_addr_walk ();
//驱动'1' EPI0S31/A20以访问更高的内存
GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_7、1);
//简单的读/写访问(半字)。
test_fail_cnt += mem_read_write ();
//不同的数据类型访问。
test_fail_cnt += mem_data_size ();
//存储器访问在数据线上具有0 -> 1 -> 0模式。
test_fail_cnt += mem_data_walk ();
//存储器访问可切换地址行的所有位。
test_fail_cnt += mem_addr_walk ();
}
}
user5358342、
恐怕我无法对您的设置进行心理仿真。
您能描述一下您观察到的一些具体行为吗? 您能否对 SRAM 引脚进行检测、以查看信号是否按预期工作? 您可以将引脚活动与 数据表 和 TRM 中的波形图进行比较。
Tommy
很抱歉、我没有 具体描述问题。现在、我已经了解了 SRAM 引脚、发现了两个问题。
第一个是 We 的信号 是 CS0 。的相位超前信号
第二个是连接 A11的引脚 、没有信号波形。
我已检查 CSCFGEXT、CSCFG 设置是否为0x7。 同时,EPIO37-A12具有相同的设置,但 工作正常。
,我尝试根据步骤检查将 A11连接到网络上的 PB7引脚。(PB7-A11;PB6-A12)。PB7未连接任何设备。
但 PB7的电平始终为低电平(0)。 可以帮助我找到导致问题的原因吗?
现在,我很感激你总是有耐心来满足我的要求。
今天,用于连接 CS0的 SRAM1正在工作。 我可以写入一个特殊日期、然后在同一存储器地址中读取正确的日期。
1: CCS 存储器窗口无法读回 正确的值。
2:、当我。连接 CS2。的 SRAM2时、芯片将处于复位周期(连接 XRS 和 ARS 的引脚将在短时间内处于低电平)。CS2连接 PE4-GPIO28 μ F
现在,我还没有找到解决问题的方法。
[引用 user5358342]今天,用于连接 CS0的 SRAM1正在工作。 我可以写入一个特殊日期、然后在同一存储器地址中读取正确的日期。
1: CCS 存储器窗口无法读回 正确的值。[/quot]
CCS 通过您正在调试的 CPU 访问 SRAM 来填充存储器窗口。 如果您能够通过程序执行来访问 SRAM、则应该能够在程序的同一时刻(例如、在一个断点处)通过 CCS 读取存储器内容。 如果访问0x60000000处的存储器空间、请确保已选择 Cortex_M3:
[。用户="user5358342]2:当我要使用连接 CS2的 SRAM2。时,芯片将处于复位周期(连接 XRS 和 ARS 的引脚将在短时间内处于低电平),CS2将连接 PE4-GPIO28 μ F
现在,我没有找到问题的解决方案。
第一个问题是它仍然不起作用。
CCS 中的虚线意味着存储器区域未配置为可见性。 此信息包含在目标配置 GEL 文件中。 您可以从 CCS Debug 视图中查看 GEL 文件、方法是选择目标内核(本例中为 M3)和 Tools >> GEL Files。
您可以使用有关0x60000000地址空间的信息更新 CCS 存储器映射、也可以完全绕过 CCS 存储器映射功能。
要绕过该功能,请注释掉 START()中除 MapOff 外的所有 Memory Map 函数调用:
热菜单启动() { /*加载 CortexM3_util.gel 文件*/ GEL_LoadGel ("$(GEL_file_dir)/CortexM3_util.gel"); GEL_MapOff (); /* GEL_MapReset(); GEL_MapOn(); F28M35H52C1_Memory_Map (); */ }
若要添加0x60000000的定义、请修改 F28M35H52C1_Memory_Map 函数以包括:
GEL_MapAddStr (0x60000000、0、 ,"R|W",0); /* EPI CS0
[引用 user5358342]\n 现在,我可以在 SRAM1和 SRAM2中读取和写入数据。
但 该过程在 master-M3中工作,我希望该过程可以在 control-C2。中工作
我n‘t 了以下错误,但我不知道如何 解决这个问题。