999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

船用嵌入式保護裝置通信接口設(shè)計

2024-03-15 12:17:18張維佳
船電技術(shù) 2024年2期
關(guān)鍵詞:單片機

周 鑫,張維佳

(武漢船用電力推進裝置研究所,武漢 430064)

0 引言

隨著嵌入式設(shè)備的快速發(fā)展,網(wǎng)絡(luò)技術(shù)的應(yīng)用廣泛。以太網(wǎng)接口以其傳輸速度快,效率高,實時性好等特點廣泛運用于各嵌入式系統(tǒng)中,是信息傳遞的重要組成部分。在船用綜合保護裝置中,多采用以太網(wǎng)MODBUS/TCP 通信,經(jīng)常出現(xiàn)一對多進行通訊,本文采取嵌入式多個網(wǎng)口,可以很好的解決這一問題。通過以ARM 內(nèi)核的STM32F103zet6 單片機作為系統(tǒng)控制核心部分,dm9000c 作為網(wǎng)卡用于接收數(shù)據(jù)和發(fā)送數(shù)據(jù),通過軟件編程,實現(xiàn)下位機與上位機之間的TCP 協(xié)議網(wǎng)絡(luò)通信。

1 芯片介紹

STM32F103 采是由STM 公司生產(chǎn)的32 位FLASH 存儲器單片機,采用的是ARM Cortex-M3內(nèi)核的增強型芯片。其最高工作頻率為72MHZ,內(nèi)部數(shù)據(jù)路徑和寄存器都是32 位。具有高功能、低功耗、方便開發(fā)。以太網(wǎng)接口是一個重要的外設(shè),通過雙絞線進行數(shù)據(jù)傳輸,傳輸速度最快可達到100 MBPS 或1GBPS。

DM9000C,一個10/100M 自適應(yīng)的PHY 和4K DWORD 值的SRAM 。

DM9000C 是一款完全集成的、性價比高、引腳數(shù)少、帶有通用處理器接口的單芯片快速以太網(wǎng)控制器,并且DM9000C 屬于并口網(wǎng)卡。通過采用STM32 的FSMC 接口來驅(qū)動DM9000C。該DM9000C 適用于提供支持8 位,16 位和32 位數(shù)據(jù)接口訪問內(nèi)部存儲器,以支持不同的處理器。dm9000c 的特性可以自適應(yīng)10、100M 收發(fā)器,內(nèi)置16K 字節(jié)的SRAM,支持硬件幀校驗,并且dm9000c 存在多種型號,有100 引腳,48 引腳??梢赃m用于不同型號的單片機芯片。

2 系統(tǒng)設(shè)計

2.1 系統(tǒng)總體框架

本項目采取通過STM32F103zet6 單片機同時控制2 個DM9000C 網(wǎng)卡芯片,連接兩個客戶端,實現(xiàn)同時進行數(shù)據(jù)傳輸。

首先在main 函數(shù)中對DM9000C 進行初始化,并設(shè)置好中斷優(yōu)先級,再將發(fā)送的數(shù)據(jù)以TCP/IP幀格式進行封包處理,然后將數(shù)據(jù)通過FSMC 寫入SRAM 中,之后DM9000C 通過軟件編程實現(xiàn)的TCP 通信協(xié)議將數(shù)據(jù)從網(wǎng)口發(fā)送給上位機。兩個網(wǎng)口都是通過上述方法實現(xiàn)數(shù)據(jù)發(fā)送,且不會發(fā)生沖突。

STM32F103zet6 單片機通過接受中斷來接受發(fā)送過來的數(shù)據(jù)。DM9000C 先將遠程數(shù)據(jù)接收后,放入緩存當(dāng)中,同時給單片機發(fā)送中斷信號,單片機接到中斷信號后,就會開始執(zhí)行程序代碼從FSMC 中將DM9000C 緩沖中的數(shù)據(jù)讀取出來,進行相應(yīng)的邏輯解析得到數(shù)據(jù)。這里要注意的是,兩個網(wǎng)口存放數(shù)據(jù)的地址是不一樣的,從DM9000C 中得到的數(shù)據(jù)要分別存放到不同緩存區(qū),并且如果是兩個DM9000C 傳輸,會產(chǎn)生兩個接收數(shù)據(jù)中斷信號,這時要設(shè)置不同的中斷優(yōu)先級,來區(qū)分數(shù)據(jù)處理的先后順序,以免中斷被另一中斷打斷。

通過將DM9000C 的片選信號CS與單片機的NE2 相連,當(dāng)FSMC_NE2 發(fā)送低電平信號時,此時運行當(dāng)前DM9000C 芯片,注意的是另一個DM9000C 片選信號鏈接單片機的 NE1。DM9000C 的讀寫信號RD 與WR 分別與單片機的NEW 和NOE 相連,另一個DM9000C 的鏈接方式一樣。

CMD 信號決定單片機是收發(fā)命令還是數(shù)據(jù),當(dāng)為1 時,就是控制DM9000C 進行寫數(shù)據(jù)操作,當(dāng)為0 時,就是控制DM9000C 進行寫命令操作。

2.2 軟件接口設(shè)計

首先在程序中將DM9000c 初始化:設(shè)置好接收中斷函數(shù),以及中斷優(yōu)先級。

并且分別定義 DM9000c 網(wǎng)卡芯片接在FSMC 的數(shù)據(jù)地址。

#define DM9000_DATE_BASE 0x60000002

這是其中一個數(shù)據(jù)地址;#define DM9000_DATE_BASE2 0x64000002

這是另一個數(shù)據(jù)地址,然后將接收到的數(shù)據(jù)存入到不同的緩存區(qū)。

這樣數(shù)據(jù)都已經(jīng)寫入到了緩存當(dāng)中,同理另一個網(wǎng)口接收數(shù)據(jù)。之后將接收的數(shù)據(jù)按相應(yīng)的邏輯處理即可。

將已經(jīng)處理好的數(shù)據(jù),通過前面定義好的地址發(fā)送出去

由于定義的地址不同,所以兩個網(wǎng)口的數(shù)據(jù)并不會互相沖突。

2.2 驅(qū)動DM9000C 讀寫寄存器

圖2 DM9000c 讀時序

圖3 DM9000c 寫時序

想要實現(xiàn)讀寫寄存器,就必須先控制好CMD引腳。

先分別定義好兩個dm9000c 芯片的基地址,這里舉其中一個來說明。

需要注意的是讀dm9000 里面的數(shù)據(jù)時,需要判斷數(shù)據(jù)的長度和dm9000 讀取數(shù)據(jù)時的狀態(tài)是否正常,這里可以根據(jù)需要做相應(yīng)邏輯上的異常處理。

在dm9000c 中,還有一些PHY 寄存器,PHY寄存器的地址空間為5 位。對這些寄存器的操作會影響網(wǎng)卡芯片的初始化和網(wǎng)絡(luò)連接。一般不對它進行操作,一般PHY 寄存器采用分頁技術(shù),基本上所有的PHY 芯片擴展都采用這種類似方案

至此,我們已經(jīng)寫好了兩個最基本的函數(shù): int dm9000_tx()和structpbuf *dm9000_rx()。

3 網(wǎng)絡(luò)模塊軟件設(shè)計

3.1 數(shù)據(jù)包的發(fā)送

dm9000c 將SRAM 作為緩存區(qū)用來接收和發(fā)送數(shù)據(jù),其中發(fā)送數(shù)據(jù)的緩存區(qū)大小為3KB。數(shù)據(jù)包以結(jié)構(gòu)體的形式發(fā)送到輸出數(shù)據(jù)緩存區(qū)內(nèi)。我們可以將這個結(jié)構(gòu)體理解成為一個鏈表,這樣傳輸數(shù)據(jù)的效率將會更高。

我們將playload 作為一個指針指向這個結(jié)構(gòu)體起始的位置。用len 表示數(shù)據(jù)的長度。

Stm32 在發(fā)送數(shù)據(jù)之前通常會關(guān)閉dm9000網(wǎng)卡中斷,然后將數(shù)據(jù)寫到SRAM 中,每次只寫一個字的數(shù)據(jù),并判斷其長度。隨后設(shè)置好發(fā)送寄存器,然后將SRAM 里的數(shù)據(jù)發(fā)送出去。這時如果緩存區(qū)里的數(shù)據(jù)沒有了,則表示已經(jīng)發(fā)送完成。之后再次將指針指向起始的位置。如果發(fā)送不成功則直接返回結(jié)束,并清除中斷標記。詳細的流程圖如下:

由于是多個以太網(wǎng)口,需要注意的是發(fā)送數(shù)據(jù)的地址是不一樣的。

3.2 數(shù)據(jù)包的接收

dm9000 接收數(shù)據(jù)的方式是通過中斷的形式接收的。接收數(shù)據(jù)之前會將中斷標志清零并產(chǎn)生一個互斥變量鎖住dm9000c,避免這時處理其他信息導(dǎo)致處理信息紊亂。當(dāng)接收到的數(shù)據(jù)通過crc16 校驗后,會產(chǎn)生一個中斷信號,這個時候stm32 就可以在接收中斷發(fā)生時,接收數(shù)據(jù)包并讀取數(shù)據(jù)包的長度,隨后按照TCP 協(xié)議將其進行解析,具體的流程圖如下:

圖4 數(shù)據(jù)包發(fā)送流程圖

圖5 數(shù)據(jù)包接收流程圖

要注意的是,接收數(shù)據(jù)時擴開內(nèi)存空間時,要選用2 個不同的內(nèi)存空間,以免照成2 個網(wǎng)口接收數(shù)據(jù)紊亂,數(shù)據(jù)被互相覆蓋。并且判斷數(shù)據(jù)長度時如果小于64 或者大于設(shè)定的數(shù)據(jù)最大長度時,要將數(shù)據(jù)丟除。

4 TCP 通信實驗

通過STM32 對數(shù)據(jù)包進行封包和解析后。再通過dm9000c 進行數(shù)據(jù)傳輸。采用tcp 通信進行實驗驗證:

將STM32 作為服務(wù)器,將PC 端作為客戶端,將PC 端地址設(shè)為192.168.1.102,將服務(wù)器的2個網(wǎng)口芯片的IP 地址分別設(shè)為192.168.1.100;192.168.1.101。分別在PC 端ping 這兩個IP 地址,發(fā)現(xiàn)丟包率為0。實驗結(jié)果表明,設(shè)計的以太網(wǎng)接口的可靠性高,傳輸速度快,丟包率低。為嵌入式設(shè)備通訊提供了有效的方案。

5 結(jié)束語

本文章介紹了,dm9000c 與stm32 單片機的硬件接口方案以及軟件接口方案和數(shù)據(jù)收發(fā)的原理以及軟件實現(xiàn)的流程。并通過TCP 網(wǎng)絡(luò)通信實驗驗證了該設(shè)計的可行性。

猜你喜歡
單片機
基于單片機的SPWM控制逆變器的設(shè)計與實現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機的多功能智能插排
電子制作(2019年11期)2019-07-04 00:34:48
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
MSP430單片機在仿真中要注意的幾點問題
電子制作(2017年9期)2017-04-17 03:00:53
基于單片機的平衡控制系統(tǒng)設(shè)計
電子制作(2017年19期)2017-02-02 07:08:27
基于單片機的三維LED點陣設(shè)計
電子制作(2016年21期)2016-05-17 03:52:51
Microchip推出兩個全新PIC單片機系列
基于Proteus的單片機控制系統(tǒng)的仿真設(shè)計
主站蜘蛛池模板: 成人一区在线| 尤物视频一区| 四虎AV麻豆| 国产高潮流白浆视频| 欧美精品v欧洲精品| 日本草草视频在线观看| 精品91自产拍在线| 91国内在线观看| 国产国产人成免费视频77777| 福利视频久久| 国产成人h在线观看网站站| 最新加勒比隔壁人妻| 香蕉国产精品视频| 成人一区专区在线观看| 伦精品一区二区三区视频| 国产波多野结衣中文在线播放| 99热这里只有精品国产99| 天天躁夜夜躁狠狠躁躁88| 精品视频在线一区| 日韩毛片基地| 欧美啪啪网| 日韩欧美高清视频| 精品亚洲麻豆1区2区3区| 99在线免费播放| 91激情视频| 久久精品人人做人人综合试看| 久久精品国产精品青草app| 欧美一级在线看| 国产69囗曝护士吞精在线视频| 嫩草在线视频| 亚洲成人免费看| 色综合中文字幕| 国产精品久久精品| 99偷拍视频精品一区二区| 久久狠狠色噜噜狠狠狠狠97视色| 亚洲欧美综合另类图片小说区| 99久视频| 亚洲熟妇AV日韩熟妇在线| 欧美国产综合视频| 国产情精品嫩草影院88av| 国产白浆在线| 尤物成AV人片在线观看| 1769国产精品视频免费观看| 国产精品尤物在线| 99热这里只有精品在线观看| 午夜免费视频网站| 国产精品尤物铁牛tv | 色综合久久综合网| 成人日韩精品| 久久久久亚洲AV成人网站软件| 日韩欧美中文在线| 有专无码视频| 久久成人免费| 国产精品林美惠子在线播放| 一级做a爰片久久毛片毛片| 动漫精品中文字幕无码| 一级毛片免费不卡在线| 一区二区偷拍美女撒尿视频| 日本AⅤ精品一区二区三区日| 欧美精品影院| 国产成人综合亚洲欧美在| 丰满的少妇人妻无码区| 91丝袜美腿高跟国产极品老师| 国产永久在线观看| 成人午夜视频网站| 午夜国产在线观看| 伊人福利视频| 国产三级毛片| 色色中文字幕| 日韩最新中文字幕| 四虎国产在线观看| 精品伊人久久久大香线蕉欧美| 免费人成黄页在线观看国产| 99re免费视频| 尤物视频一区| 最新亚洲av女人的天堂| 国产AV毛片| 亚洲第一页在线观看| 欧美日韩国产综合视频在线观看| 老司机aⅴ在线精品导航| 久久精品无码一区二区日韩免费| 试看120秒男女啪啪免费|