秦磊,孫曼,王小亮
(1.四川大學電氣信息學院,成都 610065;2四川大學電子信息學院)
CH395與SPI接口的以太網(wǎng)模塊設(shè)計※
秦磊1,孫曼1,王小亮2
(1.四川大學電氣信息學院,成都 610065;2四川大學電子信息學院)
伴隨著物聯(lián)網(wǎng)的高速發(fā)展,以太網(wǎng)已經(jīng)成為很多嵌入式系統(tǒng)中的一個重要模塊。針對很多無自帶以太網(wǎng)模塊的低成本單片機控制器,本設(shè)計采用CH395芯片連接dsPIC33系列單片機的SPI接口實現(xiàn)以太網(wǎng)模塊,該方案開發(fā)難度小,占用單片機硬件資源少,是一種可靠的設(shè)計方案。
嵌入式系統(tǒng);CH395;以太網(wǎng)
在嵌入式應(yīng)用中,單片機與外部通信非常頻繁,通信方式種類繁多,如SPI、I2C總線、RS-232、USB、以太網(wǎng)等。以太網(wǎng)傳輸速度快、傳輸距離遠、通過連接網(wǎng)絡(luò)設(shè)備可以輕易進行組網(wǎng)管理,是進行遠程控制[1-2]、大規(guī)模數(shù)據(jù)采集、眾多設(shè)備節(jié)點管理[3-4]非常有效的一種方式。很多單片機并無以太網(wǎng)協(xié)議棧硬件支持,在為這些單片機開發(fā)網(wǎng)絡(luò)模塊時,一般是通過單片機已有的通信接口外接以太網(wǎng)芯片來實現(xiàn)。本設(shè)計通過單片機中常見的SPI口外接以太網(wǎng)模塊,實現(xiàn)以太網(wǎng)通信。
本設(shè)計采用Microchip公司的dsPIC33EP256GM710(以下簡稱dsPIC33E)控制器,通過SPI口外接以太網(wǎng)芯片CH395來實現(xiàn)以太網(wǎng)功能。dsPIC33EP256GM710是16位數(shù)字信號處理器,是一款低功耗、高性能、低成本的處理器。它有3個SPI硬件模塊,其中SPI1是一個高速的SPI模塊,在本設(shè)計中被采用。
CH395芯片是沁恒公司的一款以太網(wǎng)協(xié)議棧[5]管理芯片,被單片機系統(tǒng)進行以太網(wǎng)通信。CH395芯片自帶10/100M以太網(wǎng)介質(zhì)傳輸層(MAC)和物理層(PHY),完全兼容IEEE802.310/100M協(xié)議,內(nèi)置了PPPOE、IP、DHCP、ARP、ICMP、IGMP、UDP、TCP等以太網(wǎng)協(xié)議棧固件。
單片機系統(tǒng)可以方便地通過CH395芯片進行網(wǎng)絡(luò)通信。CH395支持3種通信接口:8位并口、SPI接口和異步串口。單片機/DSP/MCU/MPU等控制器可以通過上述任何一種通信接口控制CH395芯片進行以太網(wǎng)通信[6]。CH395與控制器的接口圖1所示。
SPI是串行外設(shè)接口,是一種高速、全雙工、同步的通信總線,在引腳上只占用4根線,節(jié)約了芯片的引腳。SPI同步串行接口信號線包括:SPI片選輸入引腳SCS、串行時鐘輸入引腳SCK、串行數(shù)據(jù)輸入引腳SDI、串行數(shù)據(jù)輸出引腳SDO。CH395芯片的SCS引腳由單片機的SPI片選輸出引腳或者普通輸出引腳驅(qū)動,SCK引腳由單片機的SPI時鐘輸出引腳SCK驅(qū)動,SDI引腳由單片機的SPI數(shù)據(jù)輸出引腳SDO或MOSI驅(qū)動,SDO引腳則連接到單片機的SPI數(shù)據(jù)輸入引腳SDI或MISO。
圖1 H395與控制器的接口示意圖
CH395的SPI接口也支持單片機用普通I/O引腳通過軟件來模擬SPI接口進行通信。CH395總是從SPI時鐘SCK的上升沿輸入數(shù)據(jù),并在允許輸出時從SCK的下降沿輸出數(shù)據(jù)。
設(shè)計采用的是dsPIC33系列處理器中的高速專用SPI1口,它作為SPI通信的主控器件,與CH395的硬件接口如圖2所示,主控器件的SDO引腳連接從器件的SDI引腳,主控器件的SDI引腳連接從器件的SDO引腳。CH395的輸出INT#引腳連接處理器的一個通用I/O引腳,用來處理來自CH395的中斷。
圖2 CH395與單片機的硬件接口圖
CH395芯片的操作都是在主控SPI的CS片選信號有效的情況下進行的。單片機與CH395進行通信交互是通過操作碼與數(shù)據(jù)相結(jié)合的方式進行的,首先單片機通過SPI的SDO引腳按位移出一個字節(jié)的操作碼后,再輸出若干字節(jié)的數(shù)據(jù),在輸出數(shù)據(jù)的同時通過SDI引腳的按位移入接收數(shù)據(jù)。CH395讀寫流程操作如圖3所示。
圖3 CH395的操作流程
要完成SPI接口向CH395傳送數(shù)據(jù),先要對dsPIC33E的SPI端口進行配置,本次設(shè)計中采用的是SPI1模塊,先設(shè)置SPI1所使用的所有引腳為數(shù)字輸入/輸出功能,設(shè)置SCS、SDI、SCK引腳為輸出,SDO為輸入,因為CH395需要一個INT#用于中斷處理連接控制器,所以采用一個通用I/O引腳作為INT#中斷輸入引腳。當SPI引腳映射好后,即可配置SPI口的功能參數(shù),方法如下:
3.1 驅(qū)動程序的層次結(jié)構(gòu)
要實現(xiàn)CH395的Socket功能,需要繁多的功能函數(shù)來完成,從程序開發(fā)者的角度來看,CH395的網(wǎng)絡(luò)Socket程序可分為4個層次:應(yīng)用層、中間層、數(shù)據(jù)命令層、SPI層。
(1)應(yīng)用層
對中間層提供的關(guān)于網(wǎng)絡(luò)參數(shù)設(shè)置操作進行封裝,向網(wǎng)絡(luò)透明地傳送數(shù)據(jù),用于設(shè)置網(wǎng)絡(luò)協(xié)議,創(chuàng)建Socket,連接目標進程,處理網(wǎng)絡(luò)收發(fā)中斷等。該層主要由以下函數(shù)來實現(xiàn):
(2)中間層
該層使用命令數(shù)據(jù)層的接口,實現(xiàn)網(wǎng)絡(luò)的具體操作,向上層提供網(wǎng)絡(luò)參數(shù)設(shè)置功能。應(yīng)用層的三個主要函數(shù)通過調(diào)用下列各函數(shù)來實現(xiàn):
(3)命令數(shù)據(jù)層
該層通過調(diào)用SPI硬件層接口,向CH395發(fā)送命令與數(shù)據(jù),同時接收CH395返回的數(shù)據(jù)。主要函數(shù)如下:
(4)SPl層
它是整個程序框架的最底層,向上層提供讀寫時序控制,實現(xiàn)SPI讀取數(shù)據(jù),主要由以下函數(shù)實現(xiàn):
CH395驅(qū)動程序的層次結(jié)構(gòu)圖略——編者注。
3.2 SPl程序的實現(xiàn)
要實現(xiàn)CH395的網(wǎng)絡(luò)功能,單片機dsPIC33E的SPI數(shù)據(jù)傳送是最為關(guān)鍵的,SPI數(shù)據(jù)傳送接口由以下3個函數(shù)來實現(xiàn):
設(shè)計中,dsPIC33E單片機作為TCP客戶端來使用,其控制程序在單片機的TCP客戶端應(yīng)用中,應(yīng)用程序直接使用CH395提供的Socket與網(wǎng)絡(luò)設(shè)備進行網(wǎng)絡(luò)通信。在連接網(wǎng)絡(luò)之前,其與PC系統(tǒng)上的過程一致,需要初始化網(wǎng)卡設(shè)備(CH395),配置相應(yīng)的網(wǎng)絡(luò)參數(shù)(如本地IP、網(wǎng)關(guān)、子網(wǎng)掩碼等);在應(yīng)用程序啟動Socket進程之前,需要配置Socket的目的IP、端口、源端口、協(xié)議類型。配置好以上參數(shù)后,應(yīng)用程序可以創(chuàng)建Socket連接服務(wù)器進程。CH395的網(wǎng)絡(luò)控制處理流程如圖4所示。
在設(shè)計中,用PC機作為服務(wù)器端。PC的服務(wù)器程序采用MFC來設(shè)計,PC與單片機之間通過Socket進行網(wǎng)絡(luò)連接。
在PC端上運行TCP服務(wù)器程序,使用Socket之前應(yīng)該在應(yīng)用程序的InitInstance()函數(shù)中通過WSAStartup()API函數(shù)加載Windows Sockets套接字。在程序界面上通過一個啟動按鍵來啟動服務(wù)器的監(jiān)聽程序并創(chuàng)建一個消息線程向MFC的消息路由傳遞用戶自定義消息,并在MFC的消息宏中增加用戶自定義消息處理函數(shù)ON _MESSAGE(WM_RECVDATA,&CH395Dlg::OnRecv-Data)。接收線程函數(shù)如下:
圖5 CH395網(wǎng)絡(luò)控制流程圖
通過網(wǎng)線把單片機電路板與PC機相連,在PC機上運行TCP協(xié)議的服務(wù)器端程序,在單片機程序中,設(shè)置CH395芯片本地IP地址為192.168.0.5,本地端口號為6000,目的IP地址為192.168.0.10,目的端口號為5000。程序接收來自服務(wù)器端的信息字符串,并把字符串原樣返回PC端。程序運行狀態(tài)如圖5所示。通過測試表明CH395模塊成功連接上PC機。
圖5 系統(tǒng)測試圖
本次設(shè)計利用Microchip dsPIC33系列處理器與CH395模塊芯片,實現(xiàn)了基于單片機系統(tǒng)的SPI口的以太網(wǎng)模塊設(shè)計。該方案實現(xiàn)簡單、成本低、實用性強,特別是在控制器缺少以太網(wǎng)協(xié)議棧硬件支持的情況下,可以節(jié)省開發(fā)周期,提高開發(fā)效率。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www. mesnet.com.cn。
[1]楊瀚程,王芳,張佳杰.基于FPGA的嵌入式三臺以太網(wǎng)設(shè)計[J].計算機工程,2007,33(5):139-141.
[2]王飛石,廣田.基于ARM和DM9000的網(wǎng)卡接口設(shè)計與實現(xiàn)[J].ARM開發(fā)與應(yīng)用,2008,24(5):123-125.
[3]孫曉安.基于以太網(wǎng)的遠程監(jiān)測系統(tǒng)研究與設(shè)計[D].上海:華東理工大學,2011.
[4]王天杰.基于以太網(wǎng)的液位控制系統(tǒng)[D].青島:青島大學,2008.
[5]以太網(wǎng)協(xié)議棧芯片CH395[EB/OL].(2014-12-25)[2015 -01].http://wch.cn/.
[6]Stevens W.TCP/IP詳解卷1協(xié)議[M].北京:機械工業(yè)出版社,2014.
[7]鐘漢如,杜青林.PIC18F66J60以太網(wǎng)模塊的注塑機遠程監(jiān)控系統(tǒng)設(shè)計[J].機械與電子,2009(10):25-27.
秦磊(碩士研究生),研究方向為電工理論與新技術(shù)。
Ethernet Module Design Based on CH395 and SPl lnterface※
Qin Lei1,Sun Man1,Wang Xiaoliang2
(1.School of Electrical Engineering and Information,Sichuan University,Chengdu 610065,China;
2.College of Electronic Information,Sichuan University)
With the rapid development of the Internet of things(IoT),the Ethernet has become an important module of the embedded system.For lots of the cheap microcontrollers without Ethernet module,this paper uses the CH395chip to connect the SPI interface of the dsPIC33microcontroller to accomplish the function of the Ethernet.This design is easy,and the occupation of resources is very few,so it is a reliable design.
embedded system;CH395;Ethernet
TP368.2
A
??楊迪娜
2015-01-30)