南京信息工程大學智能車技術報告_第1頁
南京信息工程大學智能車技術報告_第2頁
南京信息工程大學智能車技術報告_第3頁
南京信息工程大學智能車技術報告_第4頁
南京信息工程大學智能車技術報告_第5頁
已閱讀5頁,還剩54頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第九屆“飛思卡爾”杯全國大學生智能汽車競賽技 術 報 告學 校:南京信息工程大學隊伍名稱:FIW隊參賽隊員:張夏杰 楊中欣 鄭雅婷帶隊教師:周旺平 孫玉寶 I關于技術報告和研究論文使用授權的說明 本人完全了解第八屆“飛思卡爾”杯全國大學生智能汽車競賽關保留、使用技術報告和研究論文的規定,即:參賽作品著作權歸參賽者本人,比賽組委會和飛思卡爾半導體公司可以在相關主頁上收錄并公開參賽作品的設計方案、技術報告以及參賽模型車的視頻、圖像資料,并將相關內容編纂收錄在組委會出版論文集中。 參賽隊員簽名: 帶隊教師簽名: 日 期: VII摘 要本文針對第九屆飛思卡爾智能車比賽,主要介紹了南京信息工程大學FIW

2、隊設計的智能車系統。該智能車系統以MK60N512VMD100微控制器為核心控制單元,采用線性CCD攝像頭來采集賽道信息,并對采集到的圖像進行軟件二值化,利用邊沿檢測算法提取黑色引導線。通過光電編碼器檢測模型車的實時速度,使用PID控制算法來調節電機轉速和舵機轉向角,實現對模型車運動速度和運動方向的控制。為了保證智能車運行時的快速性和穩定性,使用了無線模塊和藍牙串口模塊,鍵盤液晶模塊作為調試工具,并進行了大量硬件與軟件調試。實驗結果表明,該系統設計方案確實可行。關鍵字: MK60N512VMD100,PID,線性CCD,邊沿檢測算法;VIIAbstractAccording to t

3、he Ninth Freescale Smart Car Competition, this article mainly introduces the smart car system designed by the FIW team from Nanjing University of Information Science and Technology. The smart car system uses MK60N512VMD100 micro controller as the core control unit,

4、 captures the information of the track by linear CCD camera, obtains two different values by software from the collected images, and uses edge detection gorithm to extract black guide line. We use a special photoelectric encoder as a sensor to detect the real-

5、time speed of the model car, and adjust the motor speed and steering angle through the PID control algorithm to control the speed and direction of the motion. In order to improve the rapidity and stability of the car, we add a wireless module, a

6、 bluetooth serial module, a keyboard and  a LCD module as  debugging tools, and carry out a lot of  tests based on hardware and software. The results show that the system design is feasible.Keywords: MK60N512VMD100, PID, linear CCD, edge de

7、tection algorithm;VII目 錄第1章 引言.1第2章 系統總體設計.22.1系統概述.22.2 整車布局.3第3章 機械設計及實現.43.1轉向輪傾角的調整.43.1.1主銷后傾.43.1.2 主銷內傾.53.1.3 前輪外傾.53.1.4 前輪前束. 53.2 舵機安裝.63.3 編碼器的安裝.73.4 線性CCD的安裝.73.5 齒輪嚙合與差速調整.8第4章 智能車硬件系統設計及實現.94.1 硬件設計方案.94.2 單片機最小系統板.94.3 電源穩壓電路.10 4.4 電機驅動.114.5 輔助調試模塊.12第5章 軟件系統設計及實現.135.1 系統軟件流

8、程圖. 135.2 線性CCD賽道識別處理.145.2.1 圖像預處理.145.2.2 邊沿檢測算法. 145.3 控制策略. 145.3.1 舵機PD控制.145.3.2 速度PID控制.15第6章 系統開發及調試工具.176.1 軟件開發工具.176.2 上位機.18第7章 車模的主要技術參數.19第8章 結論.208.1制作成果.208.2 問題與思考. 208.3 不足與改進. 208.4 致謝與總結. 21參考文獻.22附錄附錄A:系統原理圖.附錄B:部分程序源代碼. I第二章 系統總體設計第1章 引言全國大學生“飛思卡爾”杯智能汽車競賽起源于韓國,是韓國漢陽大學汽車控制實驗室在飛思

9、卡爾半導體公司資助下舉辦的以HCSl2單片機為核心的大學生課外科技競賽。組委會提供一個標準的汽車模型、直流電機和可充電式電池,參賽隊伍要制作一個能夠自主識別路徑的智能車,在專門設計的跑道上自動識別道路行駛,最快跑完全程而沒有沖出跑道為獲勝者。其設計內容涵蓋了控制、模式識別、傳感技術、汽車電子、電氣、計算機、機械、能源等多個學科的知識,對學生的知識融合和實踐動手能力的培養,具有良好的推動作用。本技術報告主要包括機械系統、硬件系統、軟件系統等,詳盡地闡述了我們的設計方案,具體表現在硬件電路的設計以及控制算法的獨特想法。智能車的制作過程包含著我們的辛勤努力,這份報告可以說是凝聚了我們這半年來的血汗和

10、智慧,我們團隊此次能突破我校在歷年的參賽史上的突破,這也是我們共同努力的結果。在準備比賽的過程中,我們小組成員涉獵控制、模式識別、傳感器技術、汽車電子、電氣、計算機、機械等多個學科,半年來的經歷,培養了我們電路設計、軟件編程、系統調試等方面的能力,鍛煉了我們知識融合、實踐動手的能力,對今后的學習工作都有著重大的實際意義。在此要感謝南京信息工程大學信息與控制學院對此次比賽的關注,我們的成果離不開學校的大力支持及指導老師悉心的教導;還要感謝的是和我們一起協作的隊員們,協助,互促,共勉使我們能夠走到今天。 第二章 系統總體設計2.1系統概述該系統以Freescale32位單片機K60作為系統控制處理

11、器,采用基于線性CCD的圖像采集模塊獲取賽道圖像信息,對圖像進行軟件二值化,提取黑色引導線,算出賽道中心線,計算出小車與賽道中心線的位置偏差;通過光電編碼器來檢測車速,并采用MK60N512VMD100的輸入捕捉功能進行脈沖計算獲得速度;轉向舵機采用PD控制;驅動電機采用 PID控制,通過PWM控制驅動電路調整電機的功率;而車速的目標值由默認值、運行安全方案和基于圖像處理的優化策略進行綜合控制。根據智能車系統的基本需求,我們設計了系統結構圖,如圖2.1所示圖2.1系統結構圖2.2 整車布局 在整個設計過程中我們根據賽車的特點,在滿足比賽要求的情況下,力求系統簡單高效,因而在設計過程中盡量簡化硬

12、件結構,整車布局總結為以下6點:(1) 舵機采用立式安裝,以提高舵機的響應速度;(2) 采用強度高、質量輕的碳素桿制作線性CCD支架; (3) 為了降低車模重心,電池低位放置;(4) 將電池放在小車中間偏后,重心稍后,利于小車過彎; “FIW”的整車布局圖如圖2.2所示:圖2.2 整車布局圖 第三章 機械設計及實現光電組今年采用B車模,在整個調試過程中我們發現,車輛在高速情況對整車機械性能要求很高,為了能夠使車在高速情況下更穩定流暢地運行,我們在前期裝配時,對整車進行了細致的分析和裝配,在規則允許的范圍內進行改造,使車模的機械性能得到了提升。而前輪的束角和主銷傾角對車的高速運行下的穩定性影響是

13、最大的。舵機的靈敏程度同樣對高速運行的車輛起著至關重要的的作用。圖3.1 車模示意圖3.1轉向輪傾角的調整3.1.1 主銷后傾主銷的軸線相對于車輪的中心線向后傾斜的角度叫做主銷后傾角,前輪的重心在主銷軸線上,由于主銷后傾使前輪的重心不在車輪與地面的接觸點上,于是產生了離心力,這樣可以保證汽車在直線行駛的穩定性還可以幫助車輪自動回正。21第三章 機械設計及實現 圖3.1.1主銷后傾示意圖3.1.2 主銷內傾主銷軸線相對于車輪的中心線向內傾斜的角度叫主銷內傾角。主銷內傾角可以幫助舵機復位。但主銷內傾角不宜過大,否則會加速輪胎的磨損。3.1.3 前輪外傾轉向輪上端略向外傾斜的角度叫前輪外傾角。小車在

14、空載時如果車輪垂直于路面,承載后由于懸架的變形而出現車輪內傾,由于外端軸承明顯小于內端軸承,于是車輪工作的不安全性大大增加。為提高車輪的工作安全性,前輪要留有一定外傾角,承載后車輪正好垂直于地面。3.1.4 前輪前束前輪前束是指轉向輪前端向內傾。此舉是為了抵消前輪外傾帶來的轉向輪向兩側滾開的趨勢,最大限度地減少車輪行駛過程中的橫向滑移。圖3.1.4前輪前束示意圖 3.2 舵機安裝舵機安裝直接關系到是否能快速靈敏地轉向的問題。如果舵機調整不到位,將很大程度上限制轉向角度和轉向響應速度。舵機安裝有兩種方式,一種是臥式安裝,另外一種為立式安裝。臥式安裝為車模默認安裝方式,但這樣安裝會使左右兩邊輪子連

15、桿不等長,根據杠桿原理可知舵機對長連桿輪子用的力要大些,因此造成了舵機對左右兩邊轉向響應時間不一樣。另外由于臥式安裝會使連桿與水平面呈現一定角度,從力學知識可以知道在輪子轉向獲得的力只是舵機施加在連桿上力的一個水平方向上的分力。立式安裝把舵機架高,增長了力臂,使得小車反應更加靈活,但增大了阻力,力的作用減小。因此,根據舵機性能和實際情況確定高度,將舵機立式正放,提高了其響應速度,然后將支架以合適的高度固定在底盤上。如圖3.2所示。圖3.2舵機安裝圖3.3 編碼器的安裝編碼器是智能小車速度反饋元件,其安裝位置應該充分考慮測速的準確性,我們使用的是歐姆龍編碼器。歐姆龍編碼器連接線有四根,棕色為+5

16、V,藍色為負極,細黑和白色為信號輸出,信號線需上拉電阻510K,區分正反轉是通過相位差獲得。在嘗試了各種可能性后,采用了如圖的安裝方式。將編碼器安裝于車模尾部并盡量放低,與車輪傳動齒輪良好嚙合。 圖3.3 編碼器安裝圖3.4 線性CCD的安裝 CCD支架的選取,支架與車模的固定,CCD與支架的固定等,都會對小車的性能造成很大的影響。我們選取輕質碳桿作為CCD的支架,我們購買合適的器件將支架和車模牢牢的固定在一起,防止小車在運行過程中大幅抖動。CCD的安裝如圖3.4:圖3.4 線形CCD安裝圖3.5 齒輪嚙合與差速調整電機與差速齒輪嚙合主要是調整兩齒輪的齒間距,合適齒間距能夠減少兩齒輪的磨損,延

17、長其使用壽命。齒輪傳動部分安裝不恰當,會增大電機驅動后輪的負載;齒輪配合間隙過松則容易打壞齒輪過緊則會增加傳動阻力。所以我們在電機安裝過程中盡量使得傳動齒輪軸保持平行,傳動部分輕松、流暢,不存在卡殼或遲滯現象。差速結構的作用是在車模轉彎的時候,降低后輪與地面之間的滑動;并且還可以保證在輪胎抱死的情況下不會損害到電機。差速器的特性是:阻力越大的一側,驅動齒輪的轉速越低;而阻力越小的一側,驅動齒輪的轉速越高,以此次使用的后輪差速器為例,在過彎時,因外側后輪輪胎所遇的阻力較小,輪速便較高;而內側后輪輪胎所遇的阻力較大,輪速便較低。好的差速機構,在電機不轉的情況下,右輪向前轉過的角度與左輪向后轉過的角

18、度之間誤差很小,不會有遲滯或者過轉動情況發生。第四章 智能車硬件系統設計及實現4.1 硬件設計方案我們在硬件總體設計時綜合考慮了系統的可靠性、穩定性以及簡潔性。硬件設計應在可靠的基礎上使其簡單化,滿足穩定工作的基本要求,電源管理模塊要保證使整個系統供電穩定;保證傳感器信息采集準確有效;電機驅動則需在保證正常工作的情況下盡量減少對其他電路的干擾,所以電機驅動模塊與主板無論是設計還是制板都是分開的。同時為了提高系統的簡潔性,PCB板的形狀設計和安裝也充分考慮了車模的外觀和整體設計。整個智能車控制系統由三部分構成:K60最小系統板、主板、電機驅動和鍵盤電路板。4.2 單片機最小系統板MK60N512

19、VMD100是K60系列MCU。Kinetis系列微控制器是Cortex-M4系列的內核芯片。圖4.2 最小系統原理圖第四章 智能車硬件系統設計及實現最小系統使用K60100 PIN封裝,為減少主板空間,板上僅將本系統所用到的引腳引出,包括 PWM 接口,若干普通 IO 接口。其他部分還包括電源濾波電路、時鐘電路、復位電路、串行通訊接口、SPI接口。用到的接口如下:電機PWM波輸出:PTB0、PTB2舵機PWM波輸出:PTA5編碼器兩相信號輸入:PTB18、PTB19線性CCD圖像信號輸入:PTE2鍵盤輸入信號:PTD0、PTD1、PTD2、PTD3、PTD4、PTD5、PTD6、PTD7LC

20、D接口:PTA14、PTA15、PTA16、PTA174.3 電源穩壓電路智能車的硬件電路有可充電鎳鎘電池(7.2V、2000mAh)提供。系統中的各個電路模塊所需要的供電電壓是不相同的,所以設計了穩壓電路,將電池電壓轉換成各個模塊所需要的電壓。本系統中,+3.3V給單片機供電;+5V為LCD、光電編碼器、線性CCD模塊、電機驅動模塊供電;+6V為舵機供電;單片機供電選用了低壓差降壓穩壓芯片LM1117IPM-3.3,在壓差為1V時就可穩定輸出3.3V電壓。由于在電機驅動時電池壓降較大為提高系統穩定性,必須使用低壓差穩壓芯片。為此我們選用了低壓差線性穩壓芯片LM2940S-5.0為5V工作的芯

21、片供電。它們的紋波電壓小,能對負載的變化迅速做出反應,適合為各個模塊供電。圖4.3 電源穩壓電路4.4 電機驅動B車模電機功率比較大,在實際工作時轉速很快, 電機本身的性能直接決定了小車的行駛速度和加減速性能,因此,對驅動電路的參數要求十分嚴格, 驅動電路的參數性能對電機的發揮影響重大。圖4.4電機驅動電路4.5 輔助調試模塊輔助調試模塊主要用于智能汽車系統的功能調試、賽車狀態監控 。我們采用液晶OLED128*64和按鍵以及藍牙進行輔助調試,為方便調試提供了好的平臺。圖4.4 鍵盤電路圖第五章 軟件系統設計及實現第五章 軟件系統設計及實現5.1 系統軟件流程圖圖5.1主程序流程圖圖5.2 中

22、斷流程圖5.2 線性CCD賽道識別處理5.2.1 圖像預處理由于TSL1401線性CCD返回的數據是模擬量,單片機需要對其進行AD轉換后方能使用。要對CCD數據進行二值化,還需要設定一個閥值。但是由于CCD受環境光線影響較大,所以這個閥值需要實時變化即動態閾值,才能使CCD數據二值化后更準確。由于線性CCD數據中本身可能會有噪聲,賽道上的白色跑道可能會有斑點,賽道背景可能會反光等原因,CCD返回的數據不能直接使用。首先舍掉兩邊各7個像素點,對剩余數據進行比較求取最大最小值,然后將最大最小值求和平均得到動態閾值,由此進行二值化,二值化后再進行單點濾波。結果表明,此算法可行性較好。5.2.2邊沿檢

23、測算法本系統采用的黑線提取方案是:只尋找黑白跳變沿,然后根據跳變沿的位置及歷史數據來判斷左右黑線。經過實驗,本方案可靠性較高。(1) 從左向右檢測右黑線,從右向左檢測左黑線,記錄左右黑線坐標;(2) 兩邊都檢測到黑線,直接求和平均求出中心值;(3) 只檢測到一邊時,根據賽道寬度補線得出另一邊,求出中心值;(4) 兩邊都未檢測到時,根據CCD曝光時間判斷出是十字交叉處還是賽道背景;5.3 控制策略5.3.1 舵機PD控制本系統的方向控制策略是:根據實時采集左右黑線算出的中線位置與初始賽道中心線的偏差通過PD控制來計算方向控制量。濾波后的CCD數據中第8-120點的數據為有效數據,假設front_

24、l為左黑線的位置,front_r為右黑線的位置,所以當前賽道中心線為(front_l+front_r)/2,將中心線視野中心的值作差,把這個差值作為方向控制的輸入,乘以方向控制的P參數,即可得到方向控制量。同時方向控制加入了微分環節,即先計算本次方向控制的誤差與上一次方向控制的誤差的差,然后把此差乘以方向控制的D參數。微分環節的加入,不僅使車模在通過小S彎時能減小左右擺動,而且在較大彎道中轉彎更加平滑。 最后實現車模運行方向的控制。 5.3.2 速度PID控制數字PID在生產過程中是一種最普遍采用的控制方法,在機電、冶金、機械、化工等行業中獲得了廣泛的應用。將偏差的比例(P)、積分(I)和微分

25、(D) 通過線性組合構成控制量,對被控對象進行控制,故稱PID控制器。 數字PID的版本有非常多,但是比較常用的版本是位置式PID和增量式PID,其中位置式PID的特點是它的輸出與整個過去的狀態有關,用到了誤差的累加值,所以累積誤差較大,位置式PID適用于執行機構不帶積分部件的對象,如液伺服閥等;增量式PID的特點是它輸出的控制量對應的是本次執行機構位置的增量,而不是對應執行機構的實際位置,因此要求執行機構必須具有對控制量增量的累積功能,如步進電機等。本系統中速度控制使用了增量式PID和Bang-Bang控制。 PID算式連續控制系統中的PID控制規律是: 公式1計算機系統是采樣控制系統,只能

26、根據采樣時刻的偏差值計算控制量,數字PID是模擬連續系統PID控制規律的數字實現,所以要對控制系統反饋的信息進行離散化處理,用數字形式的差分方程代替連續系統的微分方程,即: 公式2 公式3 公式4得到位置式PID算法公式為: 公式5根據公式5可得前一時刻的PID輸出為: 公式6將公式5與公式6相減,得到增量式PID算法的計算公式為: 公式7在實驗中,根據需要選取其中的一個或者多個環節來對被控對象進行控制。本系統中的速度控制則使用了增量式PID中的三個環節。小車行駛途中,控制的主要思想:由于線性CCD每次只能采到一行數據,有效數據非常少,對于以較高速度行駛的智能車來說,僅憑借當前采到的一行數據是

27、遠遠不夠的,所以我們想到利用歷史數據輔助判斷賽道類型,將之前50個賽道中心線位置數據保存在數組中,組成一連串的賽道路徑數據,并實時更新,由于CCD有一定的前瞻,所以歷史數據便組成了一幅二維圖像。在直道中主要通過直道計數器來完成對電機的控制。若正在處理的累計方差大于一個設定的值(通過測試得到),直道計數器加一。計算中心線與視野中心的累計方差,對于直道來說累積方差較小,對于彎道來說累積方差較大。若數組中前面累積方差大,同時直道計數器達到某一范圍值時,即可判定是直道入彎,此時電機減速;若前面的累積方差較小,同時直道計數器達到一定的值時,即可判斷是直道或彎道入直道,此時控制電機加速。 第六章 系統開發

28、及調試工具6.1軟件開發工具程序開發在IAR Embedded Workbench IDE下進行, Embedded Workbench for ARM 是IAR Systems 公司為ARM 微處理器開發的一個集成開發環境(下面簡稱IAR EWARM)。比較其他的ARM 開發環境,IAR EWARM 具有入門容易、使用方便和代碼緊湊等特點。EWARM 中包含一個全軟件的模擬程序(simulator)。用戶不需要任何硬件支持就可以模擬各種ARM 內核、外部設備甚至中斷的軟件運行環境。從中可以了解和評估IAR EWARM 的功能和使用方法。圖6-1 IAR Embedded Workbench

29、IDE圖6.2 IAR編程主界面6.2上位機調試期間為了監測車模運行中遇到的各種賽道情況,需要用專門的串口軟件來觀察線性CCD的數據,我們選擇了線性CCD調試助手。它能以灰度的方式顯示CCD數據,實時地觀察到數據的變化。圖6.3為線性CCD調試助手的界面。圖6.3 線性CCD調試助手第七章 車模的主要技術參數表7.1 車模的主要技術參數表賽車基本參數長280mm寬180mm高380mm車重(千克)1.3功耗帶載>15W電容總容量(微法)12406傳感器光電編碼器1個線性CCD1個除了車模原有的驅動電機、舵機之外伺服電機個數0賽道信息檢測精度5 mm頻率50Hz第八章 結論8.1 制作成果

30、本文主要介紹了線性CCD智能車的總體設計方案,包括機械結構的安裝調整,硬件電路的設計和軟件算法的設計和創新。在設計和制作車模的過程中,我們仔細閱讀了歷屆優秀的技術報告,吸取前人的經驗,結合實踐進行改進,并且取得了一定的成果。本著嚴謹的態度,綜合考慮各種問題。在設計過程中不斷發現問題,分析問題,從車模的搭建,機械結構的調整,到控制算法的提出,程序編寫,整個過程無不凝聚了我們辛勤的汗水。8.2 問題與思考在車模制作的過程中,我們的小車曾經出現了很大問題,如小車在高速行駛時,在彎道中尤其是大彎處容易跑出去,經過分析,低速行駛時從未出現這種情況,我們確定不是軟件的問題,將問題鎖定在硬件上,包括舵機和機

31、械結構。通過舵機的更換調試,我們發現舵機本身存在一定的缺陷,為此我們從幾個舵機中挑出一個性能相對較好的。同時機械結構的調整對速度的提高至關重要,哪怕是細微調整,對高速行駛的小車都有很大的影響。我們通過不斷摸索和實踐,調出較合適的前輪前束和主銷傾角。8.3 不足與改進(1)對小車機械結構沒有進行深入的研究和建模,只是根據小車實際情況來調整機械,缺乏理論依據。以后要就機械這一塊進行深入研究,做到機械結構優良,在此基礎上研究軟件才能使效率更高。(2)在程序設計和調試的過程中,有點模糊化。需要進行實際的建模和仿真,對智能車的運行要進行定量的分析和計算,對智能車運行中出現的各種情況都能做到理解,站在理論

32、支持的角度進行分析和調試;(3)使用的是藍宙給的CCD上位機,只能觀察圖像,不便于小車的調試。開發具有接收數據和發送參數功能的的上位機,能夠將小車的實時數據記錄下來,對小車的調試帶來極大的方便。8.4 致謝與總結智能車比賽的整個準備過程歷時將近一年的時間,不僅使我們得到了對已有知識進行實踐的機會,更培養了一定的科研能力,拓寬了知識面,同時我們小組在智能車制作的過程中學會了發現問題,分析問題和解決問題的能力,我們大家互相配合,鍛煉了團隊精神。展望未來。 在此特別感謝一直支持和關注智能車比賽的學校和學院領導以及指導老師、指導學長,同時也感謝比賽組委會能組織這樣一項有意義的比賽。如今,我們做好一切準

33、備,迎接即將到來的全國總決賽。到時,我們將面臨更高的挑戰,不過我們有信心,因為我們努力了,不管結果如何,它都將成為我們生命中一筆寶貴的財富,成為我們一生的回憶。參考文獻1卓晴,黃開勝,邵貝貝學做智能車北京:北京航空航天大學出版社2007.2譚浩強著C程序設計北京:清華大學出版社,20033王宜懷,吳瑾,蔣銀珍.嵌入式系統原理與實踐.北京:電子工業出版社. 20124童詩白,華成英模擬電子技術基礎M北京: 高等教育出版社,2001.5周堯,頓海洋,羅林聰.北京科技大學攝像頭一隊技術報告.2013.6成毅,汪自強,崔永強.常熟理工學院閃電五隊技術報告.2013.7葉立威,曾巧文,鄧振鵬.光電組-電

34、子科技大學中山學院香山一隊技術報告.2013.8鄧兆祥,褚志剛等,“汽車前輪定位參數優化設計”,重慶大學機械傳動國家重點實驗 室.附錄附錄A系統原理圖附錄B部分程序源代碼一、 初始化程序/初始化相關設備/*舵機頻率初始化*/uint8 FTM_PWM_Init(uint8 FTMx,uint32 freq) uint32 bus_clk_hz; uint32 mod; uint8 ps=0; bus_clk_hz = periph_clk_khz*1000; if(freq>bus_clk_hz) return 0; if(mod=bus_clk_hz/(freq*128) < 0

35、xFFFFu) ps = 7; if(FTMx=0) FTM_MOD0=mod; else if(FTMx=1) FTM_MOD1=mod; else if(FTMx=2) FTM_MOD2=mod; else return 0; if(mod=bus_clk_hz/(freq*64) < 0xFFFFu) ps = 6; if(FTMx=0) FTM_MOD0= mod; else if(FTMx=1) FTM_MOD1=mod; else if(FTMx=2) FTM_MOD2=mod; else return 0; if(mod=bus_clk_hz/(freq*32) <

36、0xFFFFu) ps = 5; if(FTMx=0) FTM_MOD0= mod; else if(FTMx=1) FTM_MOD1=mod; else if(FTMx=2) FTM_MOD2=mod; else return 0; if(mod=bus_clk_hz/(freq*16) < 0xFFFFu) ps = 4; if(FTMx=0) FTM_MOD0= mod; else if(FTMx=1) FTM_MOD1=mod; else if(FTMx=2) FTM_MOD2=mod; else return 0; if(mod=bus_clk_hz/(freq*8) <

37、 0xFFFFu) ps = 3; if(FTMx=0) FTM_MOD0= mod; else if(FTMx=1) FTM_MOD1=mod; else if(FTMx=2) FTM_MOD2=mod; else return 0; if(mod=bus_clk_hz/(freq*4) < 0xFFFFu) ps = 2; if(FTMx=0) FTM_MOD0= mod; else if(FTMx=1) FTM_MOD1=mod; else if(FTMx=2) FTM_MOD2=mod; else return 0; if(mod=bus_clk_hz/(freq*2) <

38、 0xFFFFu) ps = 1; if(FTMx=0) FTM_MOD0= mod; else if(FTMx=1) FTM_MOD1=mod; else if(FTMx=2) FTM_MOD2=mod; else return 0; if(mod=bus_clk_hz/(freq*1) < 0xFFFFu) ps = 0; if(FTMx=0) FTM_MOD0= mod; else if(FTMx=1) FTM_MOD1=mod; else if(FTMx=2) FTM_MOD2=mod; else return 0; else return 0; if(FTMx=0) / 使能F

39、TM時鐘模塊 SIM_SCGC6 |= SIM_SCGC6_FTM0_MASK; / 配置FTM控制寄存器 / 禁用中斷, 加計數模式, 時鐘源:System clock(Bus Clk), 分頻系數:8 / 假設SysClk = 50MHz, SC_PS=3, FTM Clk = 50MHz/23 = 6.25MHz FTM0_SC = FTM_SC_CLKS(1)|FTM_SC_PS(ps); / 設置PWM周期及占空比 / PWM周期 = (MOD-CNTIN+1)*FTM時鐘周期 : / 配置FTM計數初始值 FTM0_CNT = 0; FTM0_CNTIN = 0; / 配置FTM計

40、數MOD值 FTM0_MOD = FTM_MOD0; else if(FTMx=1) / 使能FTM時鐘模塊 SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK; / 配置FTM控制寄存器 / 禁用中斷, 加計數模式, 時鐘源:System clock(Bus Clk), 分頻系數:8 / 假設SysClk = 50MHz, SC_PS=3, FTM Clk = 50MHz/23 = 6.25MHz FTM1_SC = FTM_SC_CLKS(1)|FTM_SC_PS(ps); / 設置PWM周期及占空比 / PWM周期 = (MOD-CNTIN+1)*FTM時鐘周期 : / 配

41、置FTM計數初始值 FTM1_CNT = 0; FTM1_CNTIN = 0; / 配置FTM計數MOD值 FTM1_MOD = FTM_MOD1; else if(FTMx=2) / 使能FTM時鐘模塊 SIM_SCGC3 |= SIM_SCGC3_FTM2_MASK; / 配置FTM控制寄存器 / 禁用中斷, 加計數模式, 時鐘源:System clock(Bus Clk), 分頻系數:8 / 假設SysClk = 50MHz, SC_PS=3, FTM Clk = 50MHz/23 = 6.25MHz FTM2_SC = FTM_SC_CLKS(1)|FTM_SC_PS(ps); / 設

42、置PWM周期及占空比 / PWM周期 = (MOD-CNTIN+1)*FTM時鐘周期 : / 配置FTM計數初始值 FTM2_CNT = 0; FTM2_CNTIN = 0; / 配置FTM計數MOD值 FTM2_MOD = FTM_MOD2; else return 0; return 1;/*函數名:uint8 FTM_PWM_Open(uint8 FTMx,uint8 channel, uint32 duty)*功能: 打開PWM通道,設置占空比*入口參數:(1)FTMx : 0 1 2 (2)channel 通道號 (3)duty 占空比*出口參數:無*說明:無*/uint8 FTM_PWM_Open(uint8 FTMx,uint8 channel, uint32 duty) uint32 cv; volatile uint32 mod; if(duty>10000) return 0; /占空比 = (CnV-CNTIN)/(MOD-CNTIN+1)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論