打印
[技术问答]

NUC130VE3CN芯片EBI功能

[复制链接]
1374|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qjwlj145|  楼主 | 2017-2-6 14:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在弄W5100用总线和NUC130通信,根据EBI功能说明和BSP提供的代码进行了相应的设置,发现这个外部总线接口好像未打开,W5100是8位数据,16位地址,中间加了锁存芯片的;发现在进行配置后,进行寄存器读写时候,相应的CS信号,ALE信号并没有出现,怀疑是EBI配置有问题,但是是按照BSP里的EBI例程配置的,应该不会有问题,请问大神们有用EBI做这种功能的吗?谢谢大神们的不吝赐教啊;
沙发
huangcunxiake| | 2017-2-6 14:38 | 只看该作者
按照手册上给的连接方式图连接的吗?

使用特权

评论回复
板凳
huangcunxiake| | 2017-2-6 14:43 | 只看该作者
确认一下连接方式是否正确。。。这个不是标准的那个链接方式。。

使用特权

评论回复
地板
稳稳の幸福| | 2017-2-6 16:54 | 只看该作者
没用过这个接口。

使用特权

评论回复
5
qjwlj145|  楼主 | 2017-2-6 19:15 | 只看该作者
huangcunxiake 发表于 2017-2-6 14:43
确认一下连接方式是否正确。。。这个不是标准的那个链接方式。。

是按照8位数据宽度的链接方式接的;这里面将W5100的8个数据线直接接到MCU的AD0-AD7上,同时AD0-AD7还将线链接到锁存芯片573上的D口,然后Q口输出接到W5100的AD0-AD7上,AD8-AD15直接接到W5100芯片的AD8-AD15上去;然后573的锁存管脚接到NUC130的ALE信号管脚上,WR、RD、CS、都一一对应了的;在对W5100进行读写操作时候,用示波器观察发现连CS信号都没有拉低。很困惑啊

使用特权

评论回复
6
qjwlj145|  楼主 | 2017-2-6 19:20 | 只看该作者
在补充一下,EBI的初始化函数:
void InitEBISettings(void)
{
        uint8_t        *BaseAddr;
        uint16_t  cnt,i;
        static uint8_t a,b,c,d;
        DRVEBI_CONFIG_T        sEBIConfig;
        DRVEBI_TIMING_T        sEBITiming;
        uint32_t u32SysHCLKFreq = SystemCoreClock;
       
        // Open EBI function
        sEBIConfig.eDataWidth                = E_DRVEBI_DATA_8BIT;
        sEBIConfig.eAddrWidth                = E_DRVEBI_ADDR_16BIT;
        sEBIConfig.u32BaseAddress         = DRVEBI_BASE_ADDR;
        sEBIConfig.u32Size                         = DRVEBI_MAX_SIZE;
        DrvEBI_Open(sEBIConfig);
                                                          
        // Configure EBI timing
    u32SysHCLKFreq = DrvSYS_GetHCLKFreq();
   
   
   sEBITiming.eMCLKDIV         = E_DRVEBI_MCLKDIV_1;
   

        sEBITiming.u8ExttALE = 1;
        sEBITiming.u8ExtIR2R = 0;
        sEBITiming.u8ExtIW2X = 0;
        sEBITiming.u8ExttAHD = 1;
        sEBITiming.u8ExttACC = 1;
        DrvEBI_SetBusTiming(sEBITiming);

        // Get EBI timing
        DrvEBI_GetBusTiming(&sEBITiming);
        //----------------------------------------base add----------------------------------//
        BaseAddr = (uint8_t *)DRVEBI_BASE_ADDR;
       
        //------------------------------------soft reset----------------------------------------------//
                        //*(BaseAddr+0) = 0x80;
        //----------------------------------------------------------------------------------//
        cnt=500;
        while(cnt)
        {
        cnt--;
       
        }       
        //-------------------------------write data-------------------------------------------------//
        for(i=0;i<10000;i++)
        {
                *(BaseAddr+1) = 0xC0;
                        cnt=10000;
                while(cnt)
                {
                cnt--;
               
                }
        }
        //*(BaseAddr+6) = 0xA8;
        //*(BaseAddr+7) = 0x00;
        //*(BaseAddr+8) = 0x01;       
       
        //-------------------------------read data----------------------------------------------------//
                a=*(BaseAddr+5);
                b=*(BaseAddr+6);
                c=*(BaseAddr+7);
                d=*(BaseAddr+8);
}
这里面过程是先配置EBI,然后对相关寄存器直接写数据,在读操作,发现读的数据全为0,用示波器观察发现相应的CS信号和ALE信号没有出来;

使用特权

评论回复
7
fzr2008| | 2017-3-8 16:27 | 只看该作者
我也遇到这个问题,我使用的是NUC100VE3DN  发现PDF资料 配置ALE  CS  RD  WR 没有配置说明.

使用特权

评论回复
8
夏满竹| | 2020-3-29 13:19 | 只看该作者
mark

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

12

帖子

0

粉丝