先楫半导体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 开发案例,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
【经验】先楫HPM6000系列双核MCU的使用和操作方法
本文通过对先楫半导体HPM6000系列双核MCU的使用方法、工程编译与调试、双核通信方式和资源分配等内容的介绍,全方位给大家介绍双核的使用和操作,让大家轻松玩转双核,完成更多的片上系统功能开发。
先楫半导体HPM APPS v1.7.0上线啦!
先楫半导体发布了HPM APPS v1.7.0,包含多项更新和新功能,如HPM双网口环网通信方案、Ethercat主站应用方案、I2S DMA CHAIN应用方案、hpm_monitor服务、SPI控制器操作Nor flash应用案例等。这些更新旨在提升微控制器性能,简化开发过程,并加速程序开发。
【经验】先楫半导体HPM6700/6400/6300 MCU产品系列串口接收不定长数据的方式
先楫半导体官方发布新的hpm_sdk版本,这个硬件的空闲中断仅适用于HPM6200系列产品,而HPM6750/6400/6300系列的MCU只能使用uart_software_rx_idle 通过软件利用额外的定时器实现空闲中断机制。
国产高性能MCU又一力作,集成授权EtherCAT,助力工业伺服走向海内外
最近,先楫半导体发布中国首款拥有德国倍福公司正式授权EterhCAT从站控制器的高性能MCU产品HPM6E00系列,将国产高性能MCU在工业领域的应用推向新高度。
雅特力(Artery)AT32全系列32位微控制器(MCU)选型指南(中文)
目录- 公司简介 AT32家族MCU 低功耗MCU 超值型MCU 主流型MCU 车载型MCU 高性能型MCU 无线蓝牙型MCU 开发工具 应用方案
型号- AT32F413CCU7,AT32F437ZCT7,AT32A403ACGU7,AT32F405CCU7,AT32L021K6U7-4,AT32F421K6T7,AT32F437VMT7,AT32F425R8T7,AT32F437RGT7,AT32F423VBT7,AT32F423RBT7-7,AT32A403A 系列,AT32A403ACGT7,AT32A423RBT7-7,AT32A423CCU7,AT32F413CBT7,AT32F435CMT7,AT32F403ARCT7,AT32L021C4T7,AT32F435RCT7,AT32F435ZGT7,AT32F405CCT7,AT32F403ACET7,AT32F405 系列,AT32A423R8T7,AT32L021K8T7,AT32 WB SERIES,AT32A423CBT7,AT32L021F8P7,AT32F435CMU7,AT32F437VDT7,AT32F415KBU7-4,AT32F413CBU7,AT32F402CBT7,AT32F405KCU7-4,AT32F407RCT7,AT32L021G4U7,AT32F403ACGU7,AT32F425K8U7-4,AT32F402KBU7-4,AT32F425R8T7-7,AT32F415RCT7,AT32F423VCT7,AT32F402CBU7,AT32F423T8U7,AT32F425K6T7,AT32F435CDT7,AT32F405RBT7,AT32A403ARCT7,AT32F421K6U7,AT32F421G8U7,AT32F415RBT7-7,AT32F421F4P7,AT32A423CCT7,AT32 F SERIES,AT32WB415系列,AT32F413KCU7-4,AT32F425F6P7,AT32F423C8T7,AT32A403ACEU7,AT32F437VGT7,AT32F437ZMT7,AT32F423RCT7-7,AT32A423TBU7,AT32A423C8T7,AT32F421K8T7,AT32F435 系列,AT32F413C8T7,AT32F415RBT7,AT32F403ARET7,AT32F435CGT7,AT32A423K8U7-4,AT32A403ACET7,AT32F435VCT7,AT32A423C8U7,AT32F403ACGT7,AT32F421C4T7,AT32L021K6T7,AT32A423R8T7-7,AT32F403AVCT7,AT32L021F6P7,AT32F437ZDT7,AT32F415RCT7-7,AT32F435CGU7,AT32F415CCT7,AT32F405KBU7-4,AT32F407VCT7,AT32F405CBU7,AT32F415KCU7-4,AT32A423TCU7,AT32F407RET7,AT32 A,AT32A423CBU7,AT32F435RMT7,AT32L021K8U7,AT32L021,AT32 F,AT32 L,AT32A423KBU7-4,AT32F423C8U7,AT32F423 系列,AT32F435RDT7,AT32L021F8U7,AT32F425K8T7,AT32F405CBT7,AT32A403AVCT7,AT32F421K8U7,AT32A403ARET7,AT32F423TBU7,AT32F421K6U7-4,AT32F421F6P7,AT32F403A,AT32 L SERIES,AT32A403ACCU7,AT32F415CBT7,AT32F415R8T7,AT32F425F8P7,AT32A403A,AT32F437ZGT7,AT32F423R8T7,AT32F425C6U7,AT32A423T8U7,AT32F421K4U7-4,AT32A,AT32F437RCT7,AT32F423CCU7,AT32F402 系列,AT32F425 系列,AT32F402RCT7,AT32L021C8T7,AT32F403ARGT7,AT32WB415CCU7-7,AT32F415CCU7,AT32A403ACCT7,AT32F403AVET7,AT32F435RGT7,AT32F435VMT7,AT32F421C6T7,AT32A423VBT7,AT32L021K4U7-4,AT32L021K4T7,AT32F423TCU7,AT32F405RBT7-7,AT32F413KBU7-4,AT32F435ZCT7,AT32 A SERIES,AT32F423CCT7,AT32WB415,AT32L021F4P7,AT32L021G8U7,AT32F407VET7,AT32F407RGT7,AT32F403ACCU7,AT32L021K6U7,AT32F423CBU7,AT32F403A 系列,AT32A423RCT7-7,AT32F435VDT7,AT32F415CBU7,AT32L021K8U7-4,AT32A423VCT7,AT32L021F6U7,AT32A403AVET7,AT32 WB,AT32F413 系列,AT32F425K6U7-4,AT32F425C6T7,AT32F421G4U7,AT32F407 系列,AT32A403ARGT7,AT32A423KCU7-4,AT32F421F8P7,AT32F423CBT7,AT32F413RCT7,AT32F425R6T7-7,AT32F413,AT32F423V8T7,AT32F415,AT32家族,AT32F437VCT7,AT32F423KCU7-4,AT32F402CCT7,AT32F421K4T7,AT32F435CDU7,AT32F425C8U7,AT32F425R6T7,AT32F423RBT7,AT32A423 系列,AT32F423K8U7-4,AT32F421,AT32F402,AT32F421 系列,AT32F435VGT7,AT32F405,AT32A423RBT7,AT32L021C6T7,AT32F407,AT32F402CCU7,AT32F421C8T7,AT32F435CCT7,AT32F415 系列,AT32F403AVGT7,AT32F405RCT7,AT32F423R8T7-7,AT32F403ACCT7,AT32F435ZMT7,AT32A423V8T7,AT32F413RBT7,AT32F405RCT7-7,AT32F415C8T7,AT32F402RBT7-7,AT32F435,AT32F437,AT32F407VGT7,AT32F435CCU7,AT32L021G6U7,AT32,AT32F402RCT7-7,AT32F403ACEU7,AT32F415K8U7-4,AT32L021K4U7,AT32F415R8T7-7,AT32F437RDT7,AT32F423RCT7,AT32F437 系列,AT32F402KCU7-4,AT32F402RBT7,AT32F423,AT32F425,AT32F413CCT7,AT32A423RCT7,AT32F421K4U7,AT32F421K8U7-4,AT32L021F4U7,AT32F425C8T7,AT32F437RMT7,AT32A403AVGT7,AT32F421G6U7,AT32L021 系列,AT32F423KBU7-4,AT32F435ZDT7,AT32A423
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输出,高精度运动控制系统,可以在工业自动化领域实现基于高实时性,低延时以太网的高性能伺服电机控制,机器人运动控制等应用。
先楫半导体(HPMicro)HPM6000家族MCU选型指南
目录- HPM6000家族MCU
型号- HPM6320IEP,HPM6454IAN,HPM6754IAN,HPM6450,HPM6750IAN,HPM6350,HPM6754IVM,HPM6300系列,HPM6450IAN,HPM6454IVM,HPM6320IPA,HPM6750IVM,HPM6000家族,HPM6360IPA,HPM6360IEP,HPM6364IPA,HPM6430IVM,HPM6300,HPM6400,HPM6320,HPM6364,HPM6364IEP,HPM6700,HPM6430IAN,HPM6350IPA,HPM6340,HPM6000,HPM6340IEP,HPM6360,HPM6730IAN,HPM6730IVM,HPM6350IEP,HPM6340IPA,HPM6700系列,HPM6450IVM,HPM6454,HPM6730,HPM6400系列,HPM6430,HPM6750,HPM6754
HPM6000 系列 MCU Flash 使用指南(一)------如何使用片内 Flash
描述- 本文档为HPM6000系列微控制器中支持4MB片内闪存的型号提供了使用指南,包括硬件和软件开发注意事项。指南详细介绍了如何使用片内Flash,以及与其他型号产品的异同,并提供了开发时需要注意的具体步骤,如创建新板目录、修改openocd脚本文件、调整board.c文件和yaml配置文件等。此外,还强调了使用片内闪存的优势,如节省开发调试成本和缩小PCB面积。
型号- HPM6400 系列,HPM6000,HPM6264,HPM6360,HPM6284,HPM6200 系列,HPM6700 系列,HPM6000 系列,HPM6300,HPM6454,HPM6400,HPM6364,HPM6200,HPM6700,HPM6300 系列,HPM6754
打造高效自动化的利器,先楫HPM6200系列高性能MCU芯片携手钧舵机器人推出精密装配方案
末端执行器作为整个自动化领域的核心所在,承载着精准抓取、稳定操作以及高效执行各种任务的重要职责。苏州钧舵机器人有限公司推出的搭载先楫半导体HPM6200系列高性能MCU芯片的LRA系列直线旋转执行器(ZR轴)凭借其精确力控补偿、软着陆算法、恒力磁性弹簧技术以及高精度光编技术等多项创新技术,为半导体封测、芯片贴装、3C精密装配等行业提供强大支持。
【经验】玩转先楫CANFD外设系列之一,轻松搞起CANFD
先楫的CANFD外设,有两个CANFD的IP,其中HPM6700系列,HPM6400系列、HPM6300系列使用的是CAN。而HPM6200系列则使用的MCAN系列,同样也包括经典CAN和CANFD。
先楫半导体(HPMicro)HPM APPS v1.6.0上线啦!
HPM APPS是基于HPM SDK开发的上层应用软件开发套件。提供各种典型通用的应用解决方案,包含了中间件、组件、服务等,供用户使用评估。HPM APPS需搭配HPM SDK使用,且HPM APPS和HPM SDK版本一一对应。在参考方案时,建议先查阅文档开始。
电子商城
现货市场
服务
可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。
提交需求>
可来图定制均温板VC尺寸50*50mm~600*600 mm,厚度1mm~10mm,最薄0.3mm。当量导热系数可达10000W/M·K,散热量可达10KW, 功率密度可达50W/cm²。项目单次采购额需满足1万元以上,或年需求5万元以上。
提交需求>
登录 | 立即注册
提交评论