0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍ADC寄存器的读取

星星科技指导员 来源:嵌入式计算设计 作者:Michael Schmidt 2022-10-12 09:45 次阅读

在“使用 Node 将 IoT嵌入式连接.js第 3 部分”中,我们查看了用于读取加速度计的软件包。在第4部分中,我们将重点介绍ADC寄存器的读取。

该包演示如何运行从 Node.js 调用的 C 代码。此代码通过 CPU 中 i.MX28 ADC 寄存器的存储器映射来实现这些寄存器的读取。此代码直接取自技术系统公司为 TS-7680 提供的样本代码。这里的主要补充是将 Node.js 接口到 C 的代码。

Node.js使用C++接口,因此代码必须以C++编写。我们的实施是在。在此文件中,有一个改编自 的函数,该函数打开并将 CPU ADC 接口的三个区域存储器映射到指针。这些器件可用于访问执行ADC功能所需的CPU寄存器。

其次是功能,也改编自其设置ADC并获得7个样本。对这些样本进行平均并放置在缓冲区中。

必须将“Node.js的本机抽象”或 NAN 的包含文件放在文件的顶部。随着 Node 的成熟.js,用于创建加载项的界面发生了变化,NAN 抽象出这些差异,以允许创建适用于 Node .js 版本 0.8、0.10、0.12 和 1-7 的代码。

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MTgwOTc3ZDkucG5nJnZlcnNpb249MDAwMCZzaWc9MjE2ZGMzNTA2NWM4OTkzYjljZTNlOTljZGZmNWYyZTk253D

用于创建 Node.js加载项的代码位于函数中,符合 Node.js加载项的参数要求。具体来说,它有一个看起来像这样的原型:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MjFhY2ZiMTMucG5nJnZlcnNpb249MDAwMCZzaWc9MGQ2MDE1ZGM1YzZmMmQzMTIzYTkyOTgyNTBmNzgxYjE253D

我们采用一个名为 的参数。这是一个复杂的NAN类,我们目前不需要担心。

在此函数中,首先声明一个缓冲器来保存来自所有 8 个 ADC 的采样,这些 ADC 由 读取:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2Mjg1ODc2NzIucG5nJnZlcnNpb249MDAwMCZzaWc9ZjNkZjIwOTA1MmY0YzZmMTFmYWM1YjM1ZWJiNTBjYzg253D

接下来,如果尚未调用,则调用。全局变量用于确定以下内容:init

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MmM3MDk5NjUucG5nJnZlcnNpb249MDAwMCZzaWc9YzI2NGM1Nzg1NzM1NWVkM2I0ZGI4MTU3ZjE1MzY0Nzc253D

现在调用以用样本填充缓冲区:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzBiM2U1N2IucG5nJnZlcnNpb249MDAwMCZzaWc9YjRjNTJmMTIzZjNmODA4ZTljYmY2OTYzOTdjYTEwMzc253D

接下来,构造一个长度为 8 的 JavaScript 数组,并将此数组中每个元素的值设置为相应的 ADC 示例值:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzNjNjQ0MmUucG5nJnZlcnNpb249MDAwMCZzaWc9ZDgxZDU2OGVhMmZhZjdjYmRkM2NkNjcyY2FhYjgwYmM253D

然后,将数组设置为从 JavaScript 调用函数所显示的返回值。这比简单的语句稍微复杂一些,因为它从C++桥回JavaScript!

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzZiYjRhNmIucG5nJnZlcnNpb249MDAwMCZzaWc9MWY3OGZjNjBiYmM0Zjc5NWNkNzE2MDU0ZGViZDNkNzQ253D

除了函数之外,还必须定义一个函数(注意大写的“I”,这使得它与我们的函数不同)。此处的两个重要部分是 “” 和 。它们定义了为访问函数而调用的 JavaScript 端的模块元素的名称,以及C++端被调用的函数的名称:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2MzlkYzI2MTcucG5nJnZlcnNpb249MDAwMCZzaWc9NzFjYTQ1YzU3YzVmZWYxYzM3ZTVkNDEzMTAwZDQzNzM253D

现在,调用一个宏将函数与模块名称相关联:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NDFlNGFkNGEucG5nJnZlcnNpb249MDAwMCZzaWc9ZTFhYzcwOTc5OTA4MmE5Zjk4M2MzZTc2MmMyM2FjNmE253D

该文件提供了一个精简包装器,它通过调用 中定义的 addin 函数对 ADC 值进行采样,然后在连接套接字上输出这些值来响应对 ADC 值的请求。

此行的开头设置了绑定节点,我们的C++加载项:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NDk4MDM0MzQucG5nJnZlcnNpb249MDAwMCZzaWc9YWI0NzJkODY3OWVjNTEwYTZlYmVjOGMwMWE0NjQ5Nzg253D

具体来说,该模块返回一个函数,该函数使用二进制文件的相对路径调用。这将在构建过程中从C++源代码创建,并具有“.node”后缀。从调用返回的是引用加载项的 JavaScript 对象。由于附加组件定义了一个函数 ,因此此函数可作为返回对象的元素进行访问。调用此函数实质上是调用C++代码。

接下来是函数。它是一个标准的快速处理程序函数,每当客户端请求终结点时都会调用它。它记录条目,将响应的内容类型设置为 ,然后调用C++代码来检索 ADC 值。然后,它获取数组并将其转换为字符串,每行有一个数字:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NTE3Njc2MzYucG5nJnZlcnNpb249MDAwMCZzaWc9M2JlMzU2NzY1NjAyMTNhOWY2ZWIwOTA2Y2M0MDc1YzY253D

最后,设置为初始化函数,该函数检查用于更改终结点字符串的选项,并将终结点与函数关联:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5ZDI2NTc1NDEwOTgucG5nJnZlcnNpb249MDAwMCZzaWc9Yjg1ZDliMmFkYTg4ODVkOWRjMzIyMzJhNWE1YTI4MTU253D

该文件包含编译C++代码所需的信息。安装包时会自动调用生成过程。

在下一期也是最后一期中,我们将构建一个用户界面,该界面利用我们已经实现的服务,以便从Web浏览器控制开发板。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117746
  • adc
    adc
    +关注

    关注

    95

    文章

    5652

    浏览量

    539490
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72900
收藏 人收藏

    评论

    相关推荐

    介绍常用的几个寄存器

    一、简介SysTick:系统定时,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M3内核的单片机都具有这个定时。二、相应寄存器(这里介绍常用的几个
    发表于 08-19 09:24

    CS1238无法读取配置寄存器,无法设置配置寄存器

    这两天在调试CS1238芯片,工作电压3.3v。现在通过改变负载电压,可以看到ADC通道1的采集值有变化,但是无法读取配置寄存器一直为0.也无法写配置寄存器,实现切换通道和改变采样频率
    发表于 09-02 15:32

    求分享有关读取adc所需的裸机寄存器的文档

    你好!我想从中断中读取 adc。尝试使用 API,但函数未锁定到 IRAM 中。所以我正在寻找有关读取 adc 所需的裸机寄存器的文档。
    发表于 05-25 14:44

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

    寄存器,寄存器是什么意思 寄存器定义  寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用
    发表于 03-08 14:26 2.1w次阅读

    寄存器与移位寄存器

    寄存器与移位寄存器介绍寄存器原理和移位寄存器的原理及实现。
    发表于 05-20 11:47 0次下载

    主存和寄存器的区别介绍

    本文开始介绍了主存的概念和频率及主存的大小,其次介绍寄存器工作原理与寄存器用途,最后介绍了主存和寄存器
    发表于 04-11 14:27 2.2w次阅读

    寄存器由什么组成

    本文首先介绍寄存器的原理组成,其次介绍了ARM寄存器组成,最后介绍寄存器的用途。
    的头像 发表于 08-21 18:33 3.5w次阅读

    ATMEL SAMC21的ADC驱动寄存器操作和寄存器程序合集免费下载

    本文档的主要内容详细介绍的是ATMEL SAMC21的ADC驱动寄存器操作和寄存器程序合集免费下载。
    发表于 06-20 08:00 28次下载
    ATMEL SAMC21的<b class='flag-5'>ADC</b>驱动<b class='flag-5'>寄存器</b>操作和<b class='flag-5'>寄存器</b>程序合集免费下载

    技术 | FANUC数据寄存器和位置寄存器的运用介绍

    寄存器指令 Registers① 寄存器指令R[i] i=1~200② 位置寄存器指令PR[i] i=1~100③ 位置寄存器要素指令PR[i,j] i=1~100,j=1~6
    的头像 发表于 06-24 17:15 1.5w次阅读
    技术 | FANUC数据<b class='flag-5'>寄存器</b>和位置<b class='flag-5'>寄存器</b>的运用<b class='flag-5'>介绍</b>

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

    什么是寄存器提到单片机,就不得不提到寄存器。根据百度百科介绍寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来
    发表于 11-30 13:51 11次下载
    STM32<b class='flag-5'>寄存器</b>的简介、地址查找,与直接操作<b class='flag-5'>寄存器</b>

    MPU6050寄存器介绍

    MPU6050寄存器介绍电源管理寄存器1(0X6B)陀螺仪配置寄存器(0X1B)加速度传感器配置寄存器(0X1C)FIFO使能
    发表于 12-06 11:51 15次下载
    MPU6050<b class='flag-5'>寄存器</b><b class='flag-5'>介绍</b>

    STM32学习之DMA 直接寄存器读取

    关于STM32学习分享第六章 DMA 直接寄存器读取文章目录关于STM32学习分享前言二、代码1.dma_mtm.c2.dma_mtm.h3.main.c总结前言开始!开始!单片机的输出和输入来自于
    发表于 12-16 16:58 13次下载
    STM32学习之DMA 直接<b class='flag-5'>寄存器</b><b class='flag-5'>读取</b>

    labview读取三菱plc寄存器内容

    如何使用LabVIEW读取三菱PLC的寄存器内容,并提供一些实例代码和注意事项。 首先,我们需要了解PLC寄存器的基本概念。PLC寄存器是一种用于存储数据的内部变量,被用于传输和保存信
    的头像 发表于 12-27 16:31 732次阅读

    MC17XS6500高边驱动芯片寄存器介绍

    本文主要是对MC17XS6500高边驱动芯片寄存器进行的介绍,MC17XS6500寄存器分为输入寄存器和输出寄存器,对常用的几个输入和输出
    的头像 发表于 12-29 08:27 232次阅读
    MC17XS6500高边驱动芯片<b class='flag-5'>寄存器</b>的<b class='flag-5'>介绍</b>

    AFE模拟前端寄存器读取操作

    AFE模拟前端寄存器读取操作是电子系统设计和调试中不可或缺的一环。寄存器作为AFE模拟前端中的重要组成部分,存储着各种配置参数和状态信息,通过读取这些
    的头像 发表于 03-15 15:50 162次阅读