黄色在线观看视频网站_香蕉视频免费在线_av在线免费观看网址_日本1区2区3区视频_eeuss影院在线播放_天天综合入口_www.av在线播放_欧美另类极品videosbest视频_国产视频一二三区_国产视频二区在线观看

你的位置:首頁(yè) > 互連技術(shù) > 正文

利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):基本知識(shí)

發(fā)布時(shí)間:2025-02-24 來(lái)源:ADI公司 責(zé)任編輯:lina

【導(dǎo)讀】本文將演示一種加速嵌入式系統(tǒng)設(shè)計(jì)原型階段的方法,說(shuō)明如何將與硬件無(wú)關(guān)的驅(qū)動(dòng)程序和傳感器結(jié)合使用,簡(jiǎn)化整個(gè)嵌入式系統(tǒng)的器件選擇。同時(shí)還將介紹嵌入式系統(tǒng)的器件、典型軟件結(jié)構(gòu)以及驅(qū)動(dòng)程序的實(shí)現(xiàn)。后續(xù)文章“利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):驅(qū)動(dòng)程序?qū)崿F(xiàn)”將進(jìn)一步探討執(zhí)行過(guò)程。


摘要

本文將演示一種加速嵌入式系統(tǒng)設(shè)計(jì)原型階段的方法,說(shuō)明如何將與硬件無(wú)關(guān)的驅(qū)動(dòng)程序和傳感器結(jié)合使用,簡(jiǎn)化整個(gè)嵌入式系統(tǒng)的器件選擇。同時(shí)還將介紹嵌入式系統(tǒng)的器件、典型軟件結(jié)構(gòu)以及驅(qū)動(dòng)程序的實(shí)現(xiàn)。后續(xù)文章“利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):驅(qū)動(dòng)程序?qū)崿F(xiàn)”將進(jìn)一步探討執(zhí)行過(guò)程。

簡(jiǎn)介

通過(guò)使用與硬件無(wú)關(guān)的驅(qū)動(dòng)程序,設(shè)計(jì)人員可以自由選擇微控制器或處理器的類型來(lái)管理傳感器,而不受硬件的限制。這種方法的優(yōu)勢(shì)在于,除了供應(yīng)商提供的基本軟件層外,還可以添加額外的軟件層,同時(shí)簡(jiǎn)化傳感器的集成。本文將以慣性測(cè)量單元(IMU)傳感器為例,說(shuō)明如何實(shí)現(xiàn)與硬件無(wú)關(guān)的驅(qū)動(dòng)程序,不過(guò),這種方法同樣適用于其他類型的傳感器和器件。驅(qū)動(dòng)程序采用C語(yǔ)言編寫,并在一款通用微控制器上進(jìn)行了測(cè)試。

器件選擇

IMU傳感器主要用于運(yùn)動(dòng)檢測(cè),以及通過(guò)加速度和角速度來(lái)測(cè)量運(yùn)動(dòng)強(qiáng)度。本示例選擇使用ADIS16500 IMU傳感器(圖1),因?yàn)榕c復(fù)雜且昂貴的分立設(shè)計(jì)方案相比,該傳感器能夠?yàn)榫_的多軸慣性檢測(cè)與工業(yè)系統(tǒng)的集成提供簡(jiǎn)單且經(jīng)濟(jì)高效的方法。

 利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):基本知識(shí)

圖1.ADIS16500評(píng)估板。


主要應(yīng)用包括:

? 導(dǎo)航、穩(wěn)定性和儀器儀表
? 無(wú)人機(jī)和自動(dòng)駕駛車輛
? 智能農(nóng)業(yè)和施工機(jī)械設(shè)備
? 工廠/工業(yè)自動(dòng)化、機(jī)器人
? 虛擬/增強(qiáng)現(xiàn)實(shí)
? 運(yùn)動(dòng)物聯(lián)網(wǎng)

 利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):基本知識(shí)

圖2.ADIS16500框圖。


ADIS16500是一款精密微型機(jī)電系統(tǒng)(MEMS) IMU,內(nèi)置一個(gè)三軸陀螺儀、一個(gè)三軸加速度計(jì)和一個(gè)溫度傳感器。參見圖2。該IMU的靈敏度、偏置、對(duì)準(zhǔn)、線性加速度(陀螺儀偏置)和坐標(biāo)軸原點(diǎn)(加速度計(jì)位置)已在工廠校準(zhǔn)。這意味著在各種條件下都能提供精確的傳感器測(cè)量。

通過(guò)該接口,微控制器可以寫入和讀取用戶控制寄存器,并讀取輸出數(shù)據(jù)寄存器,從而獲得加速度計(jì)、陀螺儀或溫度傳感器數(shù)據(jù)。為此,管理該接口所需的全部軟件和固件均已完成開發(fā)。圖2所示為數(shù)據(jù)就緒(DR)引腳。該引腳是一個(gè)數(shù)字信號(hào),指示何時(shí)可從傳感器讀取新數(shù)據(jù)。DR引腳可被視為通過(guò)通用輸入/輸出(GPIO)端口的輸入,因此可通過(guò)微控制器輕松管理。

從硬件的角度來(lái)看,IMU傳感器和微控制器將使用SPI接口連接,該接口是由nCS、SCLK、DIN和DOUT引腳組成的4線接口。DR引腳應(yīng)連接到微控制器的其中一個(gè)GPIO。此外,IMU傳感器需要3 V至3.6 V的電源電壓,因此3.3 V就足夠了。

了解嵌入式系統(tǒng)的典型軟件結(jié)構(gòu)

 利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):基本知識(shí)

圖3.嵌入式系統(tǒng)的軟件/固件結(jié)構(gòu)。


了解嵌入式系統(tǒng)的通用軟件和固件結(jié)構(gòu)對(duì)于與傳感器驅(qū)動(dòng)程序連接至關(guān)重要。這將幫助設(shè)計(jì)人員構(gòu)建一個(gè)靈活且易于集成到任何項(xiàng)目的軟件模塊。此外,驅(qū)動(dòng)程序必須以模塊化的方式實(shí)現(xiàn),以使設(shè)計(jì)人員能夠依賴于現(xiàn)有函數(shù)添加更高級(jí)的函數(shù)。

嵌入式系統(tǒng)的軟件結(jié)構(gòu)如圖3所示。在圖3中,層次結(jié)構(gòu)從應(yīng)用層開始,應(yīng)用代碼就是在這一層編寫的。應(yīng)用層包括main文件、依賴于傳感器的應(yīng)用模塊,以及依賴于管理處理器配置的外設(shè)驅(qū)動(dòng)程序的模塊。此外,在應(yīng)用層中,還有與微控制器必須處理的任務(wù)相關(guān)的所有模塊。例如,通過(guò)中斷或輪詢、狀態(tài)機(jī)等管理任務(wù)的所有軟件。應(yīng)用層級(jí)別根據(jù)項(xiàng)目的類型而有所不同,因此不同項(xiàng)目中實(shí)現(xiàn)的代碼也不同。在應(yīng)用層,系統(tǒng)的所有傳感器根據(jù)其數(shù)據(jù)手冊(cè)進(jìn)行初始化和配置。傳感器驅(qū)動(dòng)程序提供的所有公共函數(shù)均可調(diào)用。例如,讀取負(fù)責(zé)輸出數(shù)據(jù)的寄存器,或者寫入一個(gè)寄存器以更改設(shè)置/校準(zhǔn)的程序。

應(yīng)用層下面是傳感器的驅(qū)動(dòng)層,這一層有兩種類型的接口。可從應(yīng)用層調(diào)用的所有函數(shù)都在這一層實(shí)現(xiàn)。此外,函數(shù)的原型插入到驅(qū)動(dòng)程序標(biāo)頭文件(.h)中。因此,通過(guò)查看傳感器驅(qū)動(dòng)程序的標(biāo)頭文件,您可以了解驅(qū)動(dòng)程序的接口以及可從較高層級(jí)調(diào)用的函數(shù)。較低級(jí)別的層將與特定外設(shè)驅(qū)動(dòng)程序連接,這些外設(shè)驅(qū)動(dòng)程序依賴于管理傳感器的微控制器。外設(shè)驅(qū)動(dòng)程序包括管理微控制器外設(shè)的所有模塊,例如SPI、I2C、UART、USB、CAN、SPORT等,或管理處理器內(nèi)部模塊的模塊,例如定時(shí)器、內(nèi)存、ADC等。由于它們與硬件緊密相關(guān),因此稱為低級(jí)函數(shù)。例如,由于微控制器不同,因此每個(gè)SPI驅(qū)動(dòng)程序都是不同的。我們以ADIS16500為例。接口是SPI,因此其驅(qū)動(dòng)程序?qū)⑴c微控制器的SPI驅(qū)動(dòng)程序封裝在一起。對(duì)于不同的傳感器和不同的接口也是如此。例如,如果另一個(gè)傳感器具有I2C接口,那么同樣地,將在傳感器的初始化過(guò)程中與微控制器的I2C驅(qū)動(dòng)程序封裝一起。

傳感器驅(qū)動(dòng)程序的下層是外設(shè)驅(qū)動(dòng)程序,各類微控制器的外設(shè)驅(qū)動(dòng)程序各不相同。如圖3所示,外設(shè)驅(qū)動(dòng)程序和低級(jí)驅(qū)動(dòng)程序是分開的。本質(zhì)上,外設(shè)驅(qū)動(dòng)程序通過(guò)可用的通信協(xié)議提供讀寫函數(shù)。由于低級(jí)驅(qū)動(dòng)程序?qū)⒐芾硇盘?hào)的物理層,因此它非常依賴于設(shè)計(jì)人員所使用的硬件。外設(shè)和低級(jí)驅(qū)動(dòng)層往往通過(guò)可視化工具從微控制器的集成開發(fā)環(huán)境(IDE)生成,具體取決于安裝微控制器的評(píng)估板。

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

與硬件無(wú)關(guān)的方法支持在不同應(yīng)用、不同微控制器或不同處理器中使用相同的驅(qū)動(dòng)程序。這種方法取決于驅(qū)動(dòng)程序的實(shí)現(xiàn)方式。要了解驅(qū)動(dòng)程序的實(shí)現(xiàn)方式,首先要看接口,或圖4中的傳感器標(biāo)頭文件(adis16500.h)。

標(biāo)頭文件包含有用的公共宏。其中包括寄存器的地址、SPI最大速度、默認(rèn)輸出數(shù)據(jù)速率(ODR)、位掩碼,以及加速度計(jì)、陀螺儀和溫度傳感器的輸出靈敏度,這些宏與用于表示數(shù)據(jù)的位數(shù)(16或32)有關(guān)。圖4顯示了這些宏,其中僅顯示了幾個(gè)寄存器的地址作為示例。本文引用的代碼可參見附錄。

 利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):基本知識(shí)

圖4.ADIS16500標(biāo)頭文件(adis16500.h)中顯示的宏。


附錄中的圖3顯示了包括adis16500.h在內(nèi)的每個(gè)模塊均可使用的所有公共變量和公共類型聲明,其中定義了新的類型,以便更有效地管理數(shù)據(jù)。例如,ADIS16500_XL_OUT類型被定義為包含三個(gè)浮點(diǎn)的結(jié)構(gòu),每個(gè)軸(x、y和z)一個(gè)浮點(diǎn)。此外,還通過(guò)枚舉來(lái)支持不同的傳感器配置,使設(shè)計(jì)人員能夠靈活地選擇符合自身需求的配置。最值得關(guān)注的是使驅(qū)動(dòng)程序與硬件無(wú)關(guān)的部分。在公共變量部分的開頭(附錄中的圖3),有三個(gè)關(guān)鍵的類型定義:指向三個(gè)基本函數(shù)的指針,或者SPI發(fā)送和接收函數(shù),以及為生成正確的停轉(zhuǎn)時(shí)間,兩次SPI訪問(wèn)之間所需的延遲函數(shù)。這些代碼還顯示了可指向的函數(shù)的原型。SPI發(fā)送函數(shù)將指向待發(fā)送值的指針作為輸入,然后返回可供檢查的內(nèi)容,以確定發(fā)送是否成功。SPI接收函數(shù)也是如此,該函數(shù)將指向變量的指針作為輸入,這個(gè)指針將存儲(chǔ)接收時(shí)讀取的值。延遲函數(shù)以浮點(diǎn)數(shù)作為輸入,表示設(shè)計(jì)人員想要等待的微秒數(shù),不返回任何內(nèi)容(void)。通過(guò)這種方式,設(shè)計(jì)人員可以在應(yīng)用層(例如在main文件中)利用這些特定的原型來(lái)聲明這三個(gè)函數(shù)。聲明后,他們可以將這三個(gè)函數(shù)賦值給ADIS16500_INIT私有結(jié)構(gòu)的字段。附錄中的圖2列舉了一個(gè)示例,以幫助更好地理解最后一步。

SPI發(fā)送器、接收器函數(shù)和延遲函數(shù)在main文件中聲明為靜態(tài)函數(shù),因此屬于應(yīng)用層。這些函數(shù)依賴于外設(shè)驅(qū)動(dòng)程序函數(shù),因此傳感器驅(qū)動(dòng)程序本身與硬件無(wú)關(guān)。這三個(gè)函數(shù)被分配給一個(gè)變量的字段,而這些字段是指向函數(shù)的指針。這樣一來(lái),設(shè)計(jì)人員可以封裝傳感器和微控制器,而無(wú)需修改傳感器驅(qū)動(dòng)程序代碼。如果設(shè)計(jì)人員更換微控制器,他們只需將三個(gè)靜態(tài)函數(shù)內(nèi)的低級(jí)函數(shù)替換為新微控制器的相應(yīng)函數(shù),從而調(diào)整main文件。通過(guò)這種方法,驅(qū)動(dòng)程序變得與硬件無(wú)關(guān),因?yàn)樵O(shè)計(jì)人員不需要更改傳感器的驅(qū)動(dòng)程序代碼。微控制器的IDE中通常包含spiSelect、spiReceive、spiUnselect、chThdSleepMicroseconds等低級(jí)函數(shù)。在本例中,所用的微控制器評(píng)估板是SDP-K1,它嵌入了STM32F469NIH6 Cortex?-M4微控制器。該IDE是ChibiOS,這是一個(gè)免費(fèi)的Arm?開發(fā)環(huán)境。

附錄中的圖4顯示了應(yīng)用級(jí)別的可調(diào)用函數(shù)原型。這些原型以及附錄中圖2和圖3討論的所有其他軟件和固件都可在傳感器驅(qū)動(dòng)程序的標(biāo)頭文件(adis16500.h)中找到。首先,初始化函數(shù)(adis16500_init)將指向ADIS16500_INIT結(jié)構(gòu)的指針作為輸入,并返回狀態(tài)代碼,以指示初始化是否成功。初始化函數(shù)的實(shí)現(xiàn)在傳感器驅(qū)動(dòng)程序的源文件(adis16500.c)中完成。附錄中的圖5所示為adis16500_init函數(shù)的代碼。首先,定義名為ADIS16500_PRIV的類型,其中至少包含ADIS16500_INIT結(jié)構(gòu)的所有字段,然后聲明一個(gè)屬于該類型的私有變量_adis16500_priv。在初始化函數(shù)中,應(yīng)用層傳遞的ADIS16500_INIT結(jié)構(gòu)的所有字段將賦值給私有變量_adis16500_priv的字段。這意味著,對(duì)傳感器驅(qū)動(dòng)程序的任何后續(xù)調(diào)用都將使用由應(yīng)用層傳入的SPI讀寫函數(shù)和處理器延遲函數(shù)。這一點(diǎn)很關(guān)鍵,正因如此,傳感器驅(qū)動(dòng)程序才能與硬件無(wú)關(guān)。如果設(shè)計(jì)人員想要更改微控制器,只需更改傳遞給adis16500_init函數(shù)的函數(shù)即可,不需要修改傳感器驅(qū)動(dòng)程序代碼本身。在初始化函數(shù)開頭,_adis16500_priv變量的已初始化字段設(shè)置為false,因?yàn)槌跏蓟^(guò)程尚未完成。在該函數(shù)結(jié)束時(shí),該字段將設(shè)置為true,然后返回。設(shè)計(jì)人員每次調(diào)用另一個(gè)公共函數(shù)(附錄中的圖4)時(shí),都會(huì)執(zhí)行以下檢查:如果_adis16500_priv.initialized為true,可以繼續(xù);如果為false,將立即返回ADIS16500_RET_VALERROR錯(cuò)誤。這是為了防止用戶在沒(méi)有先初始化傳感器驅(qū)動(dòng)程序的情況下調(diào)用函數(shù)。繼續(xù)討論初始化函數(shù),執(zhí)行以下步驟:

1. 通過(guò)讀取ADIS16500_REG_ PROD_ID寄存器,檢查預(yù)先已知的產(chǎn)品ID。
2. 將應(yīng)用層(main.c)傳遞的值寫入ADIS16500_REG_MSC_CTRL寄存器的相應(yīng)位字段,設(shè)置數(shù)據(jù)就緒(DR)引腳極性。
3. 將應(yīng)用層(main.c)傳遞的值寫入ADIS16500_REG_MSC_CTRL寄存器的相應(yīng)位字段,設(shè)置同步模式。
4. 將應(yīng)用層(main.c)傳遞的值寫入ADIS16500_REG_DEC_RATE寄存器,設(shè)置抽取率。

初始化函數(shù)取決于讀寫寄存器函數(shù)(附錄中的圖6)。因此,為_adis16500_priv變量賦值之后,需要完成上述四個(gè)例程。否則,在調(diào)用讀取或?qū)懭爰拇嫫骱瘮?shù)時(shí),它們不知道該使用哪個(gè)SPI發(fā)送器、接收器和處理器延遲函數(shù)。

參考附錄中的圖4,在初始化函數(shù)之后,還可以調(diào)用其他公共函數(shù)。下面是已實(shí)現(xiàn)例程的功能描述,所示為低級(jí)別例程。本文的第二部分將詳細(xì)介紹驅(qū)動(dòng)程序的其他已實(shí)現(xiàn)函數(shù)。以下所有函數(shù)只能在初始化函數(shù)之后調(diào)用。為此,將在每個(gè)函數(shù)開頭仔細(xì)檢查,以確定傳感器是否已初始化。如果未初始化,程序會(huì)立即返回錯(cuò)誤。

u adis16500_rd_reg_16

該函數(shù)用于讀取16位寄存器。該函數(shù)實(shí)現(xiàn)可參見附錄中的圖6。輸入包括ad,這是一個(gè)uint8_t變量,表示要讀取的寄存器的地址,以及*p_reg_val,這是指向uint16_t類型變量的指針,表示讀取值將賦值的目標(biāo)。要通過(guò)SPI協(xié)議讀取寄存器,需要訪問(wèn)兩次SPI;第一次訪問(wèn)是為了發(fā)送地址,第二次是為了讀回被尋址寄存器的值。兩次訪問(wèn)之間需要有停轉(zhuǎn)時(shí)間,因此需要延遲函數(shù)。在第一次訪問(wèn)過(guò)程中,我們發(fā)送讀/寫位,在本例中為1(R = 1,W = 0),寄存器地址移位8位,再補(bǔ)充8位0,因此序列如下:

R/W | AD6 | AD5 | AD4 | AD3 | AD2 | AD1 | AD0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

其中AD代表地址,R/W代表讀/寫位。

經(jīng)過(guò)延遲后,函數(shù)通過(guò)SPI讀取值,并將該值傳遞給輸入指針。ADIS16500的寄存器具有一個(gè)包含高位值(8個(gè)最高有效位)的高地址和一個(gè)包含低位值(8個(gè)低有效位)的低地址。為了獲得16位的完整值(低位和高位),使用低地址作為ad已經(jīng)足夠,因?yàn)榈偷刂泛透叩刂肥沁B續(xù)的。

u adis16500_wr_reg_16

該函數(shù)用于寫入16位寄存器。該函數(shù)實(shí)現(xiàn)可參見附錄中的圖6。輸入包括ad,這是一個(gè)uint8_t類型變量,表示要寫入的寄存器的地址,以及reg_val,這是uint16_t類型變量,表示要寫入寄存器的值。對(duì)于讀取函數(shù),需要考慮低地址和高地址以及低位值和高位值。因此,根據(jù)數(shù)據(jù)手冊(cè),要想寫入ADIS16500的寄存器,需要在發(fā)送時(shí)訪問(wèn)兩次SPI。第一次訪問(wèn)將發(fā)送等于0的R/W位,接著是低寄存器地址,然后是低位值,因此序列如下:

R/W | AD6 | AD5 | AD4 | AD3 | AD2 | AD1 | AD0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |,其中D代表數(shù)據(jù)。

第二次SPI發(fā)送器訪問(wèn)將發(fā)送等于0的R/W位,接著是高寄存器地址,然后是高位值,因此序列如下:

R/W | AD14 | AD13 | AD12 | AD11 | AD10 | AD9 | AD8 | D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 |。

寫入和讀取寄存器函數(shù)實(shí)際上也可以定義為私有,因此從驅(qū)動(dòng)程序軟件模塊外部不可見,也不可調(diào)用。將它們定義為公共是為了能夠調(diào)試。這樣一來(lái),設(shè)計(jì)人員能夠快速訪問(wèn)傳感器中的任何寄存器以進(jìn)行讀取或?qū)懭?,從而幫助解決問(wèn)題。

u adis16500_rd_acc

該函數(shù)從輸出數(shù)據(jù)寄存器讀取x、y、z加速度數(shù)據(jù),并返回它們的值,單位為[m/sec2]。該函數(shù)實(shí)現(xiàn)可參見附錄中的圖7。輸入是指向ADIS16500_XL_OUT結(jié)構(gòu)的指針,它只嵌入三個(gè)字段:以浮點(diǎn)類型表示的x、y、z加速度。在這三個(gè)軸上,讀取加速度的方式是相同的,唯一的區(qū)別在于要讀取的寄存器。每個(gè)軸有其各自要讀取的寄存器:x軸必須在x加速度輸出數(shù)據(jù)寄存器上讀取,y和z軸也在相應(yīng)寄存器上讀取。加速度值將用32位值來(lái)表示,因此要讀取的寄存器有兩個(gè)。一個(gè)讀取高16位,一個(gè)讀取低16位。因此,通過(guò)查看代碼可知,將進(jìn)行兩次寄存器讀取訪問(wèn),再加上適當(dāng)?shù)囊莆缓蚈R位運(yùn)算,得到整個(gè)二進(jìn)制值并存儲(chǔ)在名為_temp的私有int32_t變量中。然后,數(shù)據(jù)將經(jīng)過(guò)二進(jìn)制轉(zhuǎn)二進(jìn)制補(bǔ)碼的轉(zhuǎn)換。轉(zhuǎn)換后,用二進(jìn)制補(bǔ)碼值除以靈敏度(單位為[LSB/(m/sec2)]),這樣最終將獲得以[m/sec2]為單位的加速度值。此值將記錄到指針的x、y或z字段,該指針指向已作為輸入傳遞的結(jié)構(gòu)。

u adis16500_rd_gyro

陀螺儀讀取函數(shù)與加速度讀取函數(shù)的實(shí)現(xiàn)方法完全相同。毫無(wú)疑問(wèn),該函數(shù)將讀取x、y、z陀螺儀數(shù)據(jù),單位為[°/sec]。其實(shí)現(xiàn)方法可參見附錄中的圖8。與加速度函數(shù)類似,函數(shù)的輸入是指向ADIS16500_GYRO_OUT結(jié)構(gòu)的指針,該結(jié)構(gòu)嵌入以浮點(diǎn)類型表示的x、y和z陀螺儀數(shù)據(jù)。讀取的寄存器是陀螺儀輸出數(shù)據(jù)寄存器。二進(jìn)制值將用32位表示,要獲得二進(jìn)制補(bǔ)碼值,需要完成與加速度函數(shù)相同的步驟。完成二進(jìn)制到二進(jìn)制補(bǔ)碼轉(zhuǎn)換后,用得到的值除以靈敏度(單位為[LSB/(°/sec)]),最終得到以[°/sec]為單位的值,然后該值將記錄到指針的x、y或z字段,該指針指向已作為輸入傳遞的結(jié)構(gòu)。

結(jié)論

本文闡述了嵌入式系統(tǒng)的典型軟件/固件堆棧,介紹了IMU傳感器的驅(qū)動(dòng)程序?qū)崿F(xiàn)。與硬件無(wú)關(guān)的方法為各種傳感器或器件提供了可重復(fù)使用的方法,即使接口(SPI、I2C、UART等)不同也沒(méi)關(guān)系。后續(xù)文章“利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):驅(qū)動(dòng)程序?qū)崿F(xiàn)”進(jìn)一步詳細(xì)解釋了傳感器驅(qū)動(dòng)程序的實(shí)現(xiàn)方法。

(來(lái)源:ADI公司,作者: Giacomo Paterniani,現(xiàn)場(chǎng)應(yīng)用工程師)


免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理。


我愛方案網(wǎng)


推薦閱讀:

電容電壓分隔器

智能安防新時(shí)代,AI識(shí)別技術(shù)的革新應(yīng)用方案

盤點(diǎn)電機(jī)控制器用到的主要電子元器件與實(shí)戰(zhàn)方案

自動(dòng)測(cè)試設(shè)備應(yīng)用中PhotoMOS開關(guān)的替代方案

超級(jí)電容器如何有效加強(qiáng)備用電源和負(fù)載管理 (下)


特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索

關(guān)閉

?

關(guān)閉

黄色在线观看视频网站_香蕉视频免费在线_av在线免费观看网址_日本1区2区3区视频_eeuss影院在线播放_天天综合入口_www.av在线播放_欧美另类极品videosbest视频_国产视频一二三区_国产视频二区在线观看
欧美日韩在线不卡一区| 高清国产一区| 日韩精品一二三四区| 欧美日韩国产片| 国产香蕉免费精品视频| 国产一级一片免费播放| 中文字幕在线国产| 国产超级va在线视频| 日韩在线观看一区| 中文字幕日韩欧美在线| 中文字幕亚洲乱码| 日韩精品免费观看视频| 蜜桃精品在线| 欧美久久久久久蜜桃| 欧美日韩精品免费在线观看视频| 国产专区中文字幕| 国产在线www| 91精品综合久久久久久| 91精品婷婷国产综合久久| 伊人网站在线| 亚洲理论中文字幕| 久久99精品久久久久久青青日本| 久久婷婷国产| 亚洲黄色在线观看| 91九色精品视频| 中文字幕亚洲二区| 久久精品网站免费观看| 欧洲精品在线视频| 欧美日韩国产123区| 国产在线播放一区二区| 黄色国产网站在线播放| 在线日韩精品视频| 欧美一级欧美三级在线观看| 美女免费视频一区| 国产手机精品视频| av丝袜在线| 高清一区二区| 亚洲女同中文字幕| 一区二区在线观看不卡| 欧美日韩精品在线| 久久精品人妻一区二区三区| 国产网站欧美日韩免费精品在线观看| 国产黄色精品| 91精品婷婷国产综合久久竹菊| 国产小视频免费在线网址| 精品视频www| 久久久久黄色| 国产一二三精品| 精品三级在线| 在线视频第一页| 国产乱国产乱老熟300部视频| 亚洲欧洲在线观看av| 在线观看av的网站| 亚洲影视资源网| 欧美日韩免费精品| 国产黄色在线网站| 精品国产欧美日韩不卡在线观看| 中文字幕在线视频第一页| 日韩精品视频在线观看免费| 欧美三级日本三级少妇99| 欧美三级中文字幕在线观看| 中文在线视频观看| 亚洲免费视频一区| 欧美日韩国产免费观看视频| 欧美日韩在线网站| 国产一卡2卡3卡4卡网站免费| 中文字幕日韩欧美在线视频| 日本亚洲欧美三级| 日韩久久精品视频| 国产区视频在线观看| 一区二区三区中文字幕在线观看| 欧美国产日韩综合| 在线观看区一区二| 中文字幕在线高清| 一区在线视频观看| 欧美日韩在线视频一区| 国产在线精品日韩| 精品播放一区二区| 日韩一二三四区| 91精品国产色综合久久不卡蜜臀| 91精品综合久久久久久| 日韩免费久久| 亚洲综合在线中文字幕| 日韩欧美成人一区二区三区| 久久精品国产2020观看福利| 国产专区中文字幕| 亚洲一区导航| 日本不卡一区在线| 久久精品人妻一区二区三区| 日韩中文欧美| 91精品国产综合久久香蕉最新版| 一区在线播放视频| 91精品xxx在线观看| 日韩av一区在线| 国产成人精品999| 99在线精品视频免费观看20| 免费网站看黄yyy222| 国产欧美日产一区| 欧美中文字幕在线| 久久手机免费观看| 日韩欧美在线网站| 日韩在线播放一区二区| 国产日韩精品视频| 国产久卡久卡久卡久卡视频精品| 国产亚洲欧美中文| 中文字幕视频一区二区三区久| 欧美中文字幕在线视频| 国产伦精品免费视频| 免费在线视频一区二区| 欧美日韩在线不卡视频| 欧美色视频一区二区三区在线观看| 精品乱人伦一区二区三区| 精品日韩99亚洲| 中文字幕中文字幕精品| aaa大片在线观看| 国产永久免费高清在线观看| 国产欧美自拍一区| 日韩视频 中文字幕| 一区二区三区在线|网站| 亚洲综合在线中文字幕| 日韩精品不卡一区二区| 国产日韩精品视频| 国产网站欧美日韩免费精品在线观看| 91久久精品在线| 不卡福利视频| 国产欧美日韩亚洲| 在线亚洲免费| 99精品一级欧美片免费播放| 欧美国产综合视频| 亚洲一区中文| 久久久精品国产免费观看同学| 黄色一区二区在线观看| 亚洲第一页中文字幕| 日韩在线二区| 中文字幕视频在线免费欧美日韩综合在线看| 国内精品不卡| 刘玥91精选国产在线观看| 91精品国产综合久久香蕉最新版| 日韩精品丝袜在线| 日韩在线欧美| 欧美日韩国产亚洲一区| 国产一级久久久| 日韩在线 中文字幕| 国产福利一区二区| 欧美日韩在线中文字幕| 日韩欧美中文字幕公布| 亚洲欧洲三级| 不卡一区2区| 日本一级一片免费视频| 中文字幕国产在线| 一级特黄大欧美久久久| 久久精品国产视频| 在线视频国内一区二区| 中文字幕中文字幕精品| 91久久精品午夜一区二区| 国产嫩草影院久久久久| 免费看黄资源大全高清| 国产欧美日韩中文久久| 91麻豆视频网站| 精品久久人人做人人爽| 一区二区日韩av| 欧美大片在线观看一区| 精品中文字幕在线| 日韩中文字幕亚洲| 日韩精品不卡一区二区| 黄色资源在线观看| 亚洲成年人影院在线| 日韩欧美在线第一页| 亚洲黄色在线观看| 欧美1234区| 免费一级欧美在线观看视频| 一区二区视频免费看| 一区二区不卡在线| 日韩精品视频在线看| 91精品国产日韩91久久久久久| 精品日韩欧美在线| 亚洲一区视频在线观看视频| 色综合影院在线| 国产日韩中文字幕| 久久中文免费视频| 精品在线观看一区| www.91香蕉视频| 首页国产欧美久久| 欧洲一级精品| 国产网站av| 亚洲羞羞网站| 欧美日韩精品不卡| 欧美日韩第一| 久久99久久99精品中文字幕| 深夜福利一区| 国产一区在线不卡| 欧美日韩视频不卡| 中文字幕精品视频在线| 999在线视频| 中文字幕日韩高清| 日韩福利视频导航| 日韩在线视频中文字幕| 国产 日韩 欧美 综合 一区| 国产高清大尺度一区二区不卡| 91欧美日韩麻豆精品| 在线观看一区日韩| 久久精品国产2020观看福利| 欧美三级日韩三级| 在线观看免费国产小视频| a视频免费在线观看| 日韩精品福利视频| 日韩一级二级三级| 国产日韩av一区| 欧美日韩精品在线播放| 91精品国产高清久久久久久| 91精品国产手机| 日韩精品丝袜在线| 日韩欧美三级在线| 中文字幕精品一区二区三区在线| 国产乱国产乱老熟300| 中文精品在线| 国产激情在线播放| 精品久久久久久综合日本欧美| 国产不卡视频在线| 欧美久久综合性欧美| 国产福利免费在线观看| 日韩欧美中文| 日韩在线高清| 日韩精品在线免费看| 久久精品久久久久| 欧美一级在线免费| wwwav91com| 欧美日韩国产一区在线| 欧美高清视频一区二区三区| 一区二区三区精品99久久| 欧美日韩999| 国产在线播放一区二区| 亚洲成av人综合在线观看| 亚洲第一视频在线观看| 精品亚洲国内自在自线福利| 日韩福利视频导航| 91精品国产高清久久久久久| 欧洲精品久久久| 亚洲欧美久久久| 中文字幕亚洲字幕| 91精品国产全国免费观看| 精品成人久久av| 91精品国产亚洲| 精品久久人人做人人爽| 国产超级va在线视频| 日韩国产专区| 在线一区二区三区精品| 一级网站免费观看| 亚洲欧美伊人| 中文字幕第一页在线播放| 91精品视频在线| 亚洲欧洲日韩精品在线| 午夜国产欧美理论在线播放| 正在播放日韩精品| 不卡中文一二三区| 欧美日韩国产亚洲一区| av免费不卡国产观看| 欧美色视频一区二区三区在线观看| 中文字幕日韩亚洲| 欧美日韩激情在线一区二区三区| 亚洲va韩国va欧美va精品| 亚洲一区三区在线观看| 亚洲中文字幕一区| 91精品国产网站| 欧美日韩高清在线一区| 97caopor国产在线视频| 中文字幕 欧美 日韩| 日韩欧美专区在线| 中文字幕2020第一页| 亚洲日产av中文字幕| a√免费观看在线网址www| 亚洲理论中文字幕| 欧美一级二级三级区| 日韩免费视频一区二区| 国产在线视频不卡| 中文字幕日韩在线观看| 亚洲一区在线视频观看| 黄色在线资源| 美日韩精品免费视频| 久久久99精品久久| 日韩中文字幕精品视频| 日韩免费精品视频| 日韩午夜高潮| 中文字幕日韩在线视频| 久久久久久久久综合| 伊人国产视频| 日韩中文字幕综合| 日韩精品在线看| 黄色国产网站在线观看| 91精品国产手机| 日韩三级视频中文字幕| 欧美日韩第一区日日骚| 日韩三级一区二区| 欧美亚洲天堂网| 欧美日韩久久久| 精品成人久久av| 天天摸日日摸狠狠添| 精品视频1区2区3区| www高清在线视频日韩欧美| 日韩在线一区二区视频| 国产一级片网站| 99精品一级欧美片免费播放| 一区二区欧美国产| 精品在线一区二区三区| 精品亚洲综合| 国产欧美日韩不卡免费| 精品视频—区二区三区免费| 色猫猫国产区一区二在线视频| 国产欧美日产一区| 人成免费在线视频| 日本中文字幕在线观看| 中文字幕第一页在线播放| 最近中文字幕日韩精品| 亚洲福利在线视频| 国产激情三区| 国产黄色片中文字幕| 日韩欧美三级在线| 一区二区三区在线免费| 亚洲狠狠婷婷综合久久久久图片| 久久久另类综合| 一本一道综合狠狠老| 日韩国产专区| 国产久卡久卡久卡久卡视频精品| 欧美日韩在线综合| 91精品电影| 一区二区三区在线播放欧美| 一区二区三区四区五区视频在线观看| 日韩视频国产视频| 亚洲综合在线小说| 日韩中文字幕二区| 亚洲黄色www| 九九视频精品免费| 黄色精品在线观看| 91精品综合久久| 日韩精品综合在线| 日韩三级一区| 日韩在线观看视频一区二区| 日韩视频在线一区二区| 欧美日韩三级一区| 日韩精品免费视频一区二区三区| 欧美日韩人人澡狠狠躁视频| 亚洲一级二级| 欧美日本精品在线| 亚洲免费中文字幕| 中文在线视频| 亚洲第一香蕉网| 国产乱码在线观看| 欧美精品一区二区三区在线播放| 国产对白在线| 国产欧美久久久精品免费| 国产亚洲污的网站| 亚洲免费观看在线观看| 国产婷婷一区二区| 久久视频免费看| 欧美日韩免费精品| 国产91大片| 精品日韩欧美| 91精品国产网站| 国产95在线|亚洲| 国产一区激情在线| 最新日韩中文字幕| 国产黄色片中文字幕| 91精品国产综合久久福利| 黄色片免费看| 亚洲大片精品永久免费| 国产三级做爰在线观看| 久久夜色精品国产欧美乱极品| 亚洲欧洲一区二区天堂久久| 欧美日韩国产三级| 久久久精品日韩| 欧美国产日韩在线播放| 欧美亚洲国产激情| 欧美日韩高清一区二区不卡| 婷婷久久综合网| 国产v日产∨综合v精品视频| 日本不卡一区在线| 日韩亚洲一区在线| av免费观看国产| 中文字幕亚洲免费| 免费精品国产自产拍观看| 国产一级片在线播放| 久草中文在线观看| 亚洲欧美伊人| 欧美日韩国产在线观看| 国产成人精品日本亚洲专区61| 日本啊v在线| 国产乱国产乱300精品| 欧美一级久久久久久久久大| 欧美国产综合视频| 国产一区在线精品| 美国av一区二区| 91一区二区| 国产在线视频一区二区| 欧美久久久精品| 亚洲第一视频在线观看| 国产欧美日韩久久| 在线中文字幕网站| 欧美亚洲专区| 一区三区视频| 精品久久电影|