在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

與現代傳感器接口:接口設計

李雪 ? 來源: bairunwanda168 ? 作者: bairunwanda168 ? 2022-07-21 11:15 ? 次閱讀

在現代開發周期中使用傳感器時,重要的是在編寫任何傳感器代碼之前,開發人員花時間仔細考慮他們的系統架構。精心架構的應用程序將提供軟件接口,不僅提供與傳感器交互的通用方法,而且還將抽象這些傳感器的硬件細節。許多嵌入式開發人員仍在編寫代碼,將他們的傳感器代碼與他們的應用程序緊密耦合,這使得重用、擴展和測試軟件變得具有挑戰性。開發人員可以遵循的一個很好的最佳實踐是花時間在他們的架構中設計一個合適的接口,然后產生這些好處。在我之前的帖子中,我討論了不同類型的驅動程序。在這篇文章中,我將討論接口設計概念以及如何將它們應用于與傳感器的接口。

創建接口的好處

使用面向對象語言的開發人員自然會理解接口可以為應用程序提供的好處,但大多數嵌入式系統仍然使用 C 編寫,因此這些開發人員可能會忽略這些好處。嵌入式系統中創建與 I/O 設備交互的接口有很多好處,例如:

  • 反轉代碼依賴方向
  • 增強便攜性
  • 抽象的復雜性和低級細節
  • 提高重用性和可擴展性
  • 簡化軟件維護

當使用接口與傳感器交互時,開發人員會發現許多低級細節都是從高級應用程序中抽象出來的。這意味著應用程序不知道傳感器是否連接到 ADCI2C 總線、SPI 總線或其他一些硬件接口。

例如,花點時間看一下下圖:

pYYBAGLXUT6AEktyAABYBODCu_s638.png

pYYBAGLXUT6AEktyAABYBODCu_s638.png
傳感器接口中的抽象(來源:Jacob Beningo)

在此示例中,應用程序通過傳感器 API 進行調用,并使用其操作之一與傳感器進行交互。應用程序不知道 Sensor API 的幕后發生了什么,它可能有函數調用,例如:

  • Sensor_Read
  • Sensor_Write

該傳感器接口可能正在直接調用 ADC 外圍設備,或者它可能正在創建從通信外圍設備發送出去的消息包。界面的好處是應用程序開發人員不需要知道這些細節。(事實上??,接口層可能只是取消對已配置為指向正確模塊以處理傳感器通信的函數指針的引用!這在我們的 C 應用程序中提供了一種簡單的繼承形式。)

設計傳感器接口

有興趣創建良好、可重復使用的傳感器接口的開發人員應該遵循幾個步驟。這些步驟有助于確保界面在第一次交互時盡可能可用,即使在界面完全穩定之前可能需要多次迭代。

第一步是確定將在您將設計的嵌入式系統中使用的傳感器類型,然后檢查數據表。在此步驟中,您希望熟悉所有不同傳感器類型之間共有的操作和數據,以及哪些不常見。您會發現,即使跨不同類型的傳感器,操作和數據之間也始終存在共性。我們希望將這種共性構建到界面中。我們將不常見的操作和數據構建到該接口的擴展中,這允許我們根據正在開發的應用程序添加和刪除這些功能。

接下來,一旦我們確定了操作和數據,我們就可以用 C 語言勾勒出一個可以滿足我們傳感器需求的接口。該接口的復雜性完全取決于開發人員。例如,我們可以設計一個簡單的基于函數調用的接口,其中函數原型可能如下所示:

bool Sensor_Init(const SensorConfig_t * const Config);
bool Sensor_Read(const SensorObj_t * const, SensorData_t * const SensorData);
bool Sensor_Write(const SensorObj_t * const, SensorData_t * const SensorData);

在這種情況下,對接口的任何調用都會返回一個布爾值,該布爾值提供有關操作結果的信息。例如,我們可能會調用Sensor_Read,如果底層實現是輪詢設備以獲取傳感器數據就緒,那么如果沒有新數據,我們可能會返回 false。如果數據可用,則可能會將其復制到提供給接口的SensorData位置并返回 true。(我們當然可以變得更復雜并創建錯誤代碼和其他返回值,但我們應該從簡單開始)。

該接口可用于與任意數量的傳感器進行交互,我們只需將SensorObj信息傳遞給接口,然后讓接口完成我們需要完成的操作即可。我們也可以將其用作模板并為傳感器名稱重命名Sensor,盡管這開始最小化抽象的有用性和可重用性。

我們可以設計接口的最后一種有趣的方式是成為函數指針的結構。然后,開發人員將實例化該結構并使用與他們想要連接的傳感器相關的特定函數調用對其進行初始化。此實現可能如下所示:

typedef struct
{
bool ( Init)(const SensorConfig_t * const Config);
bool (
Read)(const SensorObj_t * const, SensorData_t * const SensorData);
bool (*Write)(const SensorObj_t * const, SensorData_t * const SensorData);
} 傳感器_t;

然后,我們可以通過簡單地創建和初始化這個結構來為多個傳感器使用相同的接口,例如:

常量 Sensor_t 模擬 =
{
Adc_Init,
Adc_Read,
Adc_Write
};
常量 Sensor_t Gyro =
{
Gyro_Init,
Gyro_Read,
Gyro_Write
};

調用傳感器的接口然后看起來像:

模擬.Init(AdcConfig);
Gryo.Init(GyroConfig);

正如你所看到的,這種類型的接口是非常可擴展和可重用的。這可能會讓一些開發人員感到緊張,因為它確實使用了函數指針。必須注意確保這些函數指針正常運行。

結論

將傳感器連接到嵌入式系統時,自然的本能是檢查該傳感器,然后開始為其編寫驅動程序。不幸的是,這導致軟件緊密耦合并且不具有可擴展或可重用的優點。正如我們在這篇文章中所看到的,我們應該首先關注我們的軟件架構以及我們的傳感器如何適應該架構。然后我們可以開發一個接口來抽象出我們傳感器的細節,這樣應用程序就不會意識到復雜性或低級細節。這樣一來,如果在設計周期后期發現傳感器不適合應用程序,則可以輕松更換傳感器,而無需修改核心應用程序代碼


審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2564

    文章

    52724

    瀏覽量

    764776
  • 接口設計
    +關注

    關注

    2

    文章

    197

    瀏覽量

    30232
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    傳感器有哪些類型?有哪些接口

    傳感器的類型和接口種類繁多,以下是一些常見的分類和接口方式: 傳感器類型 溫度傳感器:用于測量溫度,常見的有熱電偶、熱電阻、數字溫度
    的頭像 發表于 05-22 09:33 ?464次閱讀

    可以通過 slavefifo 接口建立 FX3 和傳感器通信嗎?

    需要在CYUSB2014和AR0144c之間建立通信。 我們不采用 UVC 框架。 我們可以通過 slavefifo 接口建立 FX3 和傳感器通信嗎? 我已將“slfifosync”項目文件視為
    發表于 05-19 08:30

    EE-358:紅色/透明傳感器與ADSP-BF609 Blackfin處理接口

    電子發燒友網站提供《EE-358:紅色/透明傳感器與ADSP-BF609 Blackfin處理接口.pdf》資料免費下載
    發表于 01-08 14:44 ?0次下載
    EE-358:紅色/透明<b class='flag-5'>傳感器</b>與ADSP-BF609 Blackfin處理<b class='flag-5'>器</b><b class='flag-5'>接口</b>

    深視智能SCI系列光譜共焦位移傳感器IO接口定義

    深視智能SCI系列光譜共焦位移傳感器IO接口定義
    的頭像 發表于 11-26 01:05 ?428次閱讀
    深視智能SCI系列光譜共焦位移<b class='flag-5'>傳感器</b>IO<b class='flag-5'>接口</b>定義

    VGA接口現代設備中的應用

    VGA接口,作為歷史上最悠久的視頻接口之一,曾經是計算機顯示和顯卡之間的主要連接方式。 1. VGA接口的基本原理 VGA接口通過15針腳
    的頭像 發表于 11-08 10:31 ?4227次閱讀

    使用MSP430掃描接口和光學傳感器進行旋轉和線性運動檢測

    電子發燒友網站提供《使用MSP430掃描接口和光學傳感器進行旋轉和線性運動檢測.pdf》資料免費下載
    發表于 10-22 10:03 ?0次下載
    使用MSP430掃描<b class='flag-5'>接口</b>和光學<b class='flag-5'>傳感器</b>進行旋轉和線性運動檢測

    使用原始捕捉模式將CMOS傳感器與TMS320DM642接口

    電子發燒友網站提供《使用原始捕捉模式將CMOS傳感器與TMS320DM642接口.pdf》資料免費下載
    發表于 10-16 09:45 ?0次下載
    使用原始捕捉模式將CMOS<b class='flag-5'>傳感器</b>與TMS320DM642<b class='flag-5'>接口</b>

    使用MSP430擴展掃描接口(ESI)進行LC傳感器旋轉檢測

    電子發燒友網站提供《使用MSP430擴展掃描接口(ESI)進行LC傳感器旋轉檢測.pdf》資料免費下載
    發表于 10-10 11:33 ?0次下載
    使用MSP430擴展掃描<b class='flag-5'>接口</b>(ESI)進行LC<b class='flag-5'>傳感器</b>旋轉檢測

    TPIC8101爆震傳感器接口技術簡介

    電子發燒友網站提供《TPIC8101爆震傳感器接口技術簡介.pdf》資料免費下載
    發表于 09-30 14:46 ?0次下載
    TPIC8101爆震<b class='flag-5'>傳感器</b><b class='flag-5'>接口</b>技術簡介

    TMP100-EP帶I2C接口的數字溫度傳感器數據表

    電子發燒友網站提供《TMP100-EP帶I2C接口的數字溫度傳感器數據表.pdf》資料免費下載
    發表于 08-15 11:33 ?0次下載
    TMP100-EP帶I2C<b class='flag-5'>接口</b>的數字溫度<b class='flag-5'>傳感器</b>數據表

    lmp91200還有沒有spi和溫度傳感器接口功能?

    目前買到的91200,是否已經沒有spi和溫度傳感器接口功能?
    發表于 08-15 07:23

    LM82帶雙線串行接口的數字溫度傳感器數據表

    電子發燒友網站提供《LM82帶雙線串行接口的數字溫度傳感器數據表.pdf》資料免費下載
    發表于 08-14 10:29 ?0次下載
    LM82帶雙線串行<b class='flag-5'>接口</b>的數字溫度<b class='flag-5'>傳感器</b>數據表

    1.5°C精確可編程數字溫度傳感器,帶SPI?接口數據表

    電子發燒友網站提供《1.5°C精確可編程數字溫度傳感器,帶SPI?接口數據表.pdf》資料免費下載
    發表于 08-13 10:09 ?0次下載
    1.5°C精確可編程數字溫度<b class='flag-5'>傳感器</b>,帶SPI?<b class='flag-5'>接口</b>數據表

    配備 SMAART Wire? 接口的 TMP104 低功耗數字溫度傳感器數據表

    電子發燒友網站提供《配備 SMAART Wire? 接口的 TMP104 低功耗數字溫度傳感器數據表.pdf》資料免費下載
    發表于 08-13 09:47 ?0次下載
    配備 SMAART Wire? <b class='flag-5'>接口</b>的 TMP104 低功耗數字溫度<b class='flag-5'>傳感器</b>數據表

    TMP106 雙線接口數字溫度傳感器數據表

    電子發燒友網站提供《TMP106 雙線接口數字溫度傳感器數據表.pdf》資料免費下載
    發表于 08-12 10:17 ?0次下載
    TMP106 雙線<b class='flag-5'>接口</b>數字溫度<b class='flag-5'>傳感器</b>數據表
    主站蜘蛛池模板: 久久好色| 国产三级国产精品国产普男人 | 午夜性福 | 天天干天天噜 | 国产卡一卡2卡三卡免费视频 | 日韩大尺度视频 | 寡妇影院首页亚洲图片 | 国产乱码精品一区二区三 | 久久鬼| 美女喷白浆视频 | 美女视频大全美女视频黄 | 成人v片| 丁香综合激情 | 午夜国产大片免费观看 | 99久久久免费精品免费 | 久久精品re | 在线啪 | 国产精品久久在线观看 | 色噜噜狠狠狠色综合久 | 又黄又爽又猛大片录像 | 国产经典三级 | 在线观看免费精品国产 | 亚洲一区二区三区网站 | cao草棚视频网址成人 | 亚洲免费播放 | 717影院理伦午夜论八戒 | 国产h视频在线 | 天天天干 | 怡红院国产 | 丁香六月在线观看 | 把小嫩嫩曰出白浆 | 日本高免费观看在线播放 | 国产做a爰片久久毛片 | 四虎看黄 | 奇米影视亚洲狠狠色777不卡 | 性欧美黑人巨大videos | 精品福利在线视频 | 日韩三级视频在线观看 | 黄网站色在线视频免费观看 | www.av免费| 国产一区二区三区美女图片 |