? 基于ESM3354的16路串口+2路网口扩展方案--应用方案

基于ESM3354的16路串口+2路網口擴展方案

 2016/8/5         

  ESM3354是英創公司基于Cortex-A8的高性價比嵌入式主板產品,通過其ISA擴展總線,可方便的擴展多路通訊接口,以滿足工業自動化領域的復雜應用。本文主要介紹通過ESM3354的ISA總線同時擴展16路串口和2路100M網口的應用方案。通過這樣的擴展,整個系統的通訊接口配置如下:


接口資源通道數簡要說明
 100M以太網接口4 獨立網口,應工作在不同網段
 標準異步串口22

 COM1為USB虛擬串口

 COM2 – COM6為高速串口,3Mbps

 16擴展串口,最高波特率115200bps

 CAN總線接口2 ESM3354主板自帶


  本擴展方案的主要電路構成如下圖所示:


未標題-1_副本2.gif


  精簡ISA總線接口

  ESM3354工控主板使用英創標準的ESMARC評估底板,其中CN21為精簡ISA總線接口,擴展模塊ETA728(2路網口)和2個ETA508(每個模塊擴展8路串口)均直接連接到ISA總線。ISA總線的信號定義可從ESMARC EVB數據手冊上得到如下:


ISA總線接口信號

CN21ISA總線接口信號

PIN#

PIN#

 RESET#,復位,低電平有效

12

 ISA_ADV#,地址鎖存,低電平有效

 ISA_SD0,地址數據總線

34

 ISA_SD4,地址數據總線

 ISA_SD1,地址數據總線

56

 ISA_SD5,地址數據總線

 ISA_SD2,地址數據總線

78

 ISA_SD6,地址數據總線

 ISA_SD3,地址數據總線

910

 ISA_SD7,地址數據總線

 MSL#,模塊選擇

1112

 ISA_WE#,數據寫,低電平有效

 GPIO9,中斷IRQ4,上升沿有效

1314

 ISA_RD#,數據讀,低電平有效

 GPIO8,中斷IRQ3,上升沿有效

1516

 ISA_CS#,總線片選,低電平有效

 GPIO25,中斷IRQ2,上升沿有效

1718

 +5V,電源輸入

 GPIO24,中斷IRQ1,上升沿有效

1920

 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

12

 ISA_SD1

 ISA_SD2

34

 ISA_SD3

 ISA_SD4

56

 ISA_SD5

 ISA_SD6

78

 ISA_SD7

 ISA_ADV#

910

 ISA_SD4

 ISA_SD5

1112

 ISA_SD6

 ISA_SD7

1314

 -

 5k電阻上拉或懸空

1516

 ISA_RD#

 ISA_WE#

1718

 RESET#

 ISA_CS#

1920

 IRQ1(GPIO24)


第二塊ETA508接口信號

CN1第二塊ETA508接口信號

PIN#

PIN#

 ISA_SD0

12

 ISA_SD1

 ISA_SD2

34

 ISA_SD3

 ISA_SD4

56

 ISA_SD5

 ISA_SD6

78

 ISA_SD7

 ISA_ADV#

910

 ISA_SD4

 ISA_SD5

1112

 ISA_SD6

 ISA_SD7

1314

 -

 接地

1516

 ISA_RD#

 ISA_WE#

1718

 RESET#

 ISA_CS#

1920

 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接口信號

CN21ETA728接口信號

PIN#

PIN#

 RESET#,復位,低電平有效

12

 ISA_ADV#,地址鎖存,低電平有效

 ISA_SD0,地址數據總線

34

 ISA_SD4,地址數據總線

 ISA_SD1,地址數據總線

56

 ISA_SD5,地址數據總線

 ISA_SD2,地址數據總線

78

 ISA_SD6,地址數據總線

 ISA_SD3,地址數據總線

910

 ISA_SD7,地址數據總線

 -

1112

 ISA_WE#,數據寫,低電平有效

 -

1314

 ISA_RD#,數據讀,低電平有效

 -

1516

 ISA_CS#,總線片選,低電平有效

 GPIO25,中斷IRQ2,上升沿有效

1718

 +5V,電源輸入

 GPIO24,中斷IRQ1,上升沿有效

1920

 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
 第二路網口(主板自有)eth1CPSW3G2
 第三路網口(ETA728擴展)eth2DM9K3
 第四路網口(ETA728擴展)eth3DM9K4


  串口驅動程序的加載

  ETA508的驅動程序已經包含在ESM3354的內核中,通過適當方式加載這個驅動,就可進行串口操作了。


  對Linux平臺,驅動程序為eta503_serial.ko,存放在跟文件系統的/lib/modules/4.1.6路徑下,用標準insmod命令即可實現加載。


  對CE平臺,在啟動系統后,telnet登錄到CE的命令窗口,若要啟動ETA508,則帶參數執行eta503set.exe,其中若啟動第一塊ETA508,參數為8:


1.gif


  若要啟動2塊ETA508,則帶參數為16。執行命令后重啟系統,ETA508的驅動就會自動加載。應用程序就可操作擴展串口了。


  擴展網口驅動程序的加載

  ETA728的驅動程序已經包含在ESM3354的內核中,通過適當方式加載這個驅動,就可進行串口操作了。


  對Linux平臺,驅動程序為eta728.ko,存放在跟文件系統的/lib/modules/4.1.6路徑下,用標準insmod命令即可實現加載。


  對CE平臺,在啟動系統后,telnet登錄到CE的命令窗口,若要啟動ETA728,則帶參數執行eta728set.exe,其中參數為3:


2.gif


  執行命令后重啟系統,ETA728的驅動就會自動加載。應用程序就可操作擴展網口了。