3596|0

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于LM3S的EPI 通用模式数据读取! [复制链接]

接触EPI时间不多,遇到一些问题。采用通用8位数据模式与CPLD进行高速数据传输,只需要读取CPLD的数据。以下是初始化代码:
//系统时钟100MHZ
SysCtlClockSet(SYSCTL_SYSDIV_2| SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |
                       SYSCTL_OSC_MAIN);

//使能各IO
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);

//设置IO口功能
GPIOPinConfigure(GPIO_PH3_EPI0S0);
GPIOPinConfigure(GPIO_PH2_EPI0S1);
GPIOPinConfigure(GPIO_PC4_EPI0S2);
GPIOPinConfigure(GPIO_PC5_EPI0S3);
GPIOPinConfigure(GPIO_PC6_EPI0S4);
GPIOPinConfigure(GPIO_PC7_EPI0S5);
GPIOPinConfigure(GPIO_PH0_EPI0S6);
GPIOPinConfigure(GPIO_PH1_EPI0S7);
GPIOPinConfigure(GPIO_PJ4_EPI0S28);
GPIOPinConfigure(GPIO_PJ5_EPI0S29);
GPIOPinConfigure(GPIO_PJ6_EPI0S30);
GPIOPinConfigure(GPIO_PG7_EPI0S31);
GPIOPinConfigure(GPIO_PF2_LED1);
  GPIOPinConfigure(GPIO_PF3_LED0);


//使能EPI模块
  SysCtlPeripheralEnable(SYSCTL_PERIPH_EPI0);

GPIOPadConfigSet(GPIO_PORTC_BASE,EPI_PORTC_PINS,GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPD);
GPIOPadConfigSet(GPIO_PORTH_BASE,EPI_PORTH_PINS,GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPD);
GPIOPadConfigSet(GPIO_PORTJ_BASE,EPI_PORTJ_PINS,GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPD);
GPIOPadConfigSet(GPIO_PORTG_BASE,GPIO_PIN_7,GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPD);

GPIODirModeSet(GPIO_PORTC_BASE,EPI_PORTC_PINS,GPIO_DIR_MODE_HW);
GPIODirModeSet(GPIO_PORTH_BASE,EPI_PORTH_PINS,GPIO_DIR_MODE_HW);
GPIODirModeSet(GPIO_PORTJ_BASE,EPI_PORTJ_PINS,GPIO_DIR_MODE_HW);
GPIODirModeSet(GPIO_PORTG_BASE,GPIO_PIN_7,GPIO_DIR_MODE_HW);

EPIDividerSet(EPI0_BASE,1);        //EPI时钟为系统时钟的1/2
EPIModeSet(EPI0_BASE,EPI_MODE_GENERAL);        //通用模式

EPIConfigGPModeSet(EPI0_BASE,      EPI_GPMODE_CLKPIN|EPI_GPMODE_READ2CYCLE|EPI_GPMODE_READWRITE|EPI_GPMODE_ASIZE_NONE|EPI_GPMODE_DSIZE_8,0,0 );//无地址,8位数据,CLK,RDWR,读取2周期
EPIAddressMapSet(EPI0_BASE,EPI_ADDR_PER_SIZE_64KB|EPI_ADDR_PER_BASE_NONE);

while(HWREG(EPI0_BASE + EPI_O_STAT) & EPI_STAT_INITSEQ)
  {
  }

EPIFIFOConfig(EPI0_BASE,EPI_FIFO_CONFIG_RX_FULL);   //设置FIFO满中断
EPIIntRegister(EPI0_BASE,EpiIntHander);                                   //注册中断函数
EPINonBlockingReadConfigure(EPI0_BASE,0,EPI_NBCONFIG_SIZE_8,0);   //非阻塞读取设置,8位数据
EPIIntEnable(EPI0_BASE,EPI_INT_RXREQ);  //开启EPI  RX FIFO 中断

IntMasterEnable();    //使能总中断
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
关于之后的数据读取是如何进行的?
EPINonBlockingReadGet8(EPI0_BASE,ulCount,pucBuf);如何使用? 看手册ulCount <4096 ,可是8字节的NBRFIFO ,如何读取大于NBRFIFO的数据?
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表