0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹ADC寄存器的讀取

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Michael Schmidt ? 2022-10-12 09:45 ? 次閱讀

在“使用 Node 將 IoT嵌入式連接.js第 3 部分”中,我們查看了用于讀取加速度計(jì)的軟件包。在第4部分中,我們將重點(diǎn)介紹ADC寄存器的讀取。

該包演示如何運(yùn)行從 Node.js 調(diào)用的 C 代碼。此代碼通過 CPU 中 i.MX28 ADC 寄存器的存儲器映射來實(shí)現(xiàn)這些寄存器的讀取。此代碼直接取自技術(shù)系統(tǒng)公司為 TS-7680 提供的樣本代碼。這里的主要補(bǔ)充是將 Node.js 接口到 C 的代碼。

Node.js使用C++接口,因此代碼必須以C++編寫。我們的實(shí)施是在。在此文件中,有一個改編自 的函數(shù),該函數(shù)打開并將 CPU ADC 接口的三個區(qū)域存儲器映射到指針。這些器件可用于訪問執(zhí)行ADC功能所需的CPU寄存器。

其次是功能,也改編自其設(shè)置ADC并獲得7個樣本。對這些樣本進(jìn)行平均并放置在緩沖區(qū)中。

必須將“Node.js的本機(jī)抽象”或 NAN 的包含文件放在文件的頂部。隨著 Node 的成熟.js,用于創(chuàng)建加載項(xiàng)的界面發(fā)生了變化,NAN 抽象出這些差異,以允許創(chuàng)建適用于 Node .js 版本 0.8、0.10、0.12 和 1-7 的代碼。

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MTgwOTc3ZDkucG5nJnZlcnNpb249MDAwMCZzaWc9MjE2ZGMzNTA2NWM4OTkzYjljZTNlOTljZGZmNWYyZTk253D

用于創(chuàng)建 Node.js加載項(xiàng)的代碼位于函數(shù)中,符合 Node.js加載項(xiàng)的參數(shù)要求。具體來說,它有一個看起來像這樣的原型:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MjFhY2ZiMTMucG5nJnZlcnNpb249MDAwMCZzaWc9MGQ2MDE1ZGM1YzZmMmQzMTIzYTkyOTgyNTBmNzgxYjE253D

我們采用一個名為 的參數(shù)。這是一個復(fù)雜的NAN類,我們目前不需要擔(dān)心。

在此函數(shù)中,首先聲明一個緩沖器來保存來自所有 8 個 ADC 的采樣,這些 ADC 由 讀?。?/p>

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2Mjg1ODc2NzIucG5nJnZlcnNpb249MDAwMCZzaWc9ZjNkZjIwOTA1MmY0YzZmMTFmYWM1YjM1ZWJiNTBjYzg253D

接下來,如果尚未調(diào)用,則調(diào)用。全局變量用于確定以下內(nèi)容:init

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MmM3MDk5NjUucG5nJnZlcnNpb249MDAwMCZzaWc9YzI2NGM1Nzg1NzM1NWVkM2I0ZGI4MTU3ZjE1MzY0Nzc253D

現(xiàn)在調(diào)用以用樣本填充緩沖區(qū):

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzBiM2U1N2IucG5nJnZlcnNpb249MDAwMCZzaWc9YjRjNTJmMTIzZjNmODA4ZTljYmY2OTYzOTdjYTEwMzc253D

接下來,構(gòu)造一個長度為 8 的 JavaScript 數(shù)組,并將此數(shù)組中每個元素的值設(shè)置為相應(yīng)的 ADC 示例值:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzNjNjQ0MmUucG5nJnZlcnNpb249MDAwMCZzaWc9ZDgxZDU2OGVhMmZhZjdjYmRkM2NkNjcyY2FhYjgwYmM253D

然后,將數(shù)組設(shè)置為從 JavaScript 調(diào)用函數(shù)所顯示的返回值。這比簡單的語句稍微復(fù)雜一些,因?yàn)樗鼜腃++橋回JavaScript!

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzZiYjRhNmIucG5nJnZlcnNpb249MDAwMCZzaWc9MWY3OGZjNjBiYmM0Zjc5NWNkNzE2MDU0ZGViZDNkNzQ253D

除了函數(shù)之外,還必須定義一個函數(shù)(注意大寫的“I”,這使得它與我們的函數(shù)不同)。此處的兩個重要部分是 “” 和 。它們定義了為訪問函數(shù)而調(diào)用的 JavaScript 端的模塊元素的名稱,以及C++端被調(diào)用的函數(shù)的名稱:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzlkYzI2MTcucG5nJnZlcnNpb249MDAwMCZzaWc9NzFjYTQ1YzU3YzVmZWYxYzM3ZTVkNDEzMTAwZDQzNzM253D

現(xiàn)在,調(diào)用一個宏將函數(shù)與模塊名稱相關(guān)聯(lián):

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NDFlNGFkNGEucG5nJnZlcnNpb249MDAwMCZzaWc9ZTFhYzcwOTc5OTA4MmE5Zjk4M2MzZTc2MmMyM2FjNmE253D

該文件提供了一個精簡包裝器,它通過調(diào)用 中定義的 addin 函數(shù)對 ADC 值進(jìn)行采樣,然后在連接套接字上輸出這些值來響應(yīng)對 ADC 值的請求。

此行的開頭設(shè)置了綁定節(jié)點(diǎn),我們的C++加載項(xiàng):

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NDk4MDM0MzQucG5nJnZlcnNpb249MDAwMCZzaWc9YWI0NzJkODY3OWVjNTEwYTZlYmVjOGMwMWE0NjQ5Nzg253D

具體來說,該模塊返回一個函數(shù),該函數(shù)使用二進(jìn)制文件的相對路徑調(diào)用。這將在構(gòu)建過程中從C++源代碼創(chuàng)建,并具有“.node”后綴。從調(diào)用返回的是引用加載項(xiàng)的 JavaScript 對象。由于附加組件定義了一個函數(shù) ,因此此函數(shù)可作為返回對象的元素進(jìn)行訪問。調(diào)用此函數(shù)實(shí)質(zhì)上是調(diào)用C++代碼。

接下來是函數(shù)。它是一個標(biāo)準(zhǔn)的快速處理程序函數(shù),每當(dāng)客戶端請求終結(jié)點(diǎn)時都會調(diào)用它。它記錄條目,將響應(yīng)的內(nèi)容類型設(shè)置為 ,然后調(diào)用C++代碼來檢索 ADC 值。然后,它獲取數(shù)組并將其轉(zhuǎn)換為字符串,每行有一個數(shù)字:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NTE3Njc2MzYucG5nJnZlcnNpb249MDAwMCZzaWc9M2JlMzU2NzY1NjAyMTNhOWY2ZWIwOTA2Y2M0MDc1YzY253D

最后,設(shè)置為初始化函數(shù),該函數(shù)檢查用于更改終結(jié)點(diǎn)字符串的選項(xiàng),并將終結(jié)點(diǎn)與函數(shù)關(guān)聯(lián):

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NTc1NDEwOTgucG5nJnZlcnNpb249MDAwMCZzaWc9Yjg1ZDliMmFkYTg4ODVkOWRjMzIyMzJhNWE1YTI4MTU253D

該文件包含編譯C++代碼所需的信息。安裝包時會自動調(diào)用生成過程。

在下一期也是最后一期中,我們將構(gòu)建一個用戶界面,該界面利用我們已經(jīng)實(shí)現(xiàn)的服務(wù),以便從Web瀏覽器控制開發(fā)板。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119821
  • adc
    adc
    +關(guān)注

    關(guān)注

    98

    文章

    6395

    瀏覽量

    543785
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2102

    瀏覽量

    73453
收藏 人收藏

    評論

    相關(guān)推薦

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定義  寄存器是中央處理內(nèi)的組成部分。寄存器是有限存貯容量
    發(fā)表于 03-08 14:26 ?2.2w次閱讀

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思 數(shù)據(jù)寄存器數(shù)據(jù)寄存器包括累加AX、基址寄存器BX、計(jì)數(shù)
    發(fā)表于 03-08 14:38 ?1.2w次閱讀

    移位寄存器,移位寄存器是什么意思

    移位寄存器,移位寄存器是什么意思 移位寄存器_
    發(fā)表于 03-08 14:50 ?1.7w次閱讀

    寄存器與移位寄存器

    寄存器與移位寄存器介紹寄存器原理和移位寄存器的原理及實(shí)現(xiàn)。
    發(fā)表于 05-20 11:47 ?0次下載

    移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途

    移位寄存器是一個具有移位功能的寄存器,是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移。本文主要介紹了移位寄存器的用途以及移位
    發(fā)表于 12-22 15:49 ?2w次閱讀

    主存和寄存器的區(qū)別介紹

    本文開始介紹了主存的概念和頻率及主存的大小,其次介紹寄存器工作原理與寄存器用途,最后介紹了主存和寄存器
    發(fā)表于 04-11 14:27 ?2.3w次閱讀

    寄存器由什么組成

    本文首先介紹寄存器的原理組成,其次介紹了ARM寄存器組成,最后介紹寄存器的用途。
    的頭像 發(fā)表于 08-21 18:33 ?3.7w次閱讀

    ATMEL SAMC21的ADC驅(qū)動寄存器操作和寄存器程序合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是ATMEL SAMC21的ADC驅(qū)動寄存器操作和寄存器程序合集免費(fèi)下載。
    發(fā)表于 06-20 08:00 ?32次下載
    ATMEL SAMC21的<b class='flag-5'>ADC</b>驅(qū)動<b class='flag-5'>寄存器</b>操作和<b class='flag-5'>寄存器</b>程序合集免費(fèi)下載

    STM32寄存器的簡介、地址查找,與直接操作寄存器

    什么是寄存器提到單片機(jī),就不得不提到寄存器。根據(jù)百度百科介紹,寄存器是中央處理內(nèi)的組成部分。寄存器
    發(fā)表于 11-30 13:51 ?12次下載
    STM32<b class='flag-5'>寄存器</b>的簡介、地址查找,與直接操作<b class='flag-5'>寄存器</b>

    MPU6050寄存器介紹

    MPU6050寄存器介紹電源管理寄存器1(0X6B)陀螺儀配置寄存器(0X1B)加速度傳感配置寄存器
    發(fā)表于 12-06 11:51 ?20次下載
    MPU6050<b class='flag-5'>寄存器</b><b class='flag-5'>介紹</b>

    AArch64寄存器介紹

    作為 RISC 架構(gòu),AArch64 提供了大量的通用寄存器。除通用寄存器之外,本節(jié)還會介紹特殊寄存器、系統(tǒng)控制寄存器、處理
    的頭像 發(fā)表于 08-24 09:57 ?5905次閱讀

    labview讀取三菱plc寄存器內(nèi)容

    如何使用LabVIEW讀取三菱PLC的寄存器內(nèi)容,并提供一些實(shí)例代碼和注意事項(xiàng)。 首先,我們需要了解PLC寄存器的基本概念。PLC寄存器是一種用于存儲數(shù)據(jù)的內(nèi)部變量,被用于傳輸和保存信
    的頭像 發(fā)表于 12-27 16:31 ?2035次閱讀

    MC17XS6500高邊驅(qū)動芯片寄存器介紹

    本文主要是對MC17XS6500高邊驅(qū)動芯片寄存器進(jìn)行的介紹,MC17XS6500寄存器分為輸入寄存器和輸出寄存器,對常用的幾個輸入和輸出
    的頭像 發(fā)表于 12-29 08:27 ?706次閱讀
    MC17XS6500高邊驅(qū)動芯片<b class='flag-5'>寄存器</b>的<b class='flag-5'>介紹</b>

    AFE模擬前端寄存器讀取操作

    AFE模擬前端寄存器讀取操作是電子系統(tǒng)設(shè)計(jì)和調(diào)試中不可或缺的一環(huán)。寄存器作為AFE模擬前端中的重要組成部分,存儲著各種配置參數(shù)和狀態(tài)信息,通過讀取這些
    的頭像 發(fā)表于 03-15 15:50 ?612次閱讀

    Modbus協(xié)議的讀取保持寄存器

    功能碼用于讀取從設(shè)備保持寄存器的內(nèi)容,不支持廣播模式。消息頓中指定了需要讀取的保持寄存器的起始地址和數(shù)目。而保持寄存器中各地址的具體內(nèi)容和意
    的頭像 發(fā)表于 10-30 10:54 ?246次閱讀