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的驅動就會自動加載。應用程序就可操作擴展網口了。
-
Linux
+關注
關注
87文章
11342瀏覽量
210180 -
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35539
發布評論請先 登錄
相關推薦
評論