国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STM32F407的雙CAN總線設(shè)計與實現(xiàn)

2016-06-13 10:03:08劉鵬
科技視界 2016年13期

劉鵬

【摘 要】本文是基于意法半導體(ST)新推出的一款高性能CortexTM-M4內(nèi)核的ARM 芯片STM32F407ZGT6,進行的雙CAN總線設(shè)計。在開發(fā)過程中采用了ST提供的可視化圖形界面開發(fā)工具STM32Cube進行底層驅(qū)動的配置,簡化了設(shè)計工作。但由于該工具鏈接的固件庫函數(shù)存在傳遞參數(shù)錯誤,使得CAN總線無法接收數(shù)據(jù),本文對該庫函數(shù)進行了更正。

【關(guān)鍵詞】STM32F407;CAN;STM32Cube

Design and Realization of Double CAN Buses on STM32F407

LIU Peng

(Chinese Electron Scientific and Technological Company 20th Institute, Xian Shaanxi 710068, China)

【Abstract】Based on a high-performance ARM with CortexTM-M4 core which launched by STMicroelectronics (ST)--STM32F407ZGT6, the double CAN bus is designed in this paper. A visual graphical interface-STM32cube which is provided by ST, is used to configure the underlying driver in this development process. It simplifies the design work. However, one of its library functions makes the CAN bus does not work, because of its error in transferring parameter. This paper makes some changes to this function.

【Key words】STM32F407; CAN; STM32Cube

0 前言

CAN 是一種多主機局域網(wǎng),它是由博世公司為現(xiàn)代汽車應用率先推出的,憑借著良好的可靠性以及卓越的靈活性,已被廣泛應用于工業(yè)自動化領(lǐng)域、建筑、環(huán)境控制等眾多領(lǐng)域[1]。近年來,在航空機載設(shè)備上使用CAN總線傳輸各模塊的BIT、日志等信息,可以更有效地管理模塊狀態(tài);使用成熟的CAN總線協(xié)議,保證了信息傳輸?shù)陌踩煽俊?/p>

為了提高系統(tǒng)處理信息的性能,本文使用了基于高性能ARM Cortex-M4系列的32位RISC內(nèi)核設(shè)計的STM32F407ZGT6芯片,最高工作頻率可達168MHz。

1 CAN總線原理

CAN總線結(jié)構(gòu)屬于多主競爭方式,具有多主站運行和分散仲裁的串行總線以及廣播通信的特點,不同節(jié)點之間可自由通信,CAN總線以報文為單位進行數(shù)據(jù)傳送,報文的優(yōu)先級由標識符決定,最低二進制數(shù)的標識符有最高的優(yōu)先級。

2 CAN總線通信設(shè)計

2.1 硬件設(shè)計

本文采用了意法半導體高性能處理器STM32F407ZGT6,提高了處理速度,其內(nèi)置的CAN控制器簡化了硬件電路的設(shè)計,外置的CAN電平轉(zhuǎn)換芯片采用的是SN65HVD230。系統(tǒng)中有若干個CAN模塊進行通信,為了統(tǒng)一匹配CAN總線的阻抗,要求每個模塊上無需添加匹配電阻,由系統(tǒng)統(tǒng)一在最遠的兩端節(jié)點處添加120歐匹配電阻。

2.2 基于可視化圖形界面的底層驅(qū)動配置

STM32CubeMX是ST的主動原創(chuàng),可以減少開發(fā)工作的時間和費用。STM32Cube覆蓋了STM32系列所有芯片,STM32Cube中的STM32CubeMX是一款圖形化軟件設(shè)置工具,允許使用圖形化向?qū)砩蒀語言代碼。

首先,根據(jù)模塊的功能對STM32的IO口進行初始化,需實現(xiàn)的外設(shè)有兩路CAN、一路UART、一路I2C,還有若干GPIO(實現(xiàn)對模塊狀態(tài)的監(jiān)控)。接下來,需對系統(tǒng)時鐘進行配置,STM32cube極大的簡化了開發(fā)人員的工作,使用更形象的圖形界面表示時鐘的配置關(guān)系,如圖1。本文中由于外部空間的限制,無法使用外部晶振,故本文中采用的是內(nèi)部時鐘HSI(16MHz),通過相應配置使得處理器主時鐘達到最大值168MHz,相應的外設(shè)時鐘也達到最大的42MHz。最后,對CAN控制器進行配置,將CAN的波特率設(shè)置為1Mb/s,CAN控制器工作在正常模式,采用雙路CAN總線互為備份,在該ARM芯片中內(nèi)置的兩個CAN控制器是主從關(guān)系,對于用戶使用而言,只有過濾器的設(shè)計需注意,其他方面無任何差別。

2.3 軟件設(shè)計

在STM32cube完成初始化之后,需開發(fā)人員編寫相應的應用程序,實現(xiàn)系統(tǒng)對該模塊CAN協(xié)議的要求,軟件流程圖如圖2所示,CAN的接收和發(fā)送均采用中斷方式。

使用STM32cube的好處顯而易見,但也存在弊端。例如由于可視化界面使得開發(fā)人員幾乎無需了解底層寄存器的調(diào)用情況,而一旦出現(xiàn)問題需要查看寄存器定位故障時將很難查找到原因。

在本設(shè)計中遇到CAN無法接收數(shù)據(jù)的故障,為查找故障原因,作者在熟悉各寄存器功能后,通過單步調(diào)試發(fā)現(xiàn)CAN的接收數(shù)據(jù)函數(shù)CAN_Receive_IT()無法讀取硬件FIFO中的數(shù)據(jù),最后通過添加一個結(jié)構(gòu)體變量User_recieve_IT,先將FIFO的值賦給該結(jié)構(gòu)體變量,再將該結(jié)構(gòu)體直接賦給hcan->pRxMsg,使得CAN接收數(shù)據(jù)成功。

3 結(jié)果與分析

使用CANALYST-Ⅱ分析儀對模塊進行了測試,連續(xù)多次發(fā)送CAN命令100條、間隔時間1ms,全部得到正確回復。同時,PC機串口接收的模塊返回數(shù)據(jù)與CAN測試結(jié)果同步。人為使得CAN_H對地短路導致總線關(guān)閉,再取消短路后,總線自動恢復,證明CAN總線的可靠性很高。

本文中使用圖形化軟件設(shè)置工具STM32cube對ARM芯片進行底層驅(qū)動的配置,大大提高了開發(fā)人員的工作效率,降低錯誤出現(xiàn)的概率。同時,作者也解決了CAN接收函數(shù)中傳遞參數(shù)出現(xiàn)的錯誤。

圖3 CAN調(diào)試結(jié)果和UART輸出數(shù)據(jù)

【參考文獻】

[1]佟國香.基于CAN總線的STM32應用編程及實現(xiàn)[J].上海:信息技術(shù),2015,10:49.

[責任編輯:湯靜]

贵溪市| 额济纳旗| 新河县| 长治县| 九龙城区| 城市| 蒲江县| 唐河县| 青海省| 滁州市| 青龙| 大港区| 永登县| 宁都县| 屏东市| 长岛县| 英吉沙县| 门头沟区| 怀来县| 全椒县| 青州市| 长泰县| 禹州市| 嘉善县| 岢岚县| 饶阳县| 和田市| 昌都县| 峨眉山市| 吴川市| 东乌珠穆沁旗| 梅州市| 莲花县| 陆川县| 通化县| 隆林| 无为县| 南郑县| 双鸭山市| 武陟县| 肥城市|