EM9287是英创公司新近推出的,专门针对网络通讯应用的工控主板产品,通讯接口方面以独立双以太网口、双CAN接口以及7路标准串口为特色。若客户应用有HMI的需求,通常可选择预装Windows CE6.0操作系统的主板产品,另一方面,若不需要图形显示功能的,选择预装Linux-3.9.7操作系统的EM9287,则更能发挥其网络通讯的能力。进一步的,EM9287可把未使用的LCD显示接口转换成16-bit的精简ISA扩展总线,作为主板与客户专用电路单元的数据传输通道。EM9287的精简ISA总线的数据传输速度最高可达8MB/s,可满足绝大多数用户扩展电路的数据传输需求。本文以下部分,主要介绍EM9287的精简ISA总线的威廉希尔官方网站 特性,以及在Linux环境下,应用程序实现ISA总线数据读写的方法。
EM9287主板上共有4组接口排针,分别命名为CN1 – CN4,如下图所示:

EM9287的CN1 – CN4所在位置示意图
其中的CN4即为精简ISA总线的接口排针。由于LCD显示被作为了EM9287的标准配置,因此一般情况下,EM9287只焊了CN3插座,没有焊CN4的插针。若客户要求所购的EM9287支持精简ISA总线,则需要在购买时特别申明此需求。注意,支持精简ISA总线的EM9287主板,不再焊接CN3插座,而是带有CN4双排插针。与CN1和CN2不一样,CN4为2mm间距的双排插针。
CN4上个插针的信号定义如下表:
| 信号名称及简要描述 | CN4 | 信号名称及简要描述 | |
| PIN# | PIN# | ||
| NC | 1 | 2 | ISA_CS#,ISA总线片选信号 |
| ISA_RD#,ISA总线读信号 | 3 | 4 | ISA_WE#,ISA总线写信号 |
| ISA_A0,ISA地址总线 | 5 | 6 | ISA_A1,ISA地址总线 |
| ISA_A2,ISA地址总线 | 7 | 8 | ISA_A3,ISA地址总线 |
| ISA_A4,ISA地址总线 | 9 | 10 | ISA_A5,ISA地址总线 |
| ISA_A6,ISA地址总线 | 11 | 12 | ISA_A7,ISA地址总线 |
| ISA_D0,ISA数据总线(LSB) | 13 | 14 | ISA_D1,ISA数据总线 |
| ISA_D2,ISA数据总线 | 15 | 16 | ISA_D3,ISA数据总线 |
| ISA_D4,ISA数据总线 | 17 | 18 | ISA_D5,ISA数据总线 |
| ISA_D6,ISA数据总线 | 19 | 20 | ISA_D7,ISA数据总线 |
| ISA_D8,ISA数据总线 | 21 | 22 | ISA_D9,ISA数据总线 |
| ISA_D10,ISA数据总线 | 23 | 24 | ISA_D11,ISA数据总线 |
| ISA_D12,ISA数据总线 | 25 | 26 | ISA_D13,ISA数据总线 |
| ISA_D14,ISA数据总线 | 27 | 28 | ISA_D15,ISA数据总线(MSB) |
| GND | 29 | 30 | GND |
| 3.3V 电源输出 | 31 | 32 | 3.3V 电源输出 |
所有接口信号的电平均为3.3V TTL。EM9287的精简ISA总线支持双向16-bit数据总线,8位地址总线,以及3条控制总线。3条总线控制信号(片选、读脉冲、写脉冲)均为低电平有效。单数据读写的总线周期为360ns,而多数据读写的总线则只有240ns,可保证每秒8M字节的数据吞吐能力。精简ISA总线的典型总线时序如下:

单数据写时序

单数据读时序

数据块写时序

数据块读时序
精简ISA总线驱动的设备节点为“/dev/em9287_isa”,通过标准的文件open函数打开:
int fd;
fd = open('/dev/em9287_isa', O_RDWR);
EM9287精简ISA总线的地址范围为0 – 255。为了简化应用程序,避免使用ioctl专用定义,总线地址通过标准函数lseek来设置:
unsigned int offset;
//设置地址到offset
lseek(fd, offset, SEEK_SET);
总线读写的数据尽管只有16位,但驱动程序要求的数据类型为32位格式,具体可选unsigned int或u32。32位变量中的低16位为真正的总线数据,高16位无意义。调用函数write将启动总线写,调用函数read将启动总线读。
写操作的基本调用形式为:
int rc;
unsigned int buf[]; //数据buffer
unsigned int len; //实际写的数据长度
//准备需要写出的数据....
rc = write(fd, buf, len * sizeof(unsigned int));
相应地,读操作的基本调用形式为:
rc = read(fd, buf, len * sizeof(unsigned int));
//处理在buf的读取数据....
读写数据的长度至少为1,最长不能超过16K(16384)。在进行数据块读写时,需要注意,16K数据的读或写将耗时4ms,而Linux分给每个线程的时间片最长只有10ms。一般情况下,为了保证系统的及时响应,每个线程运行的时间都不宜过长。
-
WINDOWS
+关注
关注
3文章
3540浏览量
88588 -
嵌入式主板
+关注
关注
7文章
6085浏览量
35292
发布评论请先 登录
相关推荐
拓维信息参与牵头组建!长沙新一代信息威廉希尔官方网站 产教联合体正式获批
中科创达荣获2024年软件和信息威廉希尔官方网站 服务优秀企业
易智瑞荣获“信息威廉希尔官方网站 应用创新工作委员会威廉希尔官方网站 活动单位”
信创国产化背景下的工控主板发展现状
加速鲲鹏落地!拓维信息信创迁移工具荣获鲲鹏原生开发威廉希尔官方网站 认证
梯度科技入选2023年信息威廉希尔官方网站 应用创新解决方案名单
中软国际信创服务助力大连信创产业发展
翼辉信息入选2023年信息威廉希尔官方网站 应用创新解决方案名单
ZCAN总线ZMIO310扩展模块应用指南
光庭信息荣膺武汉市侨届“科创之星”称号
中创股份今日登陆科创板
龙芯中科三项信创方案入围工信部2023年信息威廉希尔官方网站 应用创新应用示范案例名单
RX78M组 EtherCAT ETG.5003示例程序固件信息威廉希尔官方网站

英创信息威廉希尔官方网站
EM9287的扩展总线及应用介绍
评论