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

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

3天内不再提示

【Z站推荐】基于 EsDA MPC-ZC1 快速实现 I2C采集监测

ZLG致远电子 2022-10-18 10:11 次阅读

EsDA开发平台为产品上线提供动力。本文将基于EsDA开发平台,通过拖拽、连线方式,10分钟快速搭建一个I2C数据采集监测业务,为客户产品开发、部署、上线缩短周期。

32bcc244-4cc9-11ed-b116-dac502259ad0.jpg  简介

I2C 是一种串行通信总线,只需SCK、SDA两根双向I/O线即可在连接到总线上的设备之间传送信息。因其所需引脚少,可扩展性强,数据传输速率快等,所以现被广泛使用于IC间的通讯。在各种嵌入式应用场景中,使用I2C总线通信的传感器也有很多。比如 eeprom、温湿度传感器、流量传感器、压力传感器等。

EsDA 平台在使用I2C总线通信时只需要通过拖拽节点、连线绘制流图,即可实现从I2C从机读取数据,大大的简化了开发流程,缩短了项目开发周期,为客户产品抢占市场提供先机。

本文基于EsDA开发平台,MPC_ZC1作为I2C主机设备,定时从TPS02RAH从机设备中去读取温度寄存器的值,并将采集到的温度值上传到ZWS云端,实现温度实时监控功能,该实验主要用了到timer、fscript、i2c_master_read、log和zws节点,具体实现请见下文。


32c620dc-4cc9-11ed-b116-dac502259ad0.jpg I2C相关节点介绍

I2C外设共有3个几点,分别是i2c_master、i2c_master_read和i2c_master_write节点。i2c_master节点主要用来配置I2C的设备名称以及设备参数,i2c_master_read节点主要用于读取从机设备的数据,i2c_master_write节点主要用于向从机设备写入数据。

1. i2c_master_write节点

I2C主机向从机设备写数据,可配置从机相关的设备信息和通信参数。

1.1 属性

32d017b8-4cc9-11ed-b116-dac502259ad0.png

  • 名称(name):节点名称,用于索引查找本节点;
  • 显示名称(displayName):用于画布上显示的名称;
  • 主机配置(i2c master config):绑定一个I2C主机的配置节点;
  • 从机地址(Slave address):从机设备的地址;
  • 地址位数(address bits):从机的地址位数,由于7位寻址和10位寻址是兼容的所以可以在同一个I2C总线上同时使用7位和10位两种不同模式的设备,可配为7位(7 bits);10位(10 bits);
  • 是否忽略从机应答(whether to ignore the slave ack signal):可配:忽略从机应答(ignore);不忽略从机应答(do not ignore);
  • 从机设备寄存器地址位宽(SubAddressBitWidth):可配:do not set sub-address表示不设置从机的寄存器地址宽度;1 bytes sub-address表示从机具有1字节(8位)的寄存器地址宽度;2 bytes sub-address表示从机具有2字节(16位)的寄存器地址宽度;4 bytes sub-address表示从机具有4字节(32位)的寄存器地址宽度;
  • 从机设备寄存器地址(SubAddress):从机设备子地址(寄存器地址)。注意从机设备寄存器地址位宽为0则不能设置从机子地址。

1.2输入

payload :输入数据流,存放需要写入的数据。此节点接收如下类型的数据:binary type(二进制类型); wbuffer object type(指针类型); string type(字符串类型);

payloadLength :需要写入的数据长度,单位字节;

  • subAddress :从机设备子地址(寄存器地址)。注意从机设备寄存器地址位宽为0则不能设置从机子地址。

1.3输出

sink类型节点一般并不具备数据输出。

2.i2c_master_read节点

I2C主机向从机设备中读数据:对从机的设备地址等进行输入/配置,最后将从机中读取到数据和长度等信息进行输出。

2.1 属性

32f81204-4cc9-11ed-b116-dac502259ad0.png

名称(name):节点名称,用于索引查找本节点;

显示名称(displayName):用于画布上显示的名称;

主机配置(i2c master config):绑定一个I2C主机的配置节点;

从机地址(Slave address):从机设备的地址;

地址位数(address bits):从机的地址位数,可配为7位(7 bits);10位(10 bits);

是否忽略从机应答(whether to ignore the slave ack signal):可配:忽略从机应答(ignore);不忽略从机应答(do not ignore);

是否发送应答(whether send nak):当主机读取数据时主机是否发送给从机的应答ACK信号; do not send表示不发送主机ACK信号; send表示发送主机的ACK信号;

从机设备寄存器地址位宽(SubAddressBitWidth):可配:do not set sub-address表示不设置从机的寄存器地址宽度;1 bytes sub-address表示从机具有1字节(8位)的寄存器地址宽度;2 bytes sub-address表示从机具有2字节(16位)的寄存器地址宽度;4 bytes sub-address表示从机具有4字节(32位)的寄存器地址宽度;

从机设备寄存器地址(SubAddress):从机设备子地址(寄存器地址)。注意从机设备寄存器地址位宽为0则不能设置从机子地址。

2.2输入

Length :读的数据长度,单位字节;

subAddress :从机设备子地址(寄存器地址)。注意从机设备寄存器地址位宽为0则不能设置从机子地址;

2.3输出

payload :读缓冲区,用于存放接受读取到的数据,类型pointer.如果下一个节点为fscript,则可以使用rbuffer读取数据;

payloadLength :读的数据长度,单位字节;

  • subAddress :从机设备子地址(寄存器地址)。注意从机设备寄存器地址位宽为0则没有从机子地址。

3.i2c_master配置节点

I2C主机的通用配置。

3.1 属性

330028cc-4cc9-11ed-b116-dac502259ad0.png

名称(name):节点名称,用于索引查找本节点,在某些aw_flow_designer的版本被隐藏起来了,只能通过点击i2c_master_read和i2c_master_write这两个节点主机配置去显现;

显示名称(displayName):用于画布上显示的名称;

设备名(Devname):I2C主机设备路径名;

时钟频率(clock frequency):I2C设备的SCK时钟频率。

3.2输入

config配置节点一般不具备数据输入。

3.3输出

config配置节点一般不具备数据输出。


32c620dc-4cc9-11ed-b116-dac502259ad0.jpg 业务开发

1. 采集PT100的实时温度

MPC_ZC1作为I2C主机设备,定时从TPS02RAH从机设备中去读取温度寄存器的值,并将采集到的温度值上传到ZWS云端,实现温度实时监控。

该实验主要用到timer、fscript、i2c_master_read、log和zws节点:

  • timer:timer节点用于定时触发采集PT100的温度;
  • i2c_master_read:i2c_master_read节点主要用于从从机设备读取数据;
  • fscript:fscript节点主要用于对TPS02RAH从机设备读取的数据进行转换处理
  • 和对i2c_master_read节点进行输入配置(配置要读取的字节长度);
  • log:log对采集到的温度值进行打印显示;
  • zws:zws节点将fscript节点输出温度值上报到zws云端。

1.1添加节点并连线周期性的去读取I2C从机TPS02RAH设备温度寄存器的值,将timer,fscript,i2c_master_read,log节点添加到画布中,并连线绘图。330c520a-4cc9-11ed-b116-dac502259ad0.png1.2 配置节点双击timer节点,打开属性面板设置定时周期(ms),周期性的去读取TPS02的温度值。双击i2c_master_read的输入节点fscript,并查看TPS02RAH温度传感器的数据手册。得知TPS02RAH温度寄存器的值有6个字节,且数据传输顺序:先传输高字节后传输低字节,可知前3个字节存储通道1的温度测试结果,后3个字节存储通道2的温度测试结果。所以i2c_master_read节点的输入:fscript需读取两个通道6个字节的数据。其他的参数可在i2c_master_read节点的属性中配置。33171dca-4cc9-11ed-b116-dac502259ad0.png双击i2c_master_read节点,打开属性面板根据TPS02RAH的数据手册设置如下图所示,并点击I2C主机配置的铅笔图标去设置I2C主机设备路径名和时钟频率。331fd564-4cc9-11ed-b116-dac502259ad0.png双击i2c_master_read的输出消费者节点fscript,将读取到温度寄存器的两个通道温度根据下面的温度转换公式将温度输出并打印到log中。TPS02ARH的温度转换公式:两通道六字节数据,前三位字节数据对应通道 1,后三位字节数据对应通道 2,操作方法一样,取通道一数据分析如下:3329dadc-4cc9-11ed-b116-dac502259ad0.png当 value≥223 时,即当前测量温度为负温度值:3334735c-4cc9-11ed-b116-dac502259ad0.png

当 value<223时, 即当前测量温度为正温度值:

333dc0a6-4cc9-11ed-b116-dac502259ad0.png

i2c_master_read的输出消费者节点fscript的内容如下:

//将读取的6个uint8_t类型的数据打印
rb = rbuffer_create(msg.payload, msg.payloadLength)

temperature1 = 0 //通道1的温度
temperature2 = 0 //通道2的温度
for (var i = 0; i < msg.payloadLength; i = i+1) {
    d = rbuffer_read_uint8(rb);
    if(i > 2){
        temperature2 = temperature2 + (u32(d)<<(8*(5-i)));
    }
     temperature1 = temperature1 + (u32(d)<<(8*(2-i)));
}
if (temperature1 < 8388608) {//temperature<2^23正温度
    msg.temperature1 = temperature1/8192
} else {//负温度
    msg.temperature1 = -(16777216 - temperature1)/8192
}
if (temperature2 < 8388608) {
    msg.temperature2 = temperature2/8192
} else {//负温度
    msg.temperature2 = -(16777216 - temperature2)/8192
}
msg.payload = join(",","channel 1:",msg.temperature1,"channel 2:",msg.temperature2)

print(msg.payload)

1.3下载验证

选择流图下载接口,并点击运行按钮。

33507912-4cc9-11ed-b116-dac502259ad0.png

完成流图下载,根据实物连线可知PT100连接的是通道1,随着手捂探头,可以看到channel 1(通道1)的温度从27.67上升到30.23,因为channel 2(通道2)没有接PT100的探头所以数值保持850不变。

33597666-4cc9-11ed-b116-dac502259ad0.jpg

3380777a-4cc9-11ed-b116-dac502259ad0.png

3386712a-4cc9-11ed-b116-dac502259ad0.png

1.4接入zws云端

登录:https://www.zlgcloud.com/按照EsDA MPC-ZC1应用:IoT监测控制系统(一)这篇文章中接入云端方法的介绍,在ZWS云端上为MPC-ZC1添加新的数据点,如下图所示:添加通道1 的温度显示:

338b4aba-4cc9-11ed-b116-dac502259ad0.png

添加通道2 的温度显示:

33b1bc4a-4cc9-11ed-b116-dac502259ad0.png

在AW_FLOW Designer画布中添加zws_iot_data_out节点并连线。

33b97dcc-4cc9-11ed-b116-dac502259ad0.png

输入对应的三元组信息并选择正确的数据上报方式和目标键值对。

33bef86a-4cc9-11ed-b116-dac502259ad0.png

下载流图并观察云端设备列表的实时数据如下图所示。

33c83c36-4cc9-11ed-b116-dac502259ad0.png

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

    关注

    2

    文章

    3025

    浏览量

    43860
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1343

    浏览量

    120729
收藏 人收藏

    评论

    相关推荐

    如何为TC334LP32F200FAAKXUMA1实现I2C

    嗨, 我正在使用 TC334LP32F200FAAKXUMA1 微控制器。 如何为该控制器实现 I2C? 由于没有物理 I2C 硬件,我们能否实现
    发表于 03-04 07:03

    如何使用I2C Reg模式发送1个从地址和8字节命令并回读信息?

    大家好 作为标题,我需要向ADC设备发送1字节的从属地址和8字节的命令(总共9字节)。 然后从从地址回读 + 1 但是,i2c 前导缓冲区总共只有 8 个字节。 我怎么 CAN ?
    发表于 02-23 07:54

    ADE7880使用I2C读取数据,怎么设置I2C快速模式?

    ADE7880使用I2C读取数据问题,怎么设置I2C快速模式,谢谢。
    发表于 12-26 07:41

    EsDA 应用】快速实现串口转HTTP请求

    本文将基于EsDA开发套件快速实现将串口数据转换为HTTP请求的应用开发,实现串口设备与网络服务的互联互通,提供便捷和高效的串口数据转换功能。项目简介HTTP协议是互联网应用最为广泛的
    的头像 发表于 11-09 08:25 473次阅读
    【<b class='flag-5'>EsDA</b> 应用】<b class='flag-5'>快速</b><b class='flag-5'>实现</b>串口转HTTP请求

    基于EsDA MPC-ZC1 快速实现I2C 监控报警

    实验,PT100温度传感器的温度采集和读取显示不在本文赘述,具体详细的操作步骤可在《EsDAMPC-ZC1快速实现I2C
    的头像 发表于 08-23 15:16 400次阅读
    基于<b class='flag-5'>EsDA</b> <b class='flag-5'>MPC-ZC1</b> <b class='flag-5'>快速</b><b class='flag-5'>实现</b><b class='flag-5'>I2C</b> 监控报警

    EsDA应用】10分钟快速实现人脸识别

    人脸识别是一种高安全性的生物识别技术,在安防、身份验证等领域被广泛应用。本文主要介绍如何基于EsDA设计的人脸特征值提取节点和特征值比对节点,快速实现人脸识别功能。简介人脸识别是一种高安
    的头像 发表于 06-08 15:01 301次阅读
    【<b class='flag-5'>EsDA</b>应用】10分钟<b class='flag-5'>快速</b><b class='flag-5'>实现</b>人脸识别

    【产品应用】基于 EsDA MPC-ZC1 快速实现 I2C采集监测

    EsDA开发平台为产品上线提供动力。本文将基于EsDA开发平台,通过拖拽、连线方式,10分钟快速搭建一个I2C数据采集
    的头像 发表于 06-08 10:13 317次阅读
    【产品应用】基于 <b class='flag-5'>EsDA</b> <b class='flag-5'>MPC-ZC1</b> <b class='flag-5'>快速</b><b class='flag-5'>实现</b> <b class='flag-5'>I2C</b><b class='flag-5'>采集</b><b class='flag-5'>监测</b>

    EsDA应用】10分钟快速实现人脸识别

    人脸识别是一种高安全性的生物识别技术,在安防、身份验证等领域被广泛应用。本文主要介绍如何基于EsDA设计的人脸特征值提取节点和特征值比对节点,快速实现人脸识别功能。    简介 人脸识别是一种高安
    的头像 发表于 06-03 01:30 525次阅读
    【<b class='flag-5'>EsDA</b>应用】10分钟<b class='flag-5'>快速</b><b class='flag-5'>实现</b>人脸识别

    【产品应用】基于 EsDA MPC-ZC1 快速实现 I2C采集监测

    EsDA开发平台为产品上线提供动力。本文将基于EsDA开发平台,通过拖拽、连线方式,10分钟快速搭建一个I2C数据采集
    的头像 发表于 05-31 18:05 285次阅读
    【产品应用】基于 <b class='flag-5'>EsDA</b> <b class='flag-5'>MPC-ZC1</b> <b class='flag-5'>快速</b><b class='flag-5'>实现</b> <b class='flag-5'>I2C</b><b class='flag-5'>采集</b><b class='flag-5'>监测</b>

    EsDA应用】蓝牙服务端节点详解

    蓝牙作为一种近距离无线通信技术,被广泛使用在汽车,智能家居和医疗等领域中。本文主要介绍如何通过EsDA开发套件,快速实现蓝牙服务器的相关应用业务。简介前面文章讲解了ble_client的相关
    的头像 发表于 05-31 09:46 499次阅读
    【<b class='flag-5'>EsDA</b>应用】蓝牙服务端节点详解

    EsDA应用】蓝牙服务端节点详解

    蓝牙作为一种近距离无线通信技术,被广泛使用在汽车,智能家居和医疗等领域中。本文主要介绍如何通过EsDA开发套件,快速实现蓝牙服务器的相关应用业务。    简介 前面文章讲解了ble_client
    的头像 发表于 05-25 00:10 382次阅读
    【<b class='flag-5'>EsDA</b>应用】蓝牙服务端节点详解

    EsDA应用】5分钟快速实现图像人脸检测

    全性的生物识别技术,在安防、身份验证等领域被广泛应用。本文在【EsDA应用】5分钟快速实现摄像头图像采集的基础上,使用M6G2C核心板,简单介绍如何基于
    的头像 发表于 05-18 10:48 396次阅读
    【<b class='flag-5'>EsDA</b>应用】5分钟<b class='flag-5'>快速</b><b class='flag-5'>实现</b>图像人脸检测

    EsDA应用】5分钟快速实现图像人脸检测

    是一种高安全性的生物识别技术,在安防、身份验证等领域被广泛应用。 本文在 【EsDA应用】5分钟快速实现摄像头图像采集 的基础上, 使用M6G2C核心板,简单介绍如何基于
    的头像 发表于 05-17 12:20 371次阅读
    【<b class='flag-5'>EsDA</b>应用】5分钟<b class='flag-5'>快速</b><b class='flag-5'>实现</b>图像人脸检测

    EsDA应用】如何5分钟快速实现指纹采集与检测

    如今,指纹信息的采集已成为产品安全系统中验证身份的重要手段之一。本文主要介绍如何通过EsDA开发套件,快速实现指纹信息的采集与验证。   
    的头像 发表于 05-11 20:16 840次阅读
    【<b class='flag-5'>EsDA</b>应用】如何5分钟<b class='flag-5'>快速</b><b class='flag-5'>实现</b>指纹<b class='flag-5'>采集</b>与检测

    EsDA应用】如何5分钟快速实现指纹采集与检测

    如今,指纹信息的采集已成为产品安全系统中验证身份的重要手段之一。本文主要介绍如何通过EsDA开发套件,快速实现指纹信息的采集与验证。简介指纹
    的头像 发表于 05-08 09:54 463次阅读
    【<b class='flag-5'>EsDA</b>应用】如何5分钟<b class='flag-5'>快速</b><b class='flag-5'>实现</b>指纹<b class='flag-5'>采集</b>与检测