0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

精简ISA扩展总线接口读写操作

英创信息技术 作者:英创信息技术 2019-10-17 11:26 次阅读

英创公司的嵌入式主板系列产品为了支持客户的各种应用扩展,所有的ARM9系列和X86系列的嵌入式主板均带有精简ISA扩展总线。ISA总线是PC机最经典的扩展总线(在嵌入式领域,通常以PC104总线的形式出现),在工业控制领域有着广泛的应用,以及深厚的应用基础。所谓精简ISA总线就是在保持通用ISA总线时序不变的前提下,仅保留常用的总线信号,以最大限度的减少总线总的信号数量,以适应模块的小型化。英创公司的精简ISA总线包括8位数据总线、5位地址总线(可扩展到13位)、片选控制线、读写控制线以及中断请求线。英创公司所提供的评估开发底板将这些信号线制定了一个接口标准,采用双排20芯 IDC插针,用户可利用精简ISA总线进行系统功能的扩展。

在英创的精简ISA总线中,设置了2条独特的片选控制信号CS0#和CS1#,这样就省去了大量的高位地址总线。CS0#和CS1#为低电平有效的脉冲信号。在x86 系列的嵌入式产品中,CS0#片选信号的地址区域为0x200–0x21F,CS1#片选信号的地址区域为0x300 – 0x31F。在ARM9系列的嵌入式产品中,客户就不用关心精简ISA总线的绝对地址,只要选定一个片选信号及基于这个片选的地址偏移量即可。如在X86系统下选用了CS1作片选信号,对0x301进行操作,则相对于ARM系统,可使用CS1#、地址偏移量为1的端口。ARM9系列板卡的CS0#、CS1#所对应的地址区域范围有所不同。EM9000有13条地址线,每位片选可访问8K的地址空间。EM9160、EM9161的每位片选可访问32 个地址空间。EM9260、EM9360的CS0#可访问到8K的地址空间,CS1#可访问到1K的地址空间。

以下是英创公司所提供的精简ISA扩展总线接口的信号定义:

信号名称及简要描述 精简ISA 信号名称及简要描述
PIN# PIN#
RESET#,复位输出,低有效 1 2 SA0,地址总线
SD0,数据总线,LSB 3 4 SA1,地址总线
SD1,数据总线 5 6 SA2,地址总线
SD2,数据总线 7 8 SA3,地址总线
SD3,数据总线 9 10 SA4,地址总线
SD4,数据总线 11 12 WE#,写信号控制线,低有效
SD5,数据总线 13 14 RD#,读信号控制线,低有效
SD6,数据总线 15 16 CS1#,I/O片选线,低有效
SD7,数据总线,MSB 17 18 VCC,电源输出
IRQ,中断请求,上升沿有效 19 20 GND,公共地

为了便于用户理解精简ISA总线接口如何进行编程,本节以x86指令和ARM系统为例,简单介绍基于英创嵌入式主板的精简ISA的应用。由于x86、EM9000、EM9x6x三种系统的ISA总线读写操作函数不一样,所以在具体使用时,应当参考相应的'*.h'文件。以下是基于英创的嵌入式主板的精简ISA总线操作指令表,以便查询:

系统 ISA读 ISA写
x86系列 inport( ) 或 inportb( ) outport( ) 或 outportb( )
EM9000 EM9000_READ( ) EM9000_WRITE( )
EM9x6x系列 ISA_ReadUchar( ) ISA_WriteUchar( )

X86系统使用DOS操作系统,其指令也是标准的C函数,所以操作ISA时使用的时绝对地址。ARM嵌入式主板使用的WINCE操作系统,存在地址映射问题,同时使用户更加方便对ISA的使用,所以对ISA操作的过程被封装成一个操作函数后再提供给用户,在对ISA操作时不需要给出绝对地址,但是需要指明所使用的片选信号及基于当前片选信号的偏移地址。下面的读操作也是相同的。

ISA总线的写操作:

C语言ISA总线写操作函数:

outportb ( 0x301, ub1 ); // 将ub1的数据写入0x301地址或寄存器

EM9000 ISA总线写操作函数:

#define CS1# 1 // ARM系统的CS1片选信号的定义,以下不再说明
EM9000_WRITE ( CS1# , 0x1 , ub1 ); // 将ub1的数据写入CS1片选信号使能的1偏移地址

EM9x6x ISA总线写操作函数:

ISA_WriteUchar ( CS1#, 0x1 , ub1); // 将ub1的数据写入CS1片选信号使能的1偏移地址

对应的总线写时序图为(本文中的总线周期示意图以ARM系列模块为例):

ISA总线的读操作:

C语言ISA总线读操作函数:

UCHAR ub1 = inportb ( 0x301 ); // 将0x301地址或寄存器的数据读入ub1

EM9000 ISA总线读操作函数:

UCHAR ub1 = EM9000_READ ( CS1# , 0x1 ); // 将CS1片选信号使能的1偏移地址的数据读入ub1

EM9x6x ISA总线读操作函数:

ISA_ReadUchar ( CS1#, 0x1 , &ub1);// 将CS1片选信号使能的1偏移地址的数据读入ub1

对应的总线时序关系为:

如果应用程序要读写一个16-bit的数据,即一个字时,在x86系统中,可以使用:

unsigned int ui1 = inport(0x301);// 读16位数据

outport(0x301, ui1);// 写16位数据

利用C函数一次性完成操作,在ISA总线上会自动生成两个8位数据的读写周期,分别访问低位字节和高位字节。在AD、DA的访问中经常会碰到这样的情形。

对ARM9系统,应用只能通过两次调用总线读写函数分别处理16位数据的低位字节和高位字节,如用EM9000 ISA读写操作为例:

UCHAR ub1 = EM9000_READ ( CS1# , 0x1 );// 获得低位字节。
UCHAR ub2 = EM9000_READ ( CS1# , 0x2 );// 获得高位字节。
ui1 =( ub2 << 8)| ub1;               // 高低位字节合成16位数据

如果是写操作,则使用同样的方式:

EM9000_WRITE ( CS1# , 0x1 , (ub1&0xff) ); // 写低字节数据
EM9000_WRITE ( CS1# , 0x2 , (ub1>>8) );// 写高字节数据

在使用精简ISA总线进行扩展时,为了使总线的信号传输更加可靠,应在总线上的所有信号线加上RC网络以达到最佳的信号传输,同时,在高速的数据总线上,可以使用HCT245作一次驱动。如下图所示:

扩展应用

1、用精简ISA进行数据I/O扩展

用户如果使用的I/O较多,英创提供的嵌入式主板上的数据I/O又不够使用要求,则用户可以使用精简ISA总线来进行扩展。仅使用3片简单的74逻辑器件,就可方便扩展出8路输入8路输出。英创公司的ETA716扩展模块就是按照这种方式来实现的。

接口译码电路用一片74HCT139做完成。

在X86系统下,应用程序执行读操作时:

unsigned char ub1 = inportb ( 0x300 ); // 把外部状态读取并存放到ub1中

在EM9000系统下,应用程序执行读操作:

UCHAR ub1 = EM9000_READ (CS1# , 0x0);

74HCT245被译码信号RD300H#选通,外部的输入状态INPUT0 – INPUT7将呈现在数据总线SD0 – SD7上,CPU将在RD300H#的上升沿时刻把总线上的数据锁存到ub1。

类似的,当应用程序执行写操作时:

X86系统下写:

outportb ( 0x300 , ub1 );// 把ub1数据输出送到0x300端口

在EM9000系统下:

EM9000_WRITE (CS1# , 0x0 , ub1);

把ub1的数据送到ISA数据总线上,译码信号WE300H#变低有效,并在其上升沿时刻把总线上的数据锁存到74HCT273的8个寄存器中,74HCT273的8个寄存器的输出OUTPUT0 – OUTPUT7将保持不变,直至有新数据写入。当系统复位或上电启动时,低有效的复位信号RESET#将保证把74HCT273的输出清零。

2、用精简ISA总线进行A/D采集扩展(应用模块:ETA197)

用户还可以通过精简ISA总线来扩展具有通用并行接口的A/D转换器,以实现简单的数据采集。以下是通过ISA总线连接MAX197的信号接法,由于MAX197只有12位数据宽度,这里使用SA0地址线来作为高、低字节数据的选择,正好形成了两个连续的地址,方便函数的操作。

对MAX197进行AD转换的基本步骤为:

X86系统下:

1、写控制字节,启动AD转换:outportb(0x300, CtrlByte);
2、延时15us
读取转换数据:unsigned int ub1 = inport(0x300);
// ub1为读入的16位数据

或EM9000系统下:

1、写控制字节,启动AD转换:

EM9000_WRITE(CS1# , 0x0 , CtrlByte );

2、延时15us

3、读取转换数据:

ub1 = EM9000_READ(CS1# , 0x0 );

ub1 = ub1 << 8 ;

ub1 = ub1 | (EM9000_READ(CS1# , 0x0 ) & 0xff );

对于不同的系统,请参见相应的ETA197测试程序。

3、用精简ISA总线进行串口扩展(应用模块:ETA502)

同样的,用户也可以使用精简ISA总线来扩展串口,如使用16C550芯片等。一片16C550需要占用8个I/O端口地址,所以,要使用到三条地址线,且这三条地址线最好是连续的地址线,以方便应用程序的开发与控制。 要注意的是,16C550的复位是高电平复位,而精简ISA总线上的复位信号是低信号复位有效,所以在使用时,要将ISA总线上的复位信号进行反向,再连接到16C550的复位上。如果要控制MODEM,则需要将16C550输出的信号经过RS232电平信号转换芯片的转换,再接一个DB9的接头,则构成了一个标准的RS232通讯接口。

除了以上的应用以外,用户还可以利用英创的精简ISA总线,方便地完成其它多种功能模块的扩展,如10M/100M以太网口、CAN总线接口、USB主控模块、24位通用数字IO等等,英创公司也相应地提供了应用模块ETA719、ETA718、ETA701、ETA608、 ETA724等供客户参考。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6084

    浏览量

    35149
收藏 人收藏

    评论

    相关推荐

    如何用labview 对isa接口进行读写操作

    各位前辈,我们的labview如何才能对isa接口进行操作呢?互连接口中的。i/0读写可以吗?请前辈指条明路。。感激不尽
    发表于 11-09 14:18

    ESM335x扩展总线中断智能块读写

    1、综述  ESM335x 嵌入式主板的提供带中断的精简ISA扩展总线,主要用于支持高速数据采集、多路串口扩展以及其他的高级
    发表于 06-12 15:31

    EM335x主板ISA总线的高级应用

      对工控主板EM335x精简ISA扩展总线基本读写操作的介绍,已包含在EM335x编程手册中。
    发表于 07-11 11:04

    WinCE精简ISA总线和外部中断的相关接口函数

    WinCE下精简ISA总线硬件中断的使用方法
    发表于 09-27 13:22

    ISA总线接口扩展方案

    英创公司的嵌入式网络模块系列产品均具有精简 ISA 扩展总线,通常包括若干地址总线、8位数据总线
    发表于 06-09 15:54 43次下载
    多<b class='flag-5'>ISA</b><b class='flag-5'>总线</b><b class='flag-5'>接口</b><b class='flag-5'>扩展</b>方案

    ETA203 ISA总线扩展模块使用手册的详细资料免费下载

    精简 ISA 总线是英利工控主板的一大特色功能。在英利公司所提供的开发评估底板上有一个精简 ISA 总线
    发表于 11-21 08:00 7次下载

    英创信息技术C#使用COM组件接口操作精简ISA总线浅谈

    英创ARM9工控主板的数据采集功能通常采用板上的GPIO实现数字输入输出、通过精简ISA总线扩展相应的外部控制电路(如控制继电器或AD或DA实现模拟数据的输入输出等)。
    的头像 发表于 11-12 10:24 1561次阅读
    英创信息技术C#使用COM组件<b class='flag-5'>接口</b><b class='flag-5'>操作</b><b class='flag-5'>精简</b><b class='flag-5'>ISA</b><b class='flag-5'>总线</b>浅谈

    英创信息技术EM9170工控主板ISA总线数据介绍

    精简ISA总线进行系统功能的扩展。本文着重从软件开发使用的角度来介绍ISA总线
    的头像 发表于 01-14 14:58 1333次阅读

    英创信息技术EM335x精简ISA扩展总线地址总线介绍

    英创公司新近推出的工控主板EM335x支持精简ISA扩展总线。由于主板管脚的限制,ISA总线采用
    的头像 发表于 01-17 10:20 1329次阅读
    英创信息技术EM335x<b class='flag-5'>精简</b><b class='flag-5'>ISA</b><b class='flag-5'>扩展</b><b class='flag-5'>总线</b>地址<b class='flag-5'>总线</b>介绍

    英创信息技术EM335x主板ISA总线的高级应用介绍

    对工控主板EM335x精简ISA扩展总线基本读写操作的介绍,已包含在EM335x编程手册中。本文
    的头像 发表于 02-03 10:00 1023次阅读
    英创信息技术EM335x主板<b class='flag-5'>ISA</b><b class='flag-5'>总线</b>的高级应用介绍

    英创信息技术ESM335x扩展总线中断智能块读写

    1、综述 ESM335x 嵌入式主板的提供带中断的精简ISA扩展总线,主要用于支持高速数据采集、多路串口扩展以及其他的高级
    的头像 发表于 02-04 10:38 1034次阅读
    英创信息技术ESM335x<b class='flag-5'>扩展</b><b class='flag-5'>总线</b>中断智能块<b class='flag-5'>读写</b>

    英创信息技术精简ISA总线Linux编程–Part1

    精简ISA总线接口是一种8-bit宽度的双向并行扩展总线,其特点是地址数据分时复用8-bit
    的头像 发表于 02-07 11:19 1124次阅读
    英创信息技术<b class='flag-5'>精简</b><b class='flag-5'>ISA</b><b class='flag-5'>总线</b>Linux编程–Part1

    英创信息技术精简ISA总线Linux编程 – Part2简介

    精简ISA总线接口是一种8-bit宽度的双向并行扩展总线,其特点是地址数据分时复用8位
    的头像 发表于 02-11 16:50 1269次阅读
    英创信息技术<b class='flag-5'>精简</b><b class='flag-5'>ISA</b><b class='flag-5'>总线</b>Linux编程 – Part2简介

    英创信息技术精简ISA总线Linux编程 – Part3简介

    精简ISA总线接口是一种8-bit宽度的双向并行扩展总线,其特点是地址数据分时复用8位
    的头像 发表于 02-11 16:48 1339次阅读
    英创信息技术<b class='flag-5'>精简</b><b class='flag-5'>ISA</b><b class='flag-5'>总线</b>Linux编程 – Part3简介

    英创信息技术精简ISA总线WinCE编程简介

    ISA总线简介 英创精简ISA总线接口是一种8-bit宽度的双向并行
    的头像 发表于 02-11 16:55 1236次阅读
    英创信息技术<b class='flag-5'>精简</b><b class='flag-5'>ISA</b><b class='flag-5'>总线</b>WinCE编程简介