3814|0

1702

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

NuMaker-IIoT-NUC980 测评之 EBI [复制链接]

作者:啊华田

简介

NUC980配有外部总线接口(EBI),供外部设备使用。EBI支持地址总线和数据总线独立模式和复用模式,地址总线最大支持1MB地址空间,数据总线最大支持16bit宽度;EBI支持3路片选信号,可直连三个外部设备,并且3个片选信号可以单独设置读写时序。

功能模块的硬件介绍

 
 
 

官方手册介绍

从NuMaker-IIoT-NUC980开发板的原理图上可以看到,EBI总线的部分信号引出到了CON11上,信号包括,地址总线ADDR[8~10]、数据总线DATA[0~15]、片选nCS0、读使能nRE、写使能nWE。

功能模块的使用说明

 
 
 

硬件环境

NuMaker-IIoT-NUC980 开发板(为了方便测试,需要给CON11焊接2.54mm双排针)
两个USB数据线(一条接VCOM,另一条接USB0)
saleae logic逻辑分析仪(若干测试线),CH0~7对接EBI_DATA0~7、CH8对接EBI_nWE、CH15对接EBI_nRE、CH10对接EBI_nCS0、CH11~13对接EBI_ADDR8~10

软件环境

RT-Thread Studio
NuWriter
SecureCRT

模块功能的测试演示

 
 
 

在RT-Thread Studio环境中,基于NK-980IOT开发板创建项目;项目创建完成后,在文件中,增加ebi总线的相关初始化代码,初始化内容包含HCLK时钟、ebi模块时钟使能以及ebi总线IO复用功能配置,如下:

然后将nu_pin_ebi_init()函数增加到nu_pin_init()函数中。
创建文件,实现ebi总线测试的read和write函数,并添加到msh命令中,代码如下:

/**************************************************************************//**

*

* @copyright (C) 2019 Nuvoton Technology Corp. All rights reserved.

*

* SPDX-License-Identifier: Apache-2.0

*

* Change Logs:

* Date            Author       Notes

* 2022-03-26       yzh         First version

*

******************************************************************************/

 

#include

#include

#include

#include

 

 

static void ebi_open(void)

{

    EBI_Open(EBI_BANK0,EBI_BUSWIDTH_8BIT,EBI_TIMING_NORMAL,EBI_OPMODE_NORMAL,EBI_CS_ACTIVE_LOW);/*初始化ebi总线cs0*/

    EBI_SetBusTiming(EBI_BANK0,0x03003318U,EBI_MCLKDIV_128);/*TAHD=3,TACC=3*/

}

static void ebi_close(void)

{

    EBI_Close(EBI_BANK0);/*关闭ebi总线cs0*/

}

static void ebi_read(int argc, char**argv)

{

    uint32_t addr;

    uint8_t bus_val;

 

    sscanf(argv[1],"0x%x",&addr);

    if(addr < 0x60000000 || addr > 0x600fffff)

    {

        rt_kprintf("%s@nk980iot: illegal address.\n",argv[0],addr);

        return;

    }

    ebi_open();

    bus_val = *((volatile uint8_t *)addr);

    ebi_close();

 

    rt_kprintf("%s@nk980iot: addr - 0x%x, data - 0x%x\n",argv[0],addr,bus_val);

}

 

MSH_CMD_EXPORT(ebi_read, ebi_read sample: ebi_read);

 

static void ebi_write(int argc, char**argv)

{

    uint32_t addr;

    uint32_t bus_val;

/*

    for(int i; i

    {

        rt_kprintf("argc:%d, argv:%s\n",i,argv);

    }

*/

    sscanf(argv[1],"0x%x",&addr);

    if(addr < 0x60000000 || addr > 0x600fffff)

    {

        rt_kprintf("%s@nk980iot: illegal address.\n",argv[0],addr);

        return;

    }

 

    sscanf(argv[2],"0x%x",&bus_val);

 

    ebi_open();

    *((volatile uint8_t *)addr) = (uint8_t)bus_val;

    ebi_close();

 

    rt_kprintf("%s@nk980iot: addr - 0x%x, data - 0x%x\n",argv[0],addr,bus_val);

}

 

MSH_CMD_EXPORT(ebi_write, ebi_write sample: ebi_write);

在RT-Thread Studio环境中构建成功后,使用NuWriter将可程序文件“rtthread.bin”下载到开发板上。

程序文件和开发板连线准备完毕,打开SecureCRT,执行下载程序步骤,系统启动成功,可以看到在Finsh控制台已经增加了ebi读写命令。

读功能测试

首先,将EBI_DATA1信号连接至VDD33信号上(其他信号连接逻辑分析仪默认低电平),这样8位数据总线上的数据为0x02;

再根据芯片手册定义CS0地址空间为0x60000000~0x600FFFFF,并且地址总线使用了EBI_ADDR8~10,因此使用0x60000500(bit8~10为b101)作为读写测试地址;
在Finsh控制台上输入,可以看到返回了0x02,证明EBI读数据功能成功;

分析逻辑分析仪上捕捉到的写操作波形如下,

从逻辑分析仪上捕捉到的读操作波形上可以看到,CH1-DATA1为高电平,其余DATA信号为低电平,正确;CH11~13对接ADDR8~10信号为b101,正确。

读时序分析

进行时序分析前,我们先根据官方手册的时序图和ebi初始化配置来计算理论的时间参数;
1)tASU(nCS active to nRE active),芯片固定为1MCLK,根据初始化配置MCLK = HCLK / DIV = 150M /128,因此tASU = 0.853us;
2)tACC(nRE active width),根据初始化配置为4MCLK,因此tACC = 3.413us;
3)tAHD(nRE deactive to nCS deactive),根据初始化配置为4MCLK,因此tAHD = 3.413us;
接着分析逻辑分析仪上捕捉到的读操作波形,首先在nCS的下降沿,地址总线同时输出;nCS下降沿后经过0.875us(tASU),nRE出现下降沿;nRE低电平状态持续

3.375us(tACC);nRE出现上升沿后经过3.438us(tAHD),nCS出现上升沿。
综上分析,测试EBI总线读时序基本和官方手册描述一致(逻辑分析仪由于采样频率不够导致时间有一定的误差)。

写功能测试

在Finsh控制台上输入

分析逻辑分析仪上捕捉到的写操作波形如下,

从逻辑分析仪上捕捉到的写操作波形上可以看到,在nWE上升沿时刻,数据总线CH0~7-DATA0~7为b01010101(0x55),正确;CH11~13对接ADDR8~10信号为b101,正确。

写时序分析

进行时序分析前,我们先根据官方手册的时序图和ebi初始化配置来计算理论的时间参数;
1)tASU(nCS active to nWE active),芯片固定为1MCLK,根据初始化配置MCLK = HCLK / DIV = 150M /128,因此tASU = 0.853us;
2)tACC(nWE active width),根据初始化配置为4MCLK,因此tACC = 3.413us;
3)tAHD(nWE deactive to nCS deactive),根据初始化配置为4MCLK,因此tAHD = 3.413us;
接着分析逻辑分析仪上捕捉到的写操作波形,首先在nCS的下降沿,地址总线同时输出;nCS下降沿后经过0.875us(tASU),nWE出现下降沿;nWE低电平状态持续

3.375us(tACC);nWE出现上升沿后经过3.438us(tAHD),nCS出现上升沿。
综上分析,测试EBI总线写时序基本和官方手册描述一致(逻辑分析仪由于采样频率不够导致时间有一定的误差)。

可编译下载的代码

 
 
 

https://github.com/fever123123/Test-EBI-NK908iot.git

心得体会

 
 
 

NUC980的EBI模块对比NUC970,优点是EBI模块配置功能简化,时序简明;缺点是模块功能阉割,片选信号减少,时序可配性降低。

此帖出自单片机论坛
点赞 关注
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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