ESM3354是英创公司基于Cortex-A8的高性价比嵌入式主板产品,通过其ISA扩展总线,可方便的扩展多路通讯接口,以满足工业自动化领域的复杂应用。本文主要介绍通过ESM3354的ISA总线同时扩展16路串口和2路100M网口的应用方案。通过这样的扩展,整个系统的通讯接口配置如下:
接口资源 | 通道数 | 简要说明 |
100M以太网接口 | 4 | 独立网口,应工作在不同网段 |
标准异步串口 | 22 |
COM1为USB虚拟串口 COM2 – COM6为高速串口,3Mbps 16扩展串口,最高波特率115200bps |
CAN总线接口 | 2 | ESM3354主板自带 |
本扩展方案的主要电路构成如下图所示:
精简ISA总线接口
ESM3354工控主板使用英创标准的ESMARC评估底板,其中CN21为精简ISA总线接口,扩展模块ETA728(2路网口)和2个ETA508(每个模块扩展8路串口)均直接连接到ISA总线。ISA总线的信号定义可从ESMARC EVB数据手册上得到如下:
ISA总线接口信号 | CN21 | ISA总线接口信号 | |
PIN# | PIN# | ||
RESET#,复位,低电平有效 | 1 | 2 | ISA_ADV#,地址锁存,低电平有效 |
ISA_SD0,地址数据总线 | 3 | 4 | ISA_SD4,地址数据总线 |
ISA_SD1,地址数据总线 | 5 | 6 | ISA_SD5,地址数据总线 |
ISA_SD2,地址数据总线 | 7 | 8 | ISA_SD6,地址数据总线 |
ISA_SD3,地址数据总线 | 9 | 10 | ISA_SD7,地址数据总线 |
MSL#,模块选择 | 11 | 12 | ISA_WE#,数据写,低电平有效 |
GPIO9,中断IRQ4,上升沿有效 | 13 | 14 | ISA_RD#,数据读,低电平有效 |
GPIO8,中断IRQ3,上升沿有效 | 15 | 16 | ISA_CS#,总线片选,低电平有效 |
GPIO25,中断IRQ2,上升沿有效 | 17 | 18 | +5V,电源输入 |
GPIO24,中断IRQ1,上升沿有效 | 19 | 20 | GND,公共地 |
ISA_SD[0..7]为地址数据时分复用的双向总线信号,与控制信号ISA_CS#、ISA_ADV#、ISA_RD#和ISA_WE#配合,实现总线数据的读入和写出。具体的总线时序请参考ESM335x数据手册。4路中断请求信号IRQ1 – IRQ4分别由GPIO24、GPIO25、GPIO8、GPIO9来充当,均要求为上升沿有效的脉冲信号输入,将分别由扩展模块提供。
8路串口扩展模块ETA508
ETA508为8串口扩展模块,采用共享中断的结构,其中第一块ETA508使用IRQ1(GPIO24),第二块ETA508使用IRQ2(GPIO25)。ETA508扩展的8路串口为3线制串口。信号电平均为+3.3V LVTTL电平。有关这种模块详细的技术说明请参考它们的数据手册。模块通过其CN1插座与ESM3354的精简ISA总线相连,具体信号说明如下:
第一块ETA508接口信号 | CN1 | 第一块ETA508接口信号 | |
PIN# | PIN# | ||
ISA_SD0 | 1 | 2 | ISA_SD1 |
ISA_SD2 | 3 | 4 | ISA_SD3 |
ISA_SD4 | 5 | 6 | ISA_SD5 |
ISA_SD6 | 7 | 8 | ISA_SD7 |
ISA_ADV# | 9 | 10 | ISA_SD4 |
ISA_SD5 | 11 | 12 | ISA_SD6 |
ISA_SD7 | 13 | 14 | - |
5k电阻上拉或悬空 | 15 | 16 | ISA_RD# |
ISA_WE# | 17 | 18 | RESET# |
ISA_CS# | 19 | 20 | IRQ1(GPIO24) |
第二块ETA508接口信号 | CN1 | 第二块ETA508接口信号 | |
PIN# | PIN# | ||
ISA_SD0 | 1 | 2 | ISA_SD1 |
ISA_SD2 | 3 | 4 | ISA_SD3 |
ISA_SD4 | 5 | 6 | ISA_SD5 |
ISA_SD6 | 7 | 8 | ISA_SD7 |
ISA_ADV# | 9 | 10 | ISA_SD4 |
ISA_SD5 | 11 | 12 | ISA_SD6 |
ISA_SD7 | 13 | 14 | - |
接地 | 15 | 16 | ISA_RD# |
ISA_WE# | 17 | 18 | RESET# |
ISA_CS# | 19 | 20 | IRQ2(GPIO25) |
由于ETA508都是从英创EM9X60产品线发展起来的,为了兼容两种产品线,ISA_SD4 – ISA_SD7这4条数据线在CN1中被重复放置了两次,在设计接口电路时,上述所列的信号均不能少。另ETA508模块的电源和地线是通过模块的CN2接口引入的。
注意:
(1)ESM3354的所有ISA接口信号均为3.3V LVTTL电平,且不是+5V兼容的,因此禁止把5V信号或电源接到ISA信号管脚上,否则会造成ESM3354主板的损坏!
(2)由于ISA总线的速度较高,ETA508在PCB中的布局应尽可能靠近ESM3354总线接口所在位置,以保证总线信号的完整性。
2路以太网口扩展模块ETA728
ETA728为2路独立100M网口扩展模块,每路网络控制器是占用1路独立的中断。模块CN1与ISA总线的连接信号定义如下:
ETA728接口信号 | CN21 | ETA728接口信号 | |
PIN# | PIN# | ||
RESET#,复位,低电平有效 | 1 | 2 | ISA_ADV#,地址锁存,低电平有效 |
ISA_SD0,地址数据总线 | 3 | 4 | ISA_SD4,地址数据总线 |
ISA_SD1,地址数据总线 | 5 | 6 | ISA_SD5,地址数据总线 |
ISA_SD2,地址数据总线 | 7 | 8 | ISA_SD6,地址数据总线 |
ISA_SD3,地址数据总线 | 9 | 10 | ISA_SD7,地址数据总线 |
- | 11 | 12 | ISA_WE#,数据写,低电平有效 |
- | 13 | 14 | ISA_RD#,数据读,低电平有效 |
- | 15 | 16 | ISA_CS#,总线片选,低电平有效 |
GPIO25,中断IRQ2,上升沿有效 | 17 | 18 | +5V,电源输入 |
GPIO24,中断IRQ1,上升沿有效 | 19 | 20 | GND,公共地 |
应用程序对扩展接口的操作
无论是在Linux平台,还是在WinCE平台,应用程序对扩展串口的操作,都是通过打开其对应的设备驱动文件来实现的,其具体的设备文件名如下:
CE平台设备名称 | Linux平台设备名称 | 扩展UART说明 |
“\$device\COM20” | “/dev/ttyS7” | 第一块ETA508 UART0 |
“\$device\COM21” | “/dev/ttyS8” | 第一块ETA508 UART1 |
“\$device\COM22” | “/dev/ttyS9” | 第一块ETA508 UART2 |
“\$device\COM23” | “/dev/ttyS10” | 第一块ETA508 UART3 |
“\$device\COM24” | “/dev/ttyS11” | 第一块ETA508 UART4 |
“\$device\COM25” | “/dev/ttyS12” | 第一块ETA508 UART5 |
“\$device\COM26” | “/dev/ttyS13” | 第一块ETA508 UART6 |
“\$device\COM27” | “/dev/ttyS14” | 第一块ETA508 UART7 |
“\$device\COM30” | “/dev/ttyS15” | 第二块ETA508 UART0 |
“\$device\COM31” | “/dev/ttyS16” | 第二块ETA508 UART1 |
“\$device\COM32” | “/dev/ttyS17” | 第二块ETA508 UART2 |
“\$device\COM33” | “/dev/ttyS18” | 第二块ETA508 UART3 |
“\$device\COM34” | “/dev/ttyS19” | 第二块ETA508 UART4 |
“\$device\COM35” | “/dev/ttyS20” | 第二块ETA508 UART5 |
“\$device\COM36” | “/dev/ttyS21” | 第二块ETA508 UART6 |
“\$device\COM37” | “/dev/ttyS22” | 第二块ETA508 UART7 |
需要注意的是在WinCE平台,扩展串口号为COM20 – COM27和COM30 – COM37,与主板上的串口号(COM2 – COM6)并不连续,而Linux平台的设备节点名称是与主板串口节点连续命名的。打开串口后的操作,都可通过标准函数实现各个功能。
尽管每路扩展串口的最高波特率均为115200bps,但考虑尽可能降低ISA总线的负载,建议把高波特率串口首先配置在主板的COM2 – COM6(CE平台)或ttyS1 – ttyS5(Linux平台),然后再在ETA508上部署。
在应用程序设计中,需注意4路网口的名称:
网口序号 | Linux平台名称 | CE平台名称 |
第一路网口(主板自有) | eth0 | CPSW3G1 |
第二路网口(主板自有) | eth1 | CPSW3G2 |
第三路网口(ETA728扩展) | eth2 | DM9K3 |
第四路网口(ETA728扩展) | eth3 | DM9K4 |
串口驱动程序的加载
ETA508的驱动程序已经包含在ESM3354的内核中,通过适当方式加载这个驱动,就可进行串口操作了。
对Linux平台,驱动程序为eta503_serial.ko,存放在跟文件系统的/lib/modules/4.1.6路径下,用标准insmod命令即可实现加载。
对CE平台,在启动系统后,telnet登录到CE的命令窗口,若要启动ETA508,则带参数执行eta503set.exe,其中若启动第一块ETA508,参数为8:
若要启动2块ETA508,则带参数为16。执行命令后重启系统,ETA508的驱动就会自动加载。应用程序就可操作扩展串口了。
扩展网口驱动程序的加载
ETA728的驱动程序已经包含在ESM3354的内核中,通过适当方式加载这个驱动,就可进行串口操作了。
对Linux平台,驱动程序为eta728.ko,存放在跟文件系统的/lib/modules/4.1.6路径下,用标准insmod命令即可实现加载。
对CE平台,在启动系统后,telnet登录到CE的命令窗口,若要启动ETA728,则带参数执行eta728set.exe,其中参数为3:
执行命令后重启系统,ETA728的驱动就会自动加载。应用程序就可操作扩展网口了。
全部0条评论
快来发表一下你的评论吧 !