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

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

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

介紹ADC寄存器的讀取

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(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 代碼。此代碼通過(guò) CPU 中 i.MX28 ADC 寄存器的存儲(chǔ)器映射來(lái)實(shí)現(xiàn)這些寄存器的讀取。此代碼直接取自技術(shù)系統(tǒng)公司為 TS-7680 提供的樣本代碼。這里的主要補(bǔ)充是將 Node.js 接口到 C 的代碼。

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

其次是功能,也改編自其設(shè)置ADC并獲得7個(gè)樣本。對(duì)這些樣本進(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ù)要求。具體來(lái)說(shuō),它有一個(gè)看起來(lái)像這樣的原型:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MjFhY2ZiMTMucG5nJnZlcnNpb249MDAwMCZzaWc9MGQ2MDE1ZGM1YzZmMmQzMTIzYTkyOTgyNTBmNzgxYjE253D

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

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

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2Mjg1ODc2NzIucG5nJnZlcnNpb249MDAwMCZzaWc9ZjNkZjIwOTA1MmY0YzZmMTFmYWM1YjM1ZWJiNTBjYzg253D

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

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MmM3MDk5NjUucG5nJnZlcnNpb249MDAwMCZzaWc9YzI2NGM1Nzg1NzM1NWVkM2I0ZGI4MTU3ZjE1MzY0Nzc253D

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

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzBiM2U1N2IucG5nJnZlcnNpb249MDAwMCZzaWc9YjRjNTJmMTIzZjNmODA4ZTljYmY2OTYzOTdjYTEwMzc253D

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

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzNjNjQ0MmUucG5nJnZlcnNpb249MDAwMCZzaWc9ZDgxZDU2OGVhMmZhZjdjYmRkM2NkNjcyY2FhYjgwYmM253D

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

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzZiYjRhNmIucG5nJnZlcnNpb249MDAwMCZzaWc9MWY3OGZjNjBiYmM0Zjc5NWNkNzE2MDU0ZGViZDNkNzQ253D

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

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzlkYzI2MTcucG5nJnZlcnNpb249MDAwMCZzaWc9NzFjYTQ1YzU3YzVmZWYxYzM3ZTVkNDEzMTAwZDQzNzM253D

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

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NDFlNGFkNGEucG5nJnZlcnNpb249MDAwMCZzaWc9ZTFhYzcwOTc5OTA4MmE5Zjk4M2MzZTc2MmMyM2FjNmE253D

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

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

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NDk4MDM0MzQucG5nJnZlcnNpb249MDAwMCZzaWc9YWI0NzJkODY3OWVjNTEwYTZlYmVjOGMwMWE0NjQ5Nzg253D

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

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

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NTE3Njc2MzYucG5nJnZlcnNpb249MDAwMCZzaWc9M2JlMzU2NzY1NjAyMTNhOWY2ZWIwOTA2Y2M0MDc1YzY253D

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

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NTc1NDEwOTgucG5nJnZlcnNpb249MDAwMCZzaWc9Yjg1ZDliMmFkYTg4ODVkOWRjMzIyMzJhNWE1YTI4MTU253D

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

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

審核編輯:郭婷

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

    關(guān)注

    31

    文章

    5359

    瀏覽量

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

    關(guān)注

    98

    文章

    6525

    瀏覽量

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

    關(guān)注

    22

    文章

    2113

    瀏覽量

    73745
收藏 人收藏

    評(píng)論

    相關(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.3w次閱讀

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

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

    寄存器與移位寄存器

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

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

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

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

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

    寄存器由什么組成

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

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

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

    STM32寄存器的簡(jiǎn)介、地址查找,與直接操作寄存器

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

    MPU6050寄存器介紹

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

    AArch64寄存器介紹

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

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

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

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

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

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

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

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

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