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