工具/软件:Code Composer Studio
您好!
我一直在尝试让 TM4C129上的 EPI 在多路复用的8位主机总线模式下工作、但运气不佳。 代码片段如下所示、请告诉我出错了。 在示波器上、我监视 AD0、ALE、WRn、RDN、没有任何内容切换。
////////////////////////////////////////////////////////////////////////////////////////////////////
//从链接器文件
//////////////////////////////////////////////////////////////////////////////////////////////////
--retain=g_pfnVectors
#define NOINIT_RAM_SIZE 0x10
#define FPGA_BASE 0xA0000000
存储器
{
闪存(RX) :origin = 0x00004400, length = 0x00100000 - 0x4400
SRAM (rwx) :origin = 0x20000000、 length = 0x00040000 - NOINIT_RAM_SIZE
NOINIT_RAM (rwx) :origin = end (SRAM), length = NOINIT_RAM_SIZE
/*应用使用外部 FPGA 存储器映射的 reSigma 转接器*/
FPGA (rwx) :origin = FPGA_BASE, length = 0x00010000
}
部分
{
.intvecs :> 0x00004400
.text : > FLASH
.const : > FLASH
.cinit : >闪存
.pinit : > FLASH
init_array:> FLASH
.vtable :>0x20000000
.data : > SRAM
.bss : > SRAM
.sysmem :> SRAM
.stack : > SRAM
外部:> FPGA
noinit: > NOINIT_RAM,type = NOINIT
}
__STACK_TOP =__STACK + 512;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//EPI 初始化
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//下面的规定了当时 EPI 总线使用的 GPIO 管脚
//配置为 HostBus8模式。 使用 AD[0...7]& A[8...15]、WRn、RDN 和 ALE
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define EPI_PORta_Pins 0xC0 //用于地址 A[9:8]的引脚[7:6]
#define EPI_PORTB_Pins 0x04 //引脚[2]用于 RD_STROBE
#define EPI_PORTC_Pins 0xF0/// 用于 AddrData AD[7:4]的引脚[4:7]
#define EPI_PORTD_Pins 0x00 //不被 EPI 使用
#define EPI_PORT_PINS 0x00 //不被 EPI 使用
#define EPI_PORTF_Pins 0x00 //不被 EPI 使用
#define EPI_PORTG_Pins 0x03 //用于 ADDR A[11:10]的引脚[0:1]
#define EPI_PORTH_PINS 0x0F //PINS [3:0]用于 AddrData AD[3:0]
#define EPI_PORTJ_PINS 0x00 //不被 EPI 使用
#define EPI_PORTK_Pins 0x00 //不被 EPI 使用
#define EPI_PORTL_Pins 0x07 //用于 Addr[18:16]的引脚[2:0]
#define EPI_PORTM_Pins 0x0F //用于 Addr[15:12]的 PIN[0:3]
#define EP_PORTN_Pins 0x00 // EP 未使用
#define EPI_PORTP_Pins 0x0C ///PIN[2]用于 WR_STROBE、PIN[3]用于 ALE
#define EPI_PORTQ_PINS 0x00 //不被 EPI 使用
//启用所有 GPIO 组。
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOH);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOM);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);
/*
GPIOPadConfigSet (GPIO_Porta_base、EPI_Porta_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_Porta_base、EPI_Porta_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTB_BASE、EP_PORTB_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTB_BASE、EP_PORTB_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTC_BASE、EP_PORTC_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTC_BASE、EP_PORTC_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTD_base、EP_PORTD_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTD_base、EP_PORTD_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_Porte _BASE、EPI_Porte 引脚、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_Porte _BASE、EPI_Porte 引脚、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTF_BASE、EP_PORTF_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTF_BASE、EP_PORTF_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTG_base、EP_PORTG_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTG_base、EP_PORTG_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_Porth_BASE、EPI_Porth_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_Porth_BASE、EPI_Porth_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTJ_BASE、EP_PORTJ_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTJ_BASE、EP_PORTJ_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTK_base、EP_PORTK_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTK_base、EPI_PORTK_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTL_base、EP_PORTL_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTL_base、EPI_PORTL_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTM_BASE、EP_PORTM_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTM_BASE、EP_PORTM_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTN_BASE、EP_PORTN_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTN_BASE、EP_PORTN_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTP_BASE、EP_PORTP_PINS、GPIO_FORMENT_8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTP_BASE、EP_PORTP_Pins、GPIO_DIR_MODE_HW);
GPIOPadConfigSet (GPIO_PORTQ_BASE、EP_PORTQ_Pins、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);
GPIODirModeSet (GPIO_PORTQ_BASE、EPI_PORTQ_Pins、GPIO_DIR_MODE_HW);
*
//
// EPI0 EPI0S0的使能引脚 PH0
//
MAP_GPIOPinConfigure (GPIO_PH0_EPI0S0);
GPIOPinTypeEPI (GPIO_Porth_BASE、GPIO_PIN_0);
//
// EPI0 EPI0S1的使能引脚 PH1
//
MAP_GPIOPinConfigure (GPIO_PH1_EPI0S1);
GPIOPinTypeEPI (GPIO_Porth_BASE、GPIO_PIN_1);
//
// EPI0 EPI0S2的使能引脚 PH2
//
MAP_GPIOPinConfigure (GPIO_PH2_EPI0S2);
GPIOPinTypeEPI (GPIO_Porth_BASE、GPIO_PIN_2);
//
// EPI0 EPI0S3的使能引脚 PH3
//
MAP_GPIOPinConfigure (GPIO_PH3_EPI0S3);
GPIOPinTypeEPI (GPIO_Porth_BASE、GPIO_PIN_3);
//
// EPI0 EPI0S4的使能引脚 PC7
//
MAP_GPIOPinConfigure (GPIO_PC7_EPI0S4);
GPIOPinTypeEPI (GPIO_PORTC_BASE、GPIO_PIN_7);
//
// EPI0 EPI0S5的使能引脚 PC6
//
MAP_GPIOPinConfigure (GPIO_PC6_EPI0S5);
GPIOPinTypeEPI (GPIO_PORTC_BASE、GPIO_PIN_6);
//
// EPI0 EPI0S6的使能引脚 PC5
//
MAP_GPIOPinConfigure (GPIO_PC5_EPI0S6);
//GPIOPinTypeEPI (GPIO_PORTC_BASE、GPIO_PIN_5);
//
// EPI0 EPI0S7的使能引脚 PC4
//
MAP_GPIOPinConfigure (GPIO_PC4_EPI0S7);
GPIOPinTypeEPI (GPIO_PORTC_BASE、GPIO_PIN_4);
//
// EPI0 EPI0S8的使能引脚 PA6
//
MAP_GPIOPinConfigure (GPIO_PA6_EPI0S8);
GPIOPinTypeEPI (GPIO_Porta_base、GPIO_PIN_6);
//
// EPI0 EPI0S9的使能引脚 PA7
//
MAP_GPIOPinConfigure (GPIO_PA7_EPI0S9);
GPIOPinTypeEPI (GPIO_Porta_base、GPIO_PIN_7);
//
// EPI0 EPI0S10的使能引脚 PG1
//
MAP_GPIOPinConfigure (GPIO_PG1_EPI0S10);
GPIOPinTypeEPI (GPIO_PORTG_base、GPIO_PIN_1);
//
// EPI0 EPI0S11的使能引脚 PG0
//
MAP_GPIOPinConfigure (GPIO_PG0_EPI0S11);
GPIOPinTypeEPI (GPIO_PORTG_base、GPIO_PIN_0);
//
// EPI0 EPI0S12的使能引脚 PM3
//
MAP_GPIOPinConfigure (GPIO_PM3_EPI0S12);
GPIOPinTypeEPI (GPIO_PORTM_BASE、GPIO_PIN_3);
//
// EPI0 EPI0S13的使能引脚 PM2
//
MAP_GPIOPinConfigure (GPIO_PM2_EPI0S13);
GPIOPinTypeEPI (GPIO_PORTM_BASE、GPIO_PIN_2);
//
// EPI0 EPI0S14的使能引脚 PM1
//
MAP_GPIOPinConfigure (GPIO_PM1_EPI0S14);
GPIOPinTypeEPI (GPIO_PORTM_BASE、GPIO_PIN_1);
//
// EPI0 EPI0S15的使能引脚 PM0
//
MAP_GPIOPinConfigure (GPIO_PM0_EPI0S15);
GPIOPinTypeEPI (GPIO_PORTM_BASE、GPIO_PIN_0);
//
// EPI0 EPI0S16的使能引脚 PL0
//
MAP_GPIOPinConfigure (GPIO_PL0_EPI0S16);
GPIOPinTypeEPI (GPIO_PORTL_BASE、GPIO_PIN_0);
//
// EPI0 EPI0S17的使能引脚 PL1
//
MAP_GPIOPinConfigure (GPIO_PL1_EPI0S17);
GPIOPinTypeEPI (GPIO_PORTL_BASE、GPIO_PIN_1);
//
// EPI0 EPI0S18的使能引脚 PL2
//
MAP_GPIOPinConfigure (GPIO_PL2_EPI0S18);
GPIOPinTypeEPI (GPIO_PORTL_BASE、GPIO_PIN_2);
//
// EPI0 EPI0S28的使能引脚 PB3
//
MAP_GPIOPinConfigure (GPIO_PB3_EPI0S28);
GPIOPinTypeEPI (GPIO_PORTB_BASE、GPIO_PIN_3);
//
// EPI0 EPI0S29的使能引脚 PN2
//
MAP_GPIOPinConfigure (GPIO_PP2_EPI0S29);
GPIOPinTypeEPI (GPIO_PORTP_BASE、GPIO_PIN_2);
//
// EPI0 EPI0S30的使能引脚 PN3
//
MAP_GPIOPinConfigure (GPIO_PP3_EPI0S30);
GPIOPinTypeEPI (GPIO_PORTP_BASE、GPIO_PIN_3);
//启用 EPI 外设
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_EPI0);
//为 FPGA 接口设置 EPI 工作模式
//此处使用的值将 EPI 设置为在 system_clock/16=7.5MHz 下运行
// AddrData 的前8位复用
//对于电源,两个等待状态,这是等待0,这是两个 EPI 时钟
EPImodeSet (EPI0_BASE、EPI_MODE_HB8);
EPIDividerSet (EPI0_BASE、16);
//EPIConfigHB8Set (EPI0_BASE、(EPI_HB8_MODE_ADMUX | EPI_HB8_WRWAIT_0 |
///EPI_HB8_RDWAIT_0 | EPI_HB8_WORD_ACCESS)、0);
EPIConfigHB8Set (EPI0_BASE、(EPI_HB8_MODE_ADMUX | EPI_HB8_WRWAIT_0 |
EPI_HB8_RDWAIT_0)、0);
EPIAddressMapSet (EPI0_BASE、EPI_ADDR_RAM_SIZE 64KB | EPI_ADDR_PER_BASE_A);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//简单的测试用法
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define FPGA_BASE 0xA0000000
volatile uint16_t * FPGAptr =((uint16_t *) FPGA_BASE);
int main (空)
{
uint32_t i;
对于(I = 0;I < 32768;I++)
{
FPGAPTR[i]= i;
}
对于(I = 0;I < 32768;I++)
{
PTR[i]= FPGAPPTR[i];
}
}