《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 利用與硬件無(wú)關(guān)的方法簡(jiǎn)化嵌入式系統(tǒng)設(shè)計(jì):基本知識(shí)

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

2025-02-23
作者:Giacomo Paterniani,現(xiàn)場(chǎng)應(yīng)用工程師
來(lái)源:ADI公司
關(guān)鍵詞: ADI 嵌入式系統(tǒng) 傳感器

  摘要

  本文將演示一種加速嵌入式系統(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ǔ)言編寫(xiě),并在一款通用微控制器上進(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ì)高效的方法。

44.JPG

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

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

  ▲導(dǎo)航、穩(wěn)定性和儀器儀表

  ▲無(wú)人機(jī)和自動(dòng)駕駛車(chē)輛

  ▲智能農(nóng)業(yè)和施工機(jī)械設(shè)備

  ▲工廠/工業(yè)自動(dòng)化、機(jī)器人

  ▲虛擬/增強(qiáng)現(xiàn)實(shí)

  ▲運(yùn)動(dòng)物聯(lián)網(wǎng)

45.JPG

  圖2.ADIS16500框圖。

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

  通過(guò)該接口,微控制器可以寫(xiě)入和讀取用戶控制寄存器,并讀取輸出數(shù)據(jù)寄存器,從而獲得加速度計(jì)、陀螺儀或溫度傳感器數(shù)據(jù)。為此,管理該接口所需的全部軟件和固件均已完成開(kāi)發(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)

46.JPG

  圖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)用層開(kāi)始,應(yīng)用代碼就是在這一層編寫(xiě)的。應(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ù)的寄存器,或者寫(xiě)入一個(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)程序是分開(kāi)的。本質(zhì)上,外設(shè)驅(qū)動(dòng)程序通過(guò)可用的通信協(xié)議提供讀寫(xiě)函數(shù)。由于低級(jí)驅(qū)動(dòng)程序?qū)⒐芾硇盘?hào)的物理層,因此它非常依賴于設(shè)計(jì)人員所使用的硬件。外設(shè)和低級(jí)驅(qū)動(dòng)層往往通過(guò)可視化工具從微控制器的集成開(kāi)發(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è)寄存器的地址作為示例。本文引用的代碼可參見(jiàn)附錄。

47.JPG

  圖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)的部分。在公共變量部分的開(kāi)頭(附錄中的圖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?開(kāi)發(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讀寫(xiě)函數(shù)和處理器延遲函數(shù)。這一點(diǎn)很關(guān)鍵,正因如此,傳感器驅(qū)動(dòng)程序才能與硬件無(wú)關(guān)。如果設(shè)計(jì)人員想要更改微控制器,只需更改傳遞給adis16500_init函數(shù)的函數(shù)即可,不需要修改傳感器驅(qū)動(dòng)程序代碼本身。在初始化函數(shù)開(kāi)頭,_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)傳遞的值寫(xiě)入ADIS16500_REG_MSC_CTRL寄存器的相應(yīng)位字段,設(shè)置數(shù)據(jù)就緒(DR)引腳極性。

  3.將應(yīng)用層(main.c)傳遞的值寫(xiě)入ADIS16500_REG_MSC_CTRL寄存器的相應(yīng)位字段,設(shè)置同步模式。

  4.將應(yīng)用層(main.c)傳遞的值寫(xiě)入ADIS16500_REG_DEC_RATE寄存器,設(shè)置抽取率。

  初始化函數(shù)取決于讀寫(xiě)寄存器函數(shù)(附錄中的圖6)。因此,為_(kāi)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ù)開(kāi)頭仔細(xì)檢查,以確定傳感器是否已初始化。如果未初始化,程序會(huì)立即返回錯(cuò)誤。

  ▲adis16500_rd_reg_16

  該函數(shù)用于讀取16位寄存器。該函數(shù)實(shí)現(xiàn)可參見(jià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ā)送讀/寫(xiě)位,在本例中為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代表讀/寫(xiě)位。

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

  ▲adis16500_wr_reg_16

  該函數(shù)用于寫(xiě)入16位寄存器。該函數(shù)實(shí)現(xiàn)可參見(jiàn)附錄中的圖6。輸入包括ad,這是一個(gè)uint8_t類型變量,表示要寫(xiě)入的寄存器的地址,以及reg_val,這是uint16_t類型變量,表示要寫(xiě)入寄存器的值。對(duì)于讀取函數(shù),需要考慮低地址和高地址以及低位值和高位值。因此,根據(jù)數(shù)據(jù)手冊(cè),要想寫(xiě)入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 |。

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

  ▲adis16500_rd_acc

  該函數(shù)從輸出數(shù)據(jù)寄存器讀取x、y、z加速度數(shù)據(jù),并返回它們的值,單位為[m/sec2]。該函數(shù)實(shí)現(xiàn)可參見(jià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ǔ)在名為_(kāi)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)。

  ▲adis16500_rd_gyro

  陀螺儀讀取函數(shù)與加速度讀取函數(shù)的實(shí)現(xiàn)方法完全相同。毫無(wú)疑問(wèn),該函數(shù)將讀取x、y、z陀螺儀數(shù)據(jù),單位為[°/sec]。其實(shí)現(xiàn)方法可參見(jià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)方法。




更多精彩內(nèi)容歡迎點(diǎn)擊==>>電子技術(shù)應(yīng)用-AET<<

3952966954c9c6c308355d1d28d750b.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 懂色av一区二区三区蜜臀 | 国产精品无码av天天爽播放器 | 极品少妇在线 | 日人视频| 黄色一大片| 污污视频在线免费看 | 特级aaaaaaaaa毛片免费视频 | 亚洲精品一区二区三区四区五区 | 日韩一区二区三区视频在线观看 | 超碰五月天 | 超高清日韩aⅴ大片美女图片 | 欧美区在线观看 | 疯狂做爰的爽文多肉小说王爷 | 小萝莉末成年一区二区 | 国精一二二产品无人区免费应用 | 午夜爱爱毛片xxxx视频免费看 | 一级大片免费观看 | 青青操精品 | 在线观看国产91 | 日韩欧美理论片 | av一区二区三 | 日韩精品一区二区三区中文无码 | 中国偷拍毛茸茸肥老熟妇 | 亚洲国产精品一区二区久久hs | 美国毛片av | 国产精品久久久国产偷窥 | 伊人情人综合网 | av人人干| 亚洲色图3p | 国产午夜性春猛交ⅹxxx | 97国内揄拍国内精品对白 | 91久久婷婷国产一区二区三区 | 欧美熟妇丰满肥白大屁股免费视频 | 中文在线字幕免费观 | 伊人网91| 天堂а√中文最新版地址在线 | 国内精品久久久久久中文字幕 | 免费无遮挡无码永久视频 | 国产精品系列在线观看 | 国产精品多人p群无码 | 粉嫩欧美一区二区三区 | 国产一级片久久 | 亚洲精品久久激情国产片 | 狠狠综合久久av一区二区 | 狠狠躁18三区二区一区传媒剧情 | 欧美性jizz18性欧美肥胖脸 | 久久精品中文字幕无码绿巨人 | 三级网站视频 | 欧美97| 久久国产视频一区二区 | 少妇乳大丰满诱人2 | 女人性做爰24姿势视频 | 国产精品女同磨豆腐磨出水了 | 国产综合视频 | 高清av网站 | 一二三四观看视频社区在线 | 亚洲婷婷在线观看 | 国产精品成人3p一区二区三区 | 四虎影视成人永久免费观看亚洲欧美 | 国产美女被遭强高潮免费网站 | 国产网红主播精品一区 | 日日操影院 | 欧美日本国产va高清cabal | 国产日韩精品久久 | 久久精品成人热国产成 | 久久久久久av无码免费看大片 | 午夜小视频在线观看 | 自拍欧美亚洲 | 日韩亚洲国产欧美 | vr成人啪啪影视 | 国产精品无码久久久久 | 国产黄站| 动漫精品一区 | 国产成人精品一区二区三区 | 国产手机在线αⅴ片无码观看 | 日韩av不卡在线播放 | 精品无人乱码一区二区 | 亚洲国产真实交换 | 欧美成人在线视频 | 国产激情视频一区 | 岛国一区二区 | 国产精品mm | 亚洲专区一区 | 人人妻久久人人澡人人爽人人精品 | 亚洲女子a中天字幕 | 国产伦精品一区 | 国产又黄又硬又湿又黄的播出时间 | 羞羞啪啪调教play男男黄 | 18禁美女裸体无遮挡网站 | 国产一二 | 国产精品自在在线午夜出白浆 | 91巨炮在线| 蜜桃视频一区二区三区四区开放时间 | 国产91在线高潮白浆在线观看 | 寂寞的日本美妇 | 日韩黄色av网站 | 精品不卡视频 | 久久精品www人人爽人人 | 日韩在线视频观看 | 一区二区久久久 | 手机在线看片福利 | 国产日韩欧美亚洲精品中字 | 成人亚洲性情网站www在线观看国产 | 欧美成人乱码一区二区三区 | 久久久国产毛片 | 欧美乱码视频 | 无码人妻精一区二区三区 | 大陆少妇xxxx做受高清 | 免费级毛片| 哺乳期喷奶水丰满少妇 | 日本一区二区高清不卡 | 久久久无码精品一区二区三区蜜桃 | 欧美噜噜久久久xxx 欧美噜噜噜 | 国产99一区 | 精品久久久久久国产 | 久久9精品区-无套内射无码 | 福利一区福利二区 | 91官网视频| 老女人激情视频 | 香蕉视频啪啪 | 朝鲜交性又色又爽又黄 | 一本久久精品一区二区 | 久久亚洲伊人 | 性xxxx| 99国产超薄肉色丝袜交足的后果 | 特级黄色网 | 九色porny丨精品自拍视频 | 狠狠色丁香婷婷综合最新地址 | 天堂网www在线资源 少妇被多人c夜夜爽爽 | 亚洲免费永久精品 | 色综合九九 | 国产精欧美一区二区三区久久久 | 亚洲免费色图 | 区二区三区玖玖玖 | 欧洲国产视频 | 四虎影酷 | 婷婷色五 | 日本美女高潮 | 国产视频一区二区三区在线 | 337p日本欧洲亚洲大胆精品 | 婷婷在线一区 | 欧产日产国产蜜网站 | 亚洲人成人毛片无遮挡 | 日产精品久久久久久久性色 | 国产激情视频在线观看 | 高潮一区| 亚洲色婷婷六月亚洲婷婷6月 | 男人放进女人阳道动态图 | 轻轻草在线视频 | 97国产免费| 四虎国产精品永久在线国在线 | 韩日av片| 男人的天堂在线视频 | 欧美成年人在线观看 | 国语播放老妇呻吟对白 | 久久久综合 | 999视频在线观看 | 中文字幕免费在线观看 | 夜鲁鲁鲁夜夜综合视频欧美 | 337p亚洲精品色噜噜噜 | 成人在线免费观看网站 | 国产综合内射日韩久 | 日韩在线视频中文字幕 | 男人边吃奶边揉好爽免费视频 | 黄色国产在线观看 | 日本男人激烈吮乳吃奶 | 黄色一级一级 | 国产一级二级视频 | 欧美大尺度做爰啪啪免费 | 永久免费的av在线电影网无码 | 色 综合 欧美 亚洲 国产 | 国产99久久久国产精品~~牛 | 91亚洲网| 日韩av在线网站 | 伊人婷婷综合 | 国产精品免费看 | 亚洲成人自拍 | 免费在线你懂的 | 精品啪啪 | 国产女人第一次做爰毛片 | 国产精品国语 | 国产乱码精品一区二区三区亚洲人 | 免费国产成人高清在线观看网站 | 欧美jizzhd欧美18 | 久久精品7 | 欧美抠逼视频 | 亚洲午夜无码久久 | 在线免费观看视频你懂的 | 欧美xxxx吸乳 | 美女内射毛片在线看免费人动物 | 那里有毛片看 | 6080影视最新97理伦片 | 日韩深夜福利 | 少妇一级1淫片 | 精品一区二区三区不卡 | 亚洲九九九九 | 久久爽久久爽久久av东京爽 | 亚洲第一页在线观看 | 麻豆一区二区三区精品视频 | 日韩人妻无码中文字幕视频 | 婷婷久久五月天 | 亚洲精品色图 | 久久精品国产99久久99久久久 | 丁香六月婷婷开心婷婷网 | 欧美性生话 | 欧美三级在线观看视频 | 无码国内精品人妻少妇 | 永久在线观看 | 精品国产一区二区三区无码 | 清纯粉嫩极品夜夜嗨av | 一级片免费在线 | 国产黄色在线免费观看 | 精品国产伦一区二区三区免费 | 亚洲七七久久桃花影院 | 亚洲精品久久久久成人2007 | 97视频入口 | 国产精品久久久久久一区二区三区 | 国产又粗又猛又爽又黄的三级视频 | 中文字幕35页 | 中国熟妇牲交视频 | 欧美少妇一区 | √最新版天堂资源网在线 | 成人做爰高潮片免费看 | 少妇天天爽视频在线看网站 | 又硬又粗又大一区二区三区视频 | 国产男女爽爽爽免费视频 | 国产精品99久久久久久人 | 亚洲区免费中文字幕影片|高清在线观看 | 性欧美亚洲xxxx乳在线观看 | 中文字幕高清在线观看 | 欧美性生活视频免费看 | 奇米影视四色777 | 少妇激情一区二区三区视频 | 国产精品tv| 久久婷婷久久一区二区三区 | 亚洲精品国偷拍自产在线麻豆 | 久久久久高潮毛片免费全部播放 | 女邻居丰满的奶水 | 国产三级精品三级在专区 | 国产呻吟久久久久久久92 | 成人免费区一区二区三区 | 国产女人的高潮大叫毛片 | 美女裸奶100%无遮挡免费网站 | 一久久久 | 色狠狠av一区二区三区香蕉蜜桃 | 四虎免费看黄 | 欧美福利网 | 日本理论片 | 加勒比一本heyzo高清视频 | 91桃色污 | 国产永久免费观看久久黄av片 | 综合激情久久 | 麻豆果冻传媒2021精品传媒一区下载 | 在厨房被c到高潮a毛片奶水 | 免费女同毛片在线观看 | 亚洲一级二级 | 欧美特级黄色片 | 粉嫩小泬无遮挡久久久久久 | 日日夜夜噜噜噜 | 黄色一级片儿 | 潮喷大喷水系列无码久久精品 | 97免费在线观看视频 | 另类在线视频 | 国产91色 | 亚洲天堂一区二区三区 | 欧美激情一级 | 国产巨乳在线观看 | 亚洲精品97久久中文字幕无码 | 九九综合va免费看 | 久久久久有精品国产麻豆 | 午夜影院免费在线观看 | 天堂av日韩 | 国产成人免费ā片在线观看 | 深夜国产精品 | 亚洲成人在线免费 | 日日噜噜夜夜狠狠久久av小说 | 色哟哟在线观看 | 久久久情 | 福利姬在线观看 | 亚洲天码中字一区 | 日韩大尺度在线观看 | 久久精品99久久久久久2456 | 91午夜视频| 久久av影视 | 亚洲第一无码专区天堂 | 人人揉人人捏人人添 | 亚洲欧洲视频在线 | 国产中文欧美日韩在线 | av不卡国产在线观看 | 久久成人欧美 | 国产无套精品一区二区 | 高潮毛片又色又爽免费 | 国产成人精品必看 | 99爱影视| 久久69国产一区二区蜜臀 | 丰满岳乱妇在线观看视频国产 | 日韩免费av在线 | 天堂а√在线地址在线 | 任你操这里只有精品 | 日日噜噜夜夜狠狠久久香91 | 观看毛片 | 天天射狠狠干 | 精品国产aⅴ一区二区三区 精品国产va久久久久久久 | 中文久久久久 | 1000部拍拍拍18勿入免费视频 | 99国产精品视频免费观看 | 黑人邻居太猛中文字幕hd | 99国产成人精品 | 中文字幕亚洲无线码在线一区 | 中文字幕亚洲欧美日韩2019 | 永久免费未满男 | 夜夜精品视频一区二区 | 黄色免费av网站 | 波多野结衣一二区 | heyzo北岛玲在线播放 | 国产精品人人爽人人做我的可爱 | 欧美人与善在线com 久久精品人人做人人综合 国产特级毛片aaaaaa高潮流水 | www.超碰| 精品久久艹 | 日韩中文在线字幕 | 国产69精品久久99卡顿的解决方法 | 婷婷精品| 久久久久在线视频 | 成年人网站黄色 | 色一情一区二区三区四区 | 无码aⅴ精品一区二区三区 45分钟免费真人视频 | 亚洲精品一区二区三区大桥未久 | 国内精品久久久久影视 | 亚洲成a人片在线观看天堂无码 | 国产男女猛烈无遮挡免费视频 | 在线无码av一区二区三区 | 美女破处视频 | 性xxxxx大片做受免费视 | 中文字幕一区二区三区四区视频 | 伊人久久大香线 | 日本黄色a视频 | 99精品免费久久久久久久久日本 | 暖暖免费观看日本版 | 国产精品成人国产乱 | 裸体丰满少妇xxxxxxxx | 国产精品欧美一区二区三区 | 国产色自拍| 日本一级理论片在线大全 | 狠狠色综合网站久久久久久久 | a三级黄色片 | 欧美日韩综合网 | 男女一级黄色 | 成 人 黄 色 片 在线播放 | 国产精品成人国产乱 | 乱色精品无码一区二区国产盗 | 色噜噜狠狠狠综合曰曰曰 | 91亚洲国产 | 精品无码人妻被多人侵犯av | 国产精品嫩草影院av蜜臀 | 午夜影院在线视频 | 国产亚洲精品久久久久久青梅 | 成人国产在线观看 | 国产一级特黄,真人毛片 | 国内精品视频 | 少妇人妻真实偷人精品视频 | 日本三级视频网站 | 狼人社区91国产精品 | 日本专区在线 | 色婷婷av久久久久久久 | 白俄罗斯毛片 | 国产一级桃视频播放 | 四虎影视4hu4虎成人 | 国产成人精品免费视频 | 在线看片网站 | 丝袜脚交一区二区三区 | 日本一本在线视频 | 肥老熟妇伦子伦456视频 | 国产熟妇搡bbbb搡bbbb | 国产femdom调教7777 | 国产精品入口66mio | 国产精品 欧美日韩 | 亚洲欧美另类图片 | 91美女啪啪| 极品一区| 色妞综合网 | 国产在线观看免费 | 九草在线| 九月婷婷人人澡人人添人人爽 | 久久久久蜜桃精品成人片 | 97精产国品一二三产区区别视频 | 最新2020无码中文字幕在线视频 | 亚洲成人免费在线 | 亚欧美视频 | 国产有码aaaae毛片视频 | 久久久久有精品国产麻豆 | 比色毛片 | 日韩免费看 | 亚洲精品久久久口爆吞精 | 草碰在线视频 | 亚洲码国产日韩欧美高潮在线播放 | 欧美日韩一区二区三区视频 | 青青草好吊色 | 国产精品一久久香蕉国产线看观看 | 亚洲天堂毛片 | 印度女人狂野牲交 | 永久免费汤不热视频 | 国产精品久久久久9999 | 成人精品视频一区二区三区尤物 | 91九色高潮 | 午夜精品视频在线观看 | 中文字幕无码不卡免费视频 | 国产二级毛片 | 久久久久久黄色片 | 欧美亚洲一级片 | 影音先锋在线看片资源 | 都市激情综合 | 欧美牲交a欧美在线 | 四虎色 | 精品丰满人妻无套内射 | 在线一二三区 | 亚洲国产精品久久青草无码 | 国产一级黄色片子 | 亚洲免费黄色网址 | av大帝在线| 欧洲色视频 | 国色天香久久久久久久小说 | 国产性夜夜春夜夜爽1a片 | 亚洲处破女av日韩精品 | 嫩草影院在线观看视频 | 国内av在线 | 色一欲一性一乱—区二区三区 | 国产成人免费观看久久久 | 色综合久久五月 | 欧美一级性 | 日本高清视频在线 | 97无码免费人妻超级碰碰夜夜 | 婷婷丁香五月天综合东京热 | 国产黄色免费片 | 久久久久久人妻精品一区 | 亚洲欧美日韩综合在线 | 久久久久午夜 | 国产亚洲精品久久久久5区 成熟了的熟妇毛茸茸 | 国产丝袜美女 | 啪啪福利| 色妺妺视频网 | 小视频国产| 激情网五月天 | 色哟哟一区二区三区精华液 | 美女精品一区 | 国产精品婷婷久久久久久 | 黄色在线免费网站 | 成年人看的羞羞网站 | 欧美一区二区三区成人片在线 | 日韩欧美一区视频 | 欧美做爰性生交视频 | 国产精品成人用品 | 亚洲国产精品ⅴa在线观看 天堂中文在线资源 | 日韩三级黄| 中文字幕在线日韩 | www亚洲com| 亚洲 中文 欧美 日韩 在线 | 成人性生交大片免费 | 精品欧美久久久 | 国产九一精品 | 成人羞羞国产免费 | 北条麻妃一区二区三区在线视频 | 欧美肥老太牲交大战 | 肉番在线观看 | 久久亚洲视频 | 色88久久久久高潮综合影院 | 黄色三级片毛片 | 欧美精品v国产精品v日韩精品 | 中文在线а√在线 | 久久黄色精品视频 | 欧美福利第一页 | 天堂网亚洲 | 国产又黄又爽又色的免费视频白丝 | 亚洲精品国产第一综合99久久 | 亚洲色欲久久久综合网东京热 | 日韩3p视频| 女人14毛片毛片毛片毛片区二 | 精品国产美女 | 国产免费视频一区二区三区 | 国产人妻精品无码av在线 | 免费超爽视频在线观看 | 一本久久a精品一合区久久久 | 日韩精品久久久久影视的特点 | 国产无遮挡免费 | 亚洲国产成人精品无码区在线观看 | 中文字幕精品无码一区二区 | 中国黄色毛片 大片 | 国产免费黄色录像 | 中文字字幕在线中文无码 | 色综合久久88色综合天天 | 国产超91| 欧美狂摸吃奶呻吟 | 色爱综合另类图片av | 亚洲熟妇无码一区二区三区导航 | 国产精品久久久久久久久免费 | 欧美a级成人淫片免费看 | 欧美国产在线观看 | 好吊妞国产欧美日韩免费观看网站 | 日韩精品久久久久久久电影蜜臀 | 日本三级日本三级韩国三级视 | 国产色秀视频在线播放 | 亚洲人成色77777| 无码熟熟妇丰满人妻啪啪 | 极品久久久久 | 日本乱大交做爰 | 国产日产欧产精品浪潮的免费功能 | 性xxxx欧美 | 中文字幕亚洲精品日韩一区 | 国产一级在线播放 | 天天性综合| 精品久久中文字幕97 | 亚洲精品久久一区二区三区777 | 538精品视频在线播放 | 97成人免费 | 久久伊人一区 | 免费a v网站 | 国产三级精品三级 | 永久免费看片在线 | 国产女教师bbwbbwbbw | 久久免费视频网 | 亚洲国产成人无码av在线 | 亚洲a免费 | 日本做爰xxxⅹ高潮欧美 | 国自产拍偷拍福利精品免费一 | 国产欧美精品一区二区色综合 | 欧美另类极品 | 久久99精品久久久久久无毒不卡8 | 最新中文字幕av无码不卡 | 蜜臀aⅴ精品一区二区三区 蜜臀aⅴ一区二区三区 | 成人免费影视网站 | 精品96久久久久久中文字幕无 | 精品人妻系列无码人妻漫画 | 在线视频 一区二区 | 日韩欧美视频免费观看 | 精品国产午夜福利在线观看 | 欧美丰满熟妇bbbbbb | 人人爽人人澡人人人妻 | www在线免费观看视频 | 伦一理一级一a一片 | 免费全部高h视频无码 | 欧美国产日韩在线观看成人 | 性——交——性——乱免费的 | 亚洲精品黄色片 | 少妇口述公做爰全过程目录 | 97免费在线观看视频 | 亚洲色图插插插 | 玖玖色资源| 亚洲最大成人免费视频 | 女人高潮a毛片在线看 | 国产爆操视频 | jizzjizz在线播放| 亚洲午夜精品在线观看 | 特黄一级毛片 | 精品无码成人网站久久久久久 | 国产成a人亚洲精v品在线观看 | 国产嫩草影视 | 69久久夜色精品国产69 | 少妇激情av一区二区三区 | 国产又爽又黄无码无遮挡在线观看 | 精品无人区无码乱码毛片国产 | 免费看污黄网站在线观看 | 蜜臀99久久精品久久久久小说 | 天堂网2014| 特黄特色大片免费播放器图片 | 亚洲伦理视频 | 91精产国品一二三产区区别网站 | 琪琪电影午夜理论片八戒八戒 | 69精品久久| 中国内地毛片免费高清 | 国产成a人亚洲精品无码久久网 | 3d动漫精品啪啪一区二区下载 | 日韩一区免费视频 | 亚洲视频a | 老司机精品福利视频 | 999国产精品亚洲77777 | 最新亚洲人成无码网站 | 成 人 免费 黄 色 | 成人午夜在线播放 | 狠狠色狠狠色综合网 | 伊人成色综合网 | 日韩欧美一本 | 亚洲午夜精品一区二区 | 狠狠干青青草 | 免费无码一区二区三区蜜桃 | 中文文字幕文字幕肉岳 | 国产精品嫩草影院精东 | 永久免费的啪啪网站免费观看 | 日韩国产一区二区三区四区五区 | 超碰免费公开 | 特级无码毛片免费视频尤物 | 亚洲一区欧洲一区 | 蜜臀av性久久久蜜臀av流畅 | 国产欧美成人一区二区a片 又大又长粗又爽又黄少妇视频 | 国产精品国产三级国产专区53 | www.99精品| 天天躁夜夜躁很很躁麻豆 | 黄色片视频免费观看 | 国产欧美黑寡妇久久久 | 国产成人综合久久精品免费 | 国产乱子伦一区二区三区 | 91 在线观看 | 亚洲aⅴ在线无码播放毛片一线天 | 熟女毛多熟妇人妻在线视频 | 麻豆国产91在线播放 | 依人综合网 | 国产精品久久久久久超碰 | 特级淫片裸体免费看 | 国产激情小视频 | 亚洲天堂久久久 | 色综合久久久久综合一本到桃花网 | 天堂素人约啪 | kk视频在线视频 | 一本大道在线一本久道视频 | 国产乱码精品一区二区 | 99精品久久精品一区二区 | 欧美成人精品手机在线 |