先楫半导体HPM 16 位ADC+ENET开发案例:以2MSPS进行采样,通过ENET LWIP TCP方式发送到上位机
1. 简介
HPM6000 系列 MCU 是来自上海先楫半导体科技有限公司的高性能实时 RISC-V 微控制器,为工业自动化及边缘计算应用提供了极大的算力、高效的控制能力。上海先楫半导体目前已经发布了如 HPM6700/6400、HPM6300、HPM6200 等多个系列的高性能微控制器产品。
在 HPM6700/6400、6300 系列微控制器上均支持 16 位 ADC 采样和百兆以太网外设。HPM6300 系列支持 3 个 16 位的 ADC 转换器,可以转换来自外部引脚以及芯片内部的模拟信号。ADC 的转换精度设置为 16 位时,最大采样率 2MSPS,ADC 的转换精度设置为 12 位时,最大采样率 4MSPS。ADC 支持读取转换模式、周期转换模式、序列转换模式和抢占转换模式。
本文以先楫半导体 HPM6300 开发板为例介绍以 2MSPS 采样率进行 16 位 ADC 采样并将采样数据通过 ENET LWIP TCP 的方式发送到上位机的应用,ADC 采样使用抢占转换模式、PWM 触发的方式,ENET LWIP TCP 每次发送 1024 个 16 位采样数据。
该方案通过 PWM 特定时刻触发 ADC 采样和触发 HDMA 转换 ADC 数据,并依靠 HDMA 链式模式,做成循环链表,考虑到中断响应占用 CPU 资源,在链式任务中增加状态标识,从而不启用中断,以此达到 ADC 采样及数据转换全自动完成,无需 CPU 参与,且 将转换后的数据放到 ILM/DLM,CPU 零等待访问。最终达到性能最优。
2. 整体方案
图 2-1 所示为 ADC16 采样和 LWIP TCP 传输应用的整体框架图。主要包括 ADC 采样 和 LWIP TCP 发送两个部分。
图 2-1 ADC16 采样和 LWIP TCP 传输整体框架
ADC16 的采样数据由于包含采样通道等信息,实际长度是 32 位。为了减少数据传输量 并且便于后续的应用,只取其中的 16 位有效数据进行传输。采用乒乓 buff 的方式存储 ADC16 的采样数据,adc buff 长度是 LWIP TCP 发送数据长度的 2 倍即 2048 个采样数 据。DMA 链式传输时,首先将 ADC16 数据存在前 1024 个数据,此时 adc_done[0]置 1,此时触发 LWIP TCP 发送前半部分数据并将 adc_done[0]置 0;DMA 转换的结果继续存储在 adc buff 的后 1024 个数据,当 adc buff 存满,adc_done[1]置 1,此时触发 LWIP TCP 发送后半部分数据并将 adc_done[1]置 0;循环此过程即可完成 ADC16 的 2MSPS 采样并通过 LWIP TCP 发送到上位机的功能。
图 2-2 CPU 任务与 DMA 任务并行运行
图 2-2 为 CPU 任务与 DMA 任务并行运行图,CPU 负责检查 adc_done 的状态以及 发送采样数据,DMA 进行链式任务的执行。ADC 的采样和数据转换及状态标识均自主完成, 无需 CPU 参与。adc buff 和 adc_done 均放在 fast RAM 中的 ILM/DLM 区,CPU 可零等待访问。
3. ADC16 采样功能
3.1 PWM 触发 ADC 采样及 DMA 链式传输
ADC16 的采样使用 2MSPS 的 PWM 进行触发。在 PWM 的计数器为 1 的时候触发采 样转换,在 PWM 的计数器为 reload - 2 时开始触发 DMA 数据转换,将 32 位采样数据 转换为 16 位。图 3-1 为 PWM 触发 ADC 采样及 DMA 传输的流程。
图 3-1 PWM 触发 ADC16 采样流程
3.2 DMA 链式传输
HPM6000 系列的 DMA 支持链式连接多个任务,该方案利用这一特点,将 ADC 数据转换和状态标识分为四个子任务,并做成循环链表,DMA 自动循环完成各个任务。这种方案不使用 CPU 的中断,降低 CPU 的负荷。DMA 采样硬件握手的方式,在 PWM 的计数器为 reload-2 时刻触发硬件握手,此时将 32 位采样数据转成 16 位。
四个任务分别为 ADC16 采样数据存放至 adc buff 前 1024 个位置、adc_done[0]置 1、 ADC16 采样数据存放至 adc buff 后 1024 个位置、adc_done[1]置 1。各任务通过 adc_descriptors1 数组连接起来,顺序循环执行。
图 3-2 DMA 链式执行任务
由于采样数据包含了一些采样通道等信息,ADC16 采样数据实际是 32bit 的。为了减少 传输的数据量,在 ADC16 采样数据存放至 adc buff 的任务中,DMA 中取数据时只取采样 数据的低 16bit 存放至 adc buff。这个功能可以通过配置 DMA 源地址和目的地址的数据 宽度为 16bit 来实现。
将标志位 adc_done 置 1 的任务目的是通知以太网发送任务当前的 buff 可以发送出 去,执行以太网发送任务时,会将对应的 adc_done置 0。
4. LWIP TCP 发送功能
ADC16 的采样数据每达到 1024 个则通过 LWIP TCP 发送到上位机,以太网发送采用 polling 的方式,在发送任务中轮询查询 adc_done 的状态,根据 adc_done 的值确定下 一步执行的任务。ADC 采样数据是 16bit 的,2MSPS 的采样率,发送数据需要以太网的速 率达4MBytes/s。使用百兆以太网进行传输 ADC 采样数据。
图 4-1 LWIP TCP 发送 ADC 数据流程
图 4-1 是通过 LWIP TCP 发送 ADC 数据的流程图,tcp_poll_handle 中函数轮询 adc_done 的状态,adc_done 的值为 1 则表示 ADC 数据已经更新,此时可以发送, adc_done 的值为 0 表示数据不需要发送。如果 adc_done[0]、adc_done[1]同时为 1,则表示以太网速率不够,有未发送的数据,此时会通过串口打印错误。
根据 adc_done[0]、adc_done[1]的状态确定发送 adc buff 的前 1024 个数据还是后 1024 个数据,在执行发送任务前将对应的 adc_done标志位置0。
5. 测试验证
将上文实现的 ADC16 采样通过 LWIP TCP 的方式发送到上位机的方案在 HPM6300EVK 上进行验证。
a.验证 ADC 采样数据的准确性,本例使用 ADC 的输入为 0V 以及 3.3V 进行测试验证。 验证结果如图 5-1 和图 5-2所示。
图 5-1 ADC 输入为 0V时的采样数据
图 5-2 ADC 输入为 3.3V 时的采样数据
实测在 ADC 的输入为 0V 和 3.3V 时采样结果正确。
b.验证以太网与 ADC 同时运行时数据发送的是否正确,验证方法:将原本以太网要发 送的 adc buff 替换成发送测试 buff 的内容,测试 buff 中的数据是固定的,测试 buff 中 的值与数组下标下同,即 buff[0]为 0,buff[1]的值为 1,以此类推。让以太网发送固定的 数据,从上位机接收的数据查看数据是否完整、正确。当 adc_done[0]置 1 时,发送 0~1023 共 1024 个数据;当 adc_done[1]置 1 时,发送 1024~2047(0x7ff)共 1024 个 数据;同时对串口信息和网络传输速率进行监测。经过 20 个小时左右的测试验证,从串口 看没有出现以太网发送错误的信息。
图 5-3 为以太网传输速率监测信息,可以看出以太网传输速率比较稳定,在 33Mbps 附近,与理论计算值 32Mbps相符合。
图 5-3 以太网传输速率检测
图 5-4 为上位机接收数据监测的信息,通过对接收的数据分析,可以发现收的数据与发送的固定数据一致,没有丢数据的现象。
图 5-4 上位机接收数据监测
图 5-5 为串口日志监测信息,当出现网络无法及时传输数据时,会打印 adc dual buff full up!的信息。从串口日志信息看,在以太网初始化完成并连接成功后,没有出现 adc dual buff full up!的信息,表明以太网能够将 ADC 的数据及时传输至上位机,没有数据丢失情况。
图 5-5 串口日志监测
6. 总结
本文主要介绍了 2MSPS 速率的 ADC16 采样并通过 LWIP TCP 的方式发送至上位机的方案。ADC16 采样使用 PWM 触发的方式,采样结果在 DMA 链式传输任务中进行读取。 在先楫半导体的HPM6300EVK 上进行测试验证,验证结果表明该方案是可行的。
该方案的优点主要体现在以下几个方面:
将 32bit 的 ADC16 数据转成 16bit,减小了传输的数据量;
使用 DMA 链式传输,自动完成 ADC 采样和 32 为到 16 位的转换过程,不需要 CPU 参与;
没有使用中断,降低 CPU 的负荷;
ADC 采样数据保存在 ILM/DLM 中,CPU 零等待访问;
以太网实际的传输速率是4 MBytes/s,运行稳定,留有较大的裕度。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由上山打老虎转载自先楫半导体 微信公众号,原文标题为:HPM 16 位 ADC+ENET 开发案例,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
先楫半导体HPM APPS v1.7.0上线啦!
先楫半导体发布了HPM APPS v1.7.0,包含多项更新和新功能,如HPM双网口环网通信方案、Ethercat主站应用方案、I2S DMA CHAIN应用方案、hpm_monitor服务、SPI控制器操作Nor flash应用案例等。这些更新旨在提升微控制器性能,简化开发过程,并加速程序开发。
先楫半导体(HPMicro)HPM APPS v1.6.0上线啦!
HPM APPS是基于HPM SDK开发的上层应用软件开发套件。提供各种典型通用的应用解决方案,包含了中间件、组件、服务等,供用户使用评估。HPM APPS需搭配HPM SDK使用,且HPM APPS和HPM SDK版本一一对应。在参考方案时,建议先查阅文档开始。
【经验】先楫HPM6000系列双核MCU的使用和操作方法
本文通过对先楫半导体HPM6000系列双核MCU的使用方法、工程编译与调试、双核通信方式和资源分配等内容的介绍,全方位给大家介绍双核的使用和操作,让大家轻松玩转双核,完成更多的片上系统功能开发。
国产高性能MCU又一力作,集成授权EtherCAT,助力工业伺服走向海内外
最近,先楫半导体发布中国首款拥有德国倍福公司正式授权EterhCAT从站控制器的高性能MCU产品HPM6E00系列,将国产高性能MCU在工业领域的应用推向新高度。
AI加速边缘计算,聚焦AIOT芯片,NPU SOC,离线语音MCU,高算力智能模组等
世强硬创联合地平线,阿普奇,启英泰伦,美格智能,普林芯驰,唯创知音,九芯电子,芯闻,VINKO,MERRY带来AI新产品,聚焦AIOT芯片,NPU SOC,离线语音MCU,高算力智能模组等,加速边缘计算。
先楫半导体hpm_sdk v1.6.0全新上线!新增HPM6E80产品支持
先楫半导体hpm_sdk v1.6.0上线!新增HPM6E80产品支持。HPM6E00系列MCU是一款高性能、高实时以太互联,RISC-V双核微控制器。HPM6E00系列提供多达4端口千兆以太交换模块,支持TSN,并且支持3端口EtherCAT从站控制器,以及32路高分辨率PWM输出,高精度运动控制系统,可以在工业自动化领域实现基于高实时性,低延时以太网的高性能伺服电机控制,机器人运动控制等应用。
打造高效自动化的利器,先楫HPM6200系列高性能MCU芯片携手钧舵机器人推出精密装配方案
末端执行器作为整个自动化领域的核心所在,承载着精准抓取、稳定操作以及高效执行各种任务的重要职责。苏州钧舵机器人有限公司推出的搭载先楫半导体HPM6200系列高性能MCU芯片的LRA系列直线旋转执行器(ZR轴)凭借其精确力控补偿、软着陆算法、恒力磁性弹簧技术以及高精度光编技术等多项创新技术,为半导体封测、芯片贴装、3C精密装配等行业提供强大支持。
解码工业自动化:匠芯创M6800系列MCU编码器接口协议全解析
在工业自动化的浪潮中,编码器以其精确的位置和速度反馈是实现精密控制的基础。随着技术的发展,编码器与控制系统之间的通信协议变得尤为关键。本文匠芯创将聚焦于多摩川、BISS和Endat等主流协议,以M6800系列芯片为例,分析它们如何满足不同工业场景的需求,以及如何推动自动化技术的进步。
【经验】先楫半导体HPM6700/6400/6300 MCU产品系列串口接收不定长数据的方式
先楫半导体官方发布新的hpm_sdk版本,这个硬件的空闲中断仅适用于HPM6200系列产品,而HPM6750/6400/6300系列的MCU只能使用uart_software_rx_idle 通过软件利用额外的定时器实现空闲中断机制。
伺服电机、无刷电机选型要素解析,高性能RISC-V电机驱动芯片、方案介绍
作为国内领先的高性能MCU研发企业,先楫半导体芯片产品可应用于工业自动化中的编码器和伺服驱动器领域,先楫HPM6000系列采用全新的RISC-V芯片系统架构定义、全新CPU内核、大量自主创新的IP设计,以及完整的配套生态,打造出高性能的国产MCU系列,客户可以在不必增加成本和功耗的前提下,满足更高效的工业控制,更丰富的显示功能和更强大的数据处理要求。
HPM6700/6400 系列高性能微控制器勘误表
型号- HPM6450IVMX,HPM6400 系列,HPM6730IVMX,HPM64G0CAN2,HPM6754IANX,HPM6454IANX,HPM6750IANX,HPM6700 系列,HPM6430IANX,HPM64G0CVM2,HPM6750IVMX,HPM6430IVMX,HPM6454IVMX,HPM6450IANX,HPM6400,HPM6750IVM2,HPM6730IANX,HPM6700,HPM6754IVMX
【视频】先楫半导体超高性能MCU,单双核RISC-V,主频高达1GHZ,支持图形加速、DSP、双千兆以太网
型号- HPM6300,HPM6400,HPM5300,HPM6200,HPM6700,HPM6800
HPM6700/6400 系列开创国产高性能 MCU 新时代
型号- HPM6400 系列,HPM64A0A,HPM64G0,HPM64A0,HPM6400,HPM6700 系列,HPM6700,HPM6750EVKMINI,HPM6750EVK2
电子商城
现货市场
服务
可定制天线工作频段400MHz~77GHz,工作温度-40~+85℃、连接头/电缆类型等性能参数;支持GPS天线、组合天线、低频天线、定位精密测量天线、WIFI天线、5G天线、4G天线等产品定制。
提交需求>
可定制电感可承受4.5KV高压,可适配于30MHz高频应用;支持平共模电感、谐振电感、PFC电感、大电流直流电感等产品电压/频率等参数性能定制;通过AECQ-200认证。
最小起订量: 100000 提交需求>
登录 | 立即注册
提交评论