www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 廠商動(dòng)態(tài) > ADI
[導(dǎo)讀]本文探討如何在項(xiàng)目中實(shí)現(xiàn)與硬件無(wú)關(guān)的驅(qū)動(dòng)程序。即插即用的設(shè)計(jì)理念能夠顯著降低嵌入式軟件或固件設(shè)計(jì)的復(fù)雜性,無(wú)論設(shè)計(jì)者的經(jīng)驗(yàn)水平如何,都能從中受益。如果您想了解驅(qū)動(dòng)程序的基本函數(shù)和嵌入式系統(tǒng)的軟件架構(gòu),請(qǐng)參見文章“利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):基本知識(shí)”。

摘要

本文探討如何在項(xiàng)目中實(shí)現(xiàn)與硬件無(wú)關(guān)的驅(qū)動(dòng)程序。即插即用的設(shè)計(jì)理念能夠顯著降低嵌入式軟件或固件設(shè)計(jì)的復(fù)雜性,無(wú)論設(shè)計(jì)者的經(jīng)驗(yàn)水平如何,都能從中受益。如果您想了解驅(qū)動(dòng)程序的基本函數(shù)和嵌入式系統(tǒng)的軟件架構(gòu),請(qǐng)參見文章“利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):基本知識(shí)”。

簡(jiǎn)介

嵌入式系統(tǒng)設(shè)計(jì)中,設(shè)計(jì)人員通常要編寫驅(qū)動(dòng)程序和固件的代碼,確保所選傳感器能夠?qū)崿F(xiàn)其所需的基本功能。這一過程往往耗時(shí)且繁瑣。為解決這一難題,可以通過結(jié)合硬件、軟件和固件的方式,采用即插即用的設(shè)計(jì)思路,從而簡(jiǎn)化傳感器的選擇和系統(tǒng)集成。與硬件無(wú)關(guān)的驅(qū)動(dòng)程序不僅能夠讓傳感器集成變得更加高效,還可以作為一種通用解決方案,便于在未來(lái)的設(shè)計(jì)中重復(fù)使用。本文將以慣性測(cè)量單元(IMU)傳感器為例,說(shuō)明如何實(shí)現(xiàn)與硬件無(wú)關(guān)的驅(qū)動(dòng)程序,不過,這種方法同樣適用于其他類型的傳感器和器件。驅(qū)動(dòng)程序采用C語(yǔ)言編寫,并在一款通用微控制器上進(jìn)行了測(cè)試。

驅(qū)動(dòng)程序?qū)崿F(xiàn)

附錄中包含提及的所有圖片和代碼,可供讀者查閱。

adis16500_rd_error_flag

附錄中的圖10展示了該函數(shù)的實(shí)現(xiàn)。該函數(shù)讀取ADIS16500_REG_DIAG_STAT寄存器中包含的錯(cuò)誤標(biāo)志,如果未發(fā)生錯(cuò)誤,所有位都為0。可能的錯(cuò)誤有10個(gè),因此,該函數(shù)會(huì)返回一個(gè)ADIS16500_ERROR_FLAGS結(jié)構(gòu),其中包含10個(gè)布爾字段,每個(gè)字段代表一個(gè)錯(cuò)誤。該函數(shù)只讀取ADIS16500_REG_ DIAG_STAT寄存器,并使用特定錯(cuò)誤掩碼檢查該寄存器的各個(gè)位,發(fā)現(xiàn)邏輯1時(shí),該結(jié)構(gòu)的相應(yīng)字段就會(huì)設(shè)置為true。

adis16500_rd_temp

這是一個(gè)溫度讀取函數(shù),其實(shí)現(xiàn)方法與加速度和陀螺儀相同(詳情請(qǐng)見本系列第一篇文章)。讀取的值用℃為單位表示。其二進(jìn)制值包含在16位寄存器ADIS16500_REG_TEMP_OUT中。之后,數(shù)據(jù)將經(jīng)過二進(jìn)制轉(zhuǎn)二進(jìn)制補(bǔ)碼的轉(zhuǎn)換。得到的二進(jìn)制補(bǔ)碼值將乘以溫度比例因子(單位為℃/LSB),最終得出以℃為單位的數(shù)值,并記錄在作為輸入傳遞的指針中。該函數(shù)實(shí)現(xiàn)可參見附錄中的圖9。

adis16500_get_ts_usec

該函數(shù)用于獲取IMU的時(shí)間戳,單位為μs。其實(shí)現(xiàn)方法與adis16500_rd_temp函數(shù)完全相同。具體可參見附錄中的圖9。

adis16500_rd_data_cntr

該程序讀取已輸出的數(shù)據(jù)數(shù)量。實(shí)際上,只需讀取名為ADIS16500_REG_DATA_CNTR的寄存器即可實(shí)現(xiàn)。當(dāng)該寄存器達(dá)到最大值時(shí),將從0重新開始。該函數(shù)的實(shí)現(xiàn)方式可參見附錄中的圖9。

adis16500_wr_acc_calib

該函數(shù)用于執(zhí)行自定義偏移校準(zhǔn)。設(shè)計(jì)人員通過調(diào)用該函數(shù),可將偏移值添加到從輸出數(shù)據(jù)寄存器讀取的值中,從而將x、y、z校準(zhǔn)值添加到x、y、z加速度數(shù)據(jù)中。該函數(shù)的輸入是指向ADIS16500_XL_OUT類型結(jié)構(gòu)的指針,該結(jié)構(gòu)包含x、y和z浮點(diǎn)類型字段。該函數(shù)的目標(biāo)是從浮點(diǎn)值轉(zhuǎn)換為二進(jìn)制補(bǔ)碼值,再?gòu)亩M(jìn)制補(bǔ)碼值轉(zhuǎn)換為二進(jìn)制值。所有步驟可參見附錄中的圖11。接下來(lái),需要將二進(jìn)制值寫入偏置寄存器,例如,對(duì)于x軸,需要寫入兩個(gè)寄存器:ADIS16500_REG_X_ACCEL_BIAS_L(低16位)和ADIS16500_REG_X_ACCEL_BIAS_H(高16位)。y軸和z軸也是如此,各自有相應(yīng)的偏置寄存器。為了檢查該程序是否正確執(zhí)行,放置IMU傳感器時(shí),確保z軸垂直指向天空。在這種情況下,x軸和y軸的加速度值接近0,z軸的加速度值接近–9.81 m/s2 (–g)。調(diào)用校準(zhǔn)函數(shù)并傳遞一個(gè)校準(zhǔn)結(jié)構(gòu),其中x、y和z字段均等于–9.81 m/s2,校準(zhǔn)后的讀取結(jié)果為x = –9.81;y = –9.81;z = 0,即表明校準(zhǔn)偏移函數(shù)正常工作。

adis16500_wr_gyro_calib

這是與陀螺儀有關(guān)的偏移校準(zhǔn)函數(shù),其實(shí)現(xiàn)方法與加速度校準(zhǔn)函數(shù)完全相同。區(qū)別在于,陀螺儀的校準(zhǔn)需要按照數(shù)據(jù)手冊(cè)中的說(shuō)明,使用對(duì)應(yīng)的陀螺儀偏移寄存器來(lái)完成。

本文著重介紹IMU傳感器驅(qū)動(dòng)程序,但其軟件/固件結(jié)構(gòu)可用于任何類型的傳感器。因此,要實(shí)現(xiàn)對(duì)所有傳感器的通用支持,只需根據(jù)傳感器與微控制器之間的通信協(xié)議(如 SPI、I2C、UART 等)進(jìn)行調(diào)整。傳感器的初始化方式仍然有效,因?yàn)槌跏蓟A段記錄了通過通信協(xié)議進(jìn)行收發(fā)的函數(shù)。

如何在項(xiàng)目中引入和使用驅(qū)動(dòng)程序

除了關(guān)于傳感器和微控制器單元(MCU)間硬件連接的基本說(shuō)明外,本文還提供了相關(guān)指南,從軟件和固件的角度介紹如何引入驅(qū)動(dòng)程序。

圖1.項(xiàng)目文件夾結(jié)構(gòu)。

傳感器驅(qū)動(dòng)程序沒有通用的組織結(jié)構(gòu)。圖1所示為建議的文件夾結(jié)構(gòu)。userlib文件夾中包含所有傳感器驅(qū)動(dòng)程序。在本示例中,只有IMU傳感器驅(qū)動(dòng)程序,但如果項(xiàng)目包含更多傳感器,組織方式基本相同。userlib中有兩個(gè)文件夾,分別是include和src。include文件夾包含驅(qū)動(dòng)程序的標(biāo)頭文件,即本例中的adis16500.h,而src中包含源文件,即adis16500.c。userlib中還有一個(gè)指定include指令的makefile,如圖2所示。

圖2.userlib makefile。

圖3.主makefile。

圖3所示為主makefile。它位于應(yīng)用層,靠近main.c。該makefile包含user.mk,如圖3中紅色下劃線所示(代碼第115行)。

借助makefile (.mk),設(shè)計(jì)人員可以在應(yīng)用層(比如在main.c內(nèi))引入驅(qū)動(dòng)程序的接口,并且可以調(diào)用傳感器驅(qū)動(dòng)程序的所有公共函數(shù)。這樣,應(yīng)用層和傳感器驅(qū)動(dòng)層之間就會(huì)建立起鏈接。在應(yīng)用層可以得知傳感器的驅(qū)動(dòng)程序接口(adis16500.h)。因此,在應(yīng)用層,將通過上文討論的初始化程序建立傳感器驅(qū)動(dòng)層和外設(shè)驅(qū)動(dòng)層之間的鏈接。在IMU傳感器的具體用例中,發(fā)送器、接收器SPI函數(shù)和系統(tǒng)延遲函數(shù)將在main.c文件中定義,如附錄中的圖2所示。這三個(gè)函數(shù)完全遵循驅(qū)動(dòng)程序頭文件中的原型,即附錄中圖3頂部所示的原型。這三個(gè)函數(shù)內(nèi)部是外設(shè)驅(qū)動(dòng)層提供的函數(shù),如spiSelect、spiSend、spiReceive、spiUnselect和chThdSleepMicroseconds。因此,SPI接收器、發(fā)送器和系統(tǒng)延遲函數(shù)代表外設(shè)驅(qū)動(dòng)層和傳感器驅(qū)動(dòng)層之間的鏈接,這些函數(shù)將分配到初始化結(jié)構(gòu)中,如附錄中的圖2所示。以上就是在項(xiàng)目中引入驅(qū)動(dòng)程序的整個(gè)過程。

如果要從傳感器獲取輸出,設(shè)計(jì)人員可以使用adis16500_rd_acc和adis16500_rd_gyro部分介紹的函數(shù)。傳感器讀取并沒有完全通用的方法,圖4僅提供一個(gè)示例。

圖4.傳感器輸出讀取示例。

在此示例中,main.c中有一個(gè)無(wú)限循環(huán),始終檢查名為_adis16500_data_ready的布爾靜態(tài)變量。該變量與回調(diào)函數(shù)相關(guān),當(dāng)DR引腳變?yōu)楦唠娖綍r(shí),它將切換到TRUE,這意味著已有新數(shù)據(jù)可用。在這種情況下,主函數(shù)將調(diào)用adis16500_rd_acc和adis16500_rd_gyro函數(shù)。通過全速運(yùn)行IMU傳感器,設(shè)計(jì)人員將能夠以2 kHz的輸出數(shù)據(jù)速率(ODR)獲取數(shù)據(jù)。

結(jié)論

本文介紹了驅(qū)動(dòng)程序功能,以及如何通過與硬件無(wú)關(guān)的方法簡(jiǎn)化傳感器集成。與硬件無(wú)關(guān)的驅(qū)動(dòng)程序可以作為一種通用解決方案,在未來(lái)的設(shè)計(jì)中重復(fù)使用。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉