亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的CAN總線驅(qū)動設計與實現(xiàn)

        2023-12-29 00:00:00張興雷楊玻鞏彥斌尉嘉維
        機電信息 2023年7期

        摘要:機載產(chǎn)品通常系統(tǒng)復雜,功能單元眾多,實現(xiàn)國產(chǎn)化周期長、難度大。FPGA是一種通過編程改變邏輯功能的半定制芯片,具有編程配置靈活、開發(fā)周期短等特點,為機載產(chǎn)品國產(chǎn)化提供了新思路。鑒于此,深入研究了CAN總線通信協(xié)議,分析了CAN驅(qū)動的數(shù)據(jù)流和組織結構,實現(xiàn)了基于FPGA的SJA1000 CAN總線驅(qū)動設計,并將該設計應用于某綜合電子戰(zhàn)管理系統(tǒng),證實了其有效性和可靠性。

        關鍵詞:FPGA;CAN總線;驅(qū)動設計

        中圖分類號:TP311" 文獻標志碼:A" 文章編號:1671-0797(2023)07-0056-03

        DOI:10.19514/j.cnki.cn32-1628/tm.2023.07.014

        0" " 引言

        隨著嵌入式系統(tǒng)互聯(lián)通信的高速發(fā)展,傳統(tǒng)的RS232、RS485、RS422等總線受傳輸距離、抗干擾能力、負載能力、傳輸速率的影響,逐漸制約了嵌入式系統(tǒng)的發(fā)展。

        CAN總線系統(tǒng)是一種多主控的總線系統(tǒng),在總線控制器的協(xié)調(diào)下實現(xiàn)兩個節(jié)點之間大量數(shù)據(jù)的傳輸,由于CAN網(wǎng)絡消息的發(fā)送是廣播式的,即所有節(jié)點偵測的數(shù)據(jù)是一致的,因此非常適合控制信息和數(shù)據(jù)信息的傳輸[1-2]。

        CAN總線具有超長的傳輸距離,理論上限為10 km,因此被廣泛應用于超遠距離信息傳輸?shù)墓I(yè)項目中。單條總線可負載110個節(jié)點,互不干擾;高波特率保證了數(shù)據(jù)傳輸速率[3]。

        由于國產(chǎn)化需求,進口芯片需要進行原位替換,面對功能可裁剪的嵌入式系統(tǒng),本文提出了一種基于FPGA實現(xiàn)的CAN總線驅(qū)動,并對其設計進行了詳細介紹。

        1" " SJA1000

        1.1" " CAN通信結構

        CAN通信結構如圖1所示,以FPGA實現(xiàn)的CAN協(xié)議IP核為中心,采用CPU+FPGA+驅(qū)動器的架構。

        FPGA和CPU之間通過Local Bus進行通信,外掛國微SM65HVD230D型收發(fā)器對外進行CAN通信[4],模塊支持5路CAN總線接口。

        1.2" " CAN通信幀

        CAN通信幀分為兩種,包括11位標識符的標準幀和29位標識符的擴展幀,兩者只是在標識符長度即幀ID的長度上不一樣。

        CAN標準幀信息包括信息和數(shù)據(jù)兩部分共11個字節(jié),前3個字節(jié)為信息部分,后8個字節(jié)為數(shù)據(jù)部分。第一個字節(jié)為幀信息,其中前4位DLC表示數(shù)據(jù)幀的實際長度,第6位(RTR)為幀類型,數(shù)據(jù)幀設置為0,遠程幀設置為1;第7位(FF)為幀格式,標準幀設置為0。標準幀格式如表1所示。

        CAN擴展幀信息為13個字節(jié),前5個字節(jié)為信息部分,第一個字節(jié)與標準幀相同,剩余信息部分為報文識別碼[5]。擴展幀格式如表2所示。

        CAN協(xié)議建立在OSI7層開放互聯(lián)參考模型基礎之上,定義了數(shù)據(jù)鏈路層和物理層,保證節(jié)點間無差錯傳輸。

        2" " CAN驅(qū)動實現(xiàn)

        通過FPGA實現(xiàn)了SJA1000芯片功能,能夠正確傳輸CAN通信幀;要完成數(shù)據(jù)的完整發(fā)送還需要對來自CPU的數(shù)據(jù)進行解包處理,對于來自其他模塊的CAN通信幀進行組包。因此,CAN驅(qū)動的設計由五部分構成:CAN初始化、CAN通信幀發(fā)送和接收以及CAN通信幀的組包和解包。

        2.1" " CAN初始化

        綜合電子戰(zhàn)管理系統(tǒng)中存在大量的CAN節(jié)點,因此采用擴展幀進行通信。CAN初始化主要完成根據(jù)擴展幀定義的數(shù)據(jù)結構的初始化以及相關寄存器的配置[6]。

        CAN通信幀的幀格式設置為擴展幀,幀類型設置為數(shù)據(jù)幀,每幀的數(shù)據(jù)長度設置為8個字節(jié),數(shù)據(jù)和報文識別碼初始化為0。在通信幀發(fā)送之前需要根據(jù)用戶需求對以上數(shù)據(jù)重新設置,確保通信幀的正確性。初始化還需要申請用于存放接收的通信幀ringbuffer空間,用于存放多組通信幀。對CAN寄存器的配置主要包括波特率、中斷使能、時鐘分頻以及輸出控制器等。以波特率配置為例,需要對總線時序寄存器0和總線時序寄存器1同時進行配置,兩個寄存器根據(jù)約束條件能夠搭配出不同的采樣率以適應不同的系統(tǒng)需求。初始化還包括信號量創(chuàng)建、中間數(shù)據(jù)存儲空間申請、中斷掛接以及獲取CAN通信幀任務的創(chuàng)建。

        2.2" " CAN通信幀發(fā)送和接收

        CAN通信幀發(fā)送前完成通信幀的配置并對傳輸緩沖區(qū)狀態(tài)進行判斷,在發(fā)送結束前對傳輸完成狀態(tài)進行判斷,確保通信幀已完成發(fā)送。

        CAN通信幀接收之前對接收緩沖區(qū)狀態(tài)進行判斷,當存在數(shù)據(jù)消息時進行獲取。通信數(shù)據(jù)的全部CAN通信幀接收完成之后需要進行組包處理,因此需要先將這些CAN通信幀存儲到緩沖區(qū)中。每次完成通信幀的接收通過設置命令寄存器釋放接收緩沖區(qū),確保后續(xù)通信幀的正確傳輸。

        2.3" " CAN通信幀的組包和解包

        CAN通信幀的解包將來自用戶的數(shù)據(jù)分解成CAN通信幀,通過調(diào)用CAN通信幀發(fā)送接口將每一幀CAN數(shù)據(jù)發(fā)送出去。CAN通信幀的組包將來自CAN總線通信幀中的數(shù)據(jù)部分進行組裝拼接,將完整的數(shù)據(jù)反饋給用戶。

        完成用戶的數(shù)據(jù)的解包,需要對每個通信幀的數(shù)據(jù)進行存儲,然后統(tǒng)一將這些CAN通信幀發(fā)送出去。因此CAN通信幀的發(fā)送也需要建立發(fā)送ringbuffer進行臨時存儲,發(fā)送ringbuffer的大小不小于解包后的數(shù)據(jù)量。為保證發(fā)送ringbuffer中數(shù)據(jù)的正確性,對解包進行同步處理,即在解包前獲取信號量,在發(fā)送完成后釋放信號量。

        CAN通信幀的發(fā)送通過寫控制寄存器完成,便于控制;接收則是通過中斷方式完成,效率高。

        為了提高系統(tǒng)性能,在初始化階段創(chuàng)建接收CAN通信幀的任務,接收任務的優(yōu)先級大于應用任務,確保數(shù)據(jù)接收的效率。接收任務完成CAN通信幀中數(shù)據(jù)的組裝和拼接,將組裝完成的數(shù)據(jù)暫存到用戶數(shù)據(jù)ringbuffer中,在用戶發(fā)起數(shù)據(jù)獲取操作時將數(shù)據(jù)反饋給用戶。

        CAN總線驅(qū)動設計中采用發(fā)送ringbuffer、接收ringbuffer和用戶數(shù)據(jù)ringbuffer三重數(shù)據(jù)緩沖結構,使得用戶發(fā)送和接收的數(shù)據(jù)的正確性、完整性得到保障。CAN通信的數(shù)據(jù)流圖如圖2所示。

        綜合電子戰(zhàn)管理系統(tǒng)中CAN網(wǎng)絡邏輯互聯(lián)采用多網(wǎng)段獨立拓撲方式,通過FPGA實現(xiàn)5路獨立的CAN總線功能。CAN總線需要對5路進行初始化,數(shù)據(jù)的發(fā)送通過同步機制按順序下發(fā)5個通道的數(shù)據(jù),數(shù)據(jù)的接收則對5個通道的數(shù)據(jù)同時存儲。

        3" " 功能測試

        自測試階段完成了5路CAN總線的自環(huán)測試,單通道發(fā)送,剩余通道接收。聯(lián)試階段將本文的CAN總線驅(qū)動應用于某綜合電子戰(zhàn)管理系統(tǒng),計算機板為主節(jié)點,與機架內(nèi)的其他模塊一起掛接在CAN 0通道上,機架外4臺設備分別連接到剩余4個通道。

        主節(jié)點發(fā)送數(shù)據(jù)到5個通道中,通過CAN盒可以檢測到CAN總線中的數(shù)據(jù)。系統(tǒng)初始化成功后,主節(jié)點與其他節(jié)點間進行了長時間的通信,經(jīng)測試該系統(tǒng)穩(wěn)定、可靠。CAN總線0通道實驗結果如圖3所示。

        4" " 結語

        本文研究了基于FPGA的CAN總線驅(qū)動設計,提出了三重環(huán)形緩沖結構,并以某綜合電子戰(zhàn)管理系統(tǒng)為應用背景,對該驅(qū)動設計進行了測試,驗證了該驅(qū)動的正確性以及該設計的可靠性。

        [參考文獻]

        [1] 劉吉平,鄭增忠,林少東.基于HK32F103的CAN的驅(qū)動實現(xiàn)[J].中國集成電路,2022,31(4):72-77.

        [2] 劉海龍,吳海波,張蕾.基于S3C6410及Wince系統(tǒng)的CAN驅(qū)動的設計與優(yōu)化[J].電子設計工程,2021,29(8):72-76.

        [3] 尹加豹,朱濤,崔凱華.VxWorks系統(tǒng)下CAN驅(qū)動的設計與優(yōu)化[J].計算機工程,2020,46(3):192-197.

        [4] 史小燕,朱建鴻.波特率自適應的CAN驅(qū)動在嵌入式Linux下的實現(xiàn)[J].計算機系統(tǒng)應用,2018,27(1):231-234.

        [5] 趙向坤.VxWorks下CAN總線驅(qū)動程序設計[J].工業(yè)控制計算機,2016,29(6):1-2.

        [6] 張才軍,葉水生,王萬兵.Linux下基于MCP2515的CAN總線驅(qū)動程序設計[J].數(shù)字技術與應用,2016(4):179.

        收稿日期:2022-12-25

        作者簡介:張興雷(1993—),男,河北人,工程師,研究方向:嵌入式驅(qū)動。

        狠狠色噜噜狠狠狠狠888奇禾| 蜜桃精品人妻一区二区三区| 亚洲av成人片在线观看| 亚洲视频免费在线观看| 日本少妇浓毛bbwbbwbbw| 国产va免费精品观看| 99精品视频69v精品视频免费| 最新日本女优中文字幕视频| 亚洲熟妇无码久久精品| 伊人色综合视频一区二区三区| 国产精品综合久久久久久久免费| 亚洲一区二区三区在线激情| 人人妻人人澡人人爽欧美一区| 免费人成在线观看视频播放| 久久精品无码一区二区2020| 亚洲av日韩av天堂久久不卡| 国产精品亚洲精品日韩已方| 特级婬片国产高清视频| 日韩一区二区不卡av| 按摩少妇高潮在线一区| 日本成本人片视频免费| 亚洲经典三级| 激情人妻网址| 久久精品国产亚洲av成人文字| 国产美女精品一区二区三区| 高清国产日韩欧美| 亚洲国产都市一区二区| 亚洲成在人线视av| 亚洲自偷自拍熟女另类| 国产亚洲精品综合在线网址| 亚洲乱妇熟女爽到高潮视频高清| 精品视频无码一区二区三区| 日本免费一区尤物| 中文字幕人妻乱码在线| 丁香五月亚洲综合在线| 亚洲巨乳自拍在线视频| 亚洲熟妇夜夜一区二区三区| 高清日韩av在线免费观看| 天天夜碰日日摸日日澡| 日韩女人毛片在线播放| 亚洲av专区一区二区|