6-1_ADC示例分析

news2024/11/25 8:16:48

1.参考代码示例

PRJ_M66_4.3.3\boards\apollo4l_blue_eb\examples\peripherals\adc_measure\src\adc_measure.c

本篇基于Apollo4BlueLite 4.3.3版本的SDK中adc_measure.c示例的代码进行分析。

2. 代码流程

(1)初始化一路GPIO作为ADC输入

(2)初始化ADC模块,同时配置使能中断

(3)启动ADC软件触发模式

(4)这样ADC就会根据配置的采样频率循环采样

(5)该示例中会在中断处理函数中打印采样结果

3. 代码分析

(1)设置ADC输入pin脚

通过该函数实现把指定GPIO引脚设置为ADC输入的功能。在Apollo4BlueLite芯片中定义了8路GPIO可以被配置为ADC输入pin脚,分别为GPIO12~GPIO19

// Set a pin to act as our ADC input

am_hal_gpio_pinconfig(ADC_INPUT_PIN, g_ADC_PIN_CFG);

(2)ADC初始化函数

0

  • uint32_t am_hal_adc_initialize(uint32_t ui32Module, void **ppHandle)

该函数实现通过设备编号初始化ADC设备(ADC Device Handle)

  • uint32_t am_hal_adc_control(void *pHandle, am_hal_adc_request_e eRequest, void *pArgs)

该函数为ADC特有的控制功能函数,初始化流程中eRequest为AM_HAL_ADC_REQ_CORRECTION_TRIMS_GET,这里是用来获取当前ADC设备的校准偏移和增益

  • uint32_t am_hal_adc_power_control(void *pHandle, am_hal_sysctrl_power_state_e ePowerState, bool bRetainState)

该函数用来给ADC模块启动供电,ePowerState为AM_HAL_SYSCTRL_WAKE

  • uint32_t am_hal_adc_configure_irtt(void *pHandle, am_hal_adc_irtt_config_t *pConfig)

该函数用来配置ADC内部重复触发采样的定时器

  • uint32_t am_hal_adc_configure(void *pHandle, am_hal_adc_config_t *psConfig)

该函数用来配置ADC模块,包括设置ADC时钟源始终频率,时钟极性(上升沿采样或下降沿采样),触发源选择,采样间隔是否下电,采样模式(单次采样/连续采样)等

  • uint32_t am_hal_adc_configure_slot(void *pHandle, uint32_t ui32SlotNumber, am_hal_adc_slot_config_t *pSlotConfig)

该函数用来配置ADC模块的slot,包括配置采样值的平均数量,绑定输入通道,转换精度等

  • uint32_t am_hal_adc_interrupt_enable(void *pHandle, uint32_t ui32IntMask)

该函数用来使能ADC的中断

  • uint32_t am_hal_adc_enable(void *pHandle)

该函数用来使能ADC模块

  • uint32_t am_hal_adc_irtt_enable(void *pHandle)

该函数用来使能内部重复触发定时器

4. ADC寄存器

4.1 ADC IRTT寄存器

(1)ADC模块通过IRTT (Internal Repeating Trigger Timer)来配置采样频率,首先我们需要了解一下IRTT寄存器,如下图所示。

Bits

Name

RW

Description

备注

31

TIMEREN

RW

ADC-internal trigger timer enable.

DIS = 0x0 - Disable the ADC-internal trigger timer.

EN = 0x1 - Enable the ADC-internal trigger timer.

内部触发定时器使用寄存器

30:19

RSVD

RO

RESERVED.

18:16

CLKDIV

RW

Configure number of divide-by-2 of clock source as input to trigger counter. (Max value of 5.) A value of 0 in this register would not divide down the ADC input clock. A value of 1 would divide the ADC input clock frequency by 2. A value of 5 would divide the ADC input clock frequency by 2^5 = 32. To update this value, first disable the INTTRIGTIMER by setting TIMEREN to DIS, change CLKDIV, and then reenable it INTTRIGTIMER by setting TIMEREN to EN again.

采样时钟分频系数,在示例中ADC的输入时钟为HFRC_24MHz,CLKDIV=16,那么实际的采样频率为24MHz/16=1.5MHz

15:10

RSVD

RO

RESERVED.

9:0

TIMERMAX

RW

Trigger counter count max, used as initial condition to trigger. Also used repeatedly each time counter reaches it to restart trigger timer at zero. To update this value, first disable the INTTRIGTIMER by setting TIMEREN to DIS, change TIMERMAX, and then reenable it INTTRIGTIMER by setting TIMEREN to EN again.

该参数定义了每隔多少个时钟周期,ADC会采样一次并得到一个采样结果

(2)结合示例代码理解

如下图代码所示,采样频率为1.5MHz,IrttCountMax=30,实际上采样间隔为1s/1.5MHZ*30≈20us

这里需要注意目前代码中支持的分频系数为1,2,4,6,IrttCountMax的取值范围为1~1023(因为寄存器为10bit,最大值为0x3FF)

0

4.2 ADC配置寄存器

(1)ADC模块有专门的配置寄存器进行基本状态的配置,下图为CFG寄存器信息

Bits

Name

RW

Description

备注

31:26

RSVD

RO

RESERVED.

25:24

CLKSEL

RW

Select the source and frequency for the general purpose ADC clock. HFRC_24MHZ is the only valid GP ADC clock selection and must be configured for proper operation.

HFRC_48MHZ = 0x0 - This setting must not be used for CLKSEL for the GP ADC even though it is the default setting. Software must set CLKSEL to HFRC_24MHZ after any reset event and before enabling the ADC.

HFRC_48MHZ1 = 0x1 - This setting must not be used for CLKSEL for the GP ADC.

HFRC_24MHZ = 0x2 - HFRC clock at 24 MHz. This setting is the only valid setting for the GP ADC.

HFRC2_48MHZ = 0x3 - This setting must not be used for CLKSEL for the GP ADC.

GP ADC目前只能设置时钟源为24MHz

23:21

RSVD

RO

RESERVED.

20

RPTTRIGSEL

RW

This bit selects which periodic trigger to use with RPTEN = 1.

TMR = 0x0 - Trigger from on-chip timer.

INT = 0x1 - Trigger from ADC-internal timer.

选择ADC采样定时器,INT模式对应timer_7

19

TRIGPOL

RW

This bit selects the ADC trigger polarity for external off chip triggers.

RISING_EDGE = 0x0 - Trigger on rising edge.

FALLING_EDGE = 0x1 - Trigger on falling edge.

配置采样上升沿触发或者下降沿触发

18:16

TRIGSEL

RW

Select the ADC trigger source.

EXT0 = 0x0 - Off chip External Trigger0 (ADC_ET0)

EXT1 = 0x1 - Off chip External Trigger1 (ADC_ET1)

EXT2 = 0x2 - Off chip External Trigger2 (ADC_ET2)

EXT3 = 0x3 - Off chip External Trigger3 (ADC_ET3)

VCOMP = 0x4 - Voltage Comparator Output

SWT = 0x7 - Software Trigger

选择ADC的触发源,这里我们一般情况选用的是SWT软件触发

15:13

RSVD

RO

RESERVED.

12

DFIFORDEN

RW

Destructive FIFO Read Enable. Setting this will enable FIFO pop upon reading the FIFOPR register.

DIS = 0x0 - Destructive Reads are prevented. Reads to the FIFOPR register will not POP an entry off the FIFO.

EN = 0x1 - Reads to the FIFOPR registger will automatically pop an entry off the FIFO.

Destructive FIFO Read Enable:这个设置可以实现在读取FIFOPR寄存器时弹出FIFO中的数据。一般情况都会使能。

11:5

RSVD

RO

RESERVED.

4

CKMODE

RW

Clock mode register

LPCKMODE = 0x0 - Disable the clock between scans for LPMODE0. Set LPCKMODE to 0x1 while configuring the ADC.

LLCKMODE = 0x1 - Low Latency Clock Mode. When set, HFRC and the adc_clk will remain on while in functioning in LPMODE0.

LPMODE=0,CKMODE=1,在ADC采样过程中始终保持HFRC和ADC clock使能

3

LPMODE

RW

Select power mode to enter between active scans.

MODE0 = 0x0 - Low Power Mode 0. Leaves the ADC fully powered between scans with minimum latency between a trigger event and sample data collection.

MODE1 = 0x1 - Low Power Mode 1. Powers down all circuity and clocks associated with the ADC until the next trigger event. Between scans, the reference buffer requires up to 50us of delay from a scan trigger event before the conversion will commence while operating in this mode.

2

RPTEN

RW

This bit enables Repeating Scan Mode.

SINGLE_SCAN = 0x0 - In Single Scan Mode, the ADC will complete a single scan upon each trigger event.

REPEATING_SCAN = 0x1 - In Repeating Scan Mode, the ADC will complete its first scan upon the initial trigger event and all subsequent scans will occur at regular intervals defined by the configuration programmed for the CTTMRA3 timer or the ADC-internal timer (see the RPTTRIGSEL field) until the timer is disabled or the ADC is disabled. When disabling the ADC (setting ADCEN to '0'), the RPTEN bit should be cleared.

设置单次采样或者连续采样

1

RSVD

RO

RESERVED.

0

ADCEN

RW

This bit enables the ADC module. While the ADC is enabled, the ADCCFG and SLOT Configuration regsiter settings must remain stable and unchanged. All configuration register settings, slot configuration settings and window comparison settings should be written prior to setting the ADCEN bit to '1'.

DIS = 0x0 - Disable the ADC module.

EN = 0x1 - Enable the ADC module.

使能ADC模块

(2)结合示例代码理解

在示例中配置Clock为24MHz,上升沿触发,触发源为软件触发,LPMODE0模式(采样过程中保持HFRC和ADC clock),使能了重复采样模式,使用内部定时器触发

0

4.3 SLOT配置寄存器

(1)Apollo4BlueLite ADC模块有8个slot,可以和前端8路外部输入pin脚进行关联,每个slot都有独立的寄存器进行配置。

Bits

Name

RW

Description

备注

31:27

RSVD

RO

RESERVED.

26:24

ADSEL0

RW

Select the number of measurements to average in the accumulate divide module for this slot.

AVG_1_MSRMT = 0x0 - Average in 1 measurement in the accumulate divide module for this slot.

AVG_2_MSRMTS = 0x1 - Average in 2 measurements in the accumulate divide module for this slot.

AVG_4_MSRMTS = 0x2 - Average in 4 measurements in the accumulate divide module for this slot.

AVG_8_MSRMT = 0x3 - Average in 8 measurements in the accumulate divide module for this slot.

AVG_16_MSRMTS = 0x4 - Average in 16 measurements in the accumulate divide module for this slot.

AVG_32_MSRMTS = 0x5 - Average in 32 measurements in the accumulate divide module for this slot.

AVG_64_MSRMTS = 0x6 - Average in 64 measurements in the accumulate divide module for this slot.

AVG_128_MSRMTS = 0x7 - Average in 128 measurements in the accumulate divide module for this slot.

该寄存器配置手机指定的采样值后计算平均值作为一次采样结果保存在slot中

23:18

TRKCYC0

RW

Set additional input signal sampling/tracking time to the specified number of ADC clock cycles. (Note that a value of 0 in this register specifies the minimum required 5 cycles. A maximum of 64 specifies 69 cycles.)

设置额外的输入信号采样/跟踪时间为指定的ADC时钟周期数。请注意,该寄存器中的值为0表示最小所需的5个周期。最大值为64,表示69个周期。目前代码中要求该值必须为32

17:16

PRMODE0

RW

Set the Precision Mode For Slot 0.

P12B0 = 0x0 - 12-bit precision mode

P12B1 = 0x1 - 12-bit precision mode

P10B = 0x2 - 10-bit precision mode

P8B = 0x3 - 8-bit precision mode

设置ADC转换精度

15:12

RSVD

RO

RESERVED.

11:8

CHSEL0

RW

Select one of the 14 channel inputs for this slot.

SE0 = 0x0 - Single ended external GPIO connection to pad16.

SE1 = 0x1 - Single ended external GPIO connection to pad29.

SE2 = 0x2 - Single ended external GPIO connection to pad11.

SE3 = 0x3 - Single ended external GPIO connection to pad31.

SE4 = 0x4 - Single ended external GPIO connection to pad32.

SE5 = 0x5 - Single ended external GPIO connection to pad33.

SE6 = 0x6 - Single ended external GPIO connection to pad34.

SE7 = 0x7 - Single ended external GPIO connection to pad35.

TEMP = 0x8 - Internal temperature sensor.

BATT = 0x9 - Internal voltage divide-by-3 connection.

TESTMUX = 0xA - Analog testmux.

VSS = 0xB - Input VSS.

选择和当前slot绑定的输入通道,有14路通道可选

7:2

RSVD

RO

RESERVED.

1

WCEN0

RW

This bit enables the window compare function for slot 0.

WCEN = 0x1 - Enable the window compare for slot 0.

WCDIS = 0x0 - Disable the window compare for slot 0.

使用该bit使能窗口比较功能

0

SLEN0

RW

This bit enables slot 0 for ADC conversions.

SLEN = 0x1 - Enable slot 0 for ADC conversions.

SLDIS = 0x0 - Disable slot 0 for ADC conversions.

使用该bit使能ADC转换

4.4 ADC FIFO寄存器

采样完成后采样结果会存储在FIFO中,Apollo4BlueLite ADC模块有16个FIFO,相关寄存器有FIFO和FIFOPR,其中FIFOPR是FIFO寄存器的Pop Read镜像副本,唯一的区别在于读取该寄存器将导致同时FIFO POP,这也可以通过向ADCFIFO寄存器写入来实现。注意:要启用破坏性读取,必须在CFG寄存器中设置DFIFORDEN位。。

Bits

Name

RW

Description

备注

31

RSVD

RO

RESERVED.

30:28

SLOTNUM

RO

Slot number associated with this FIFO data.

通过该bit查询当前FIFO存储的数据关联的slot number

27:20

COUNT

RO

Number of valid entries in the ADC FIFO.

表示FIFO中有效条目的总数,如果COUNT大于0,向该寄存器写入数据将会从FIFO中弹出一条FIFO条目,并将COUNT减1。

19:0

DATA

RO

Oldest data in the FIFO.

采样值

4.5 ADC中断寄存器

(1)中断相关寄存器有以下几种:

  • INTEN(ADC Interrupts: Enable) 中断状态使能寄存器
  • INTSAT(ADC Interrupts: Status) 中断状态寄存器
  • INTCLR(ADC Interrupts: Clear) 中断状态清除寄存器

以上3个寄存器是完全对应的,在相同的bit实现中断的使能,状态查询和清除的功能,下面以使能寄存器为例进行讲解

Bits

Name

RW

Description

备注

31:12

RSVD

RO

RESERVED.

11

SATCB

RW

Saturation - Channel B (Slots 2 or 3)

SATCBINT = 0x1 - Saturation, as specified by SAT configuration registers, occurred on either slot 2 or 3 (channel B)

NONSATCBINT = 0x0 - No-Saturation

10

SATCA

RW

Saturation - Channel A (Slots 0 or 1)

SATCAINT = 0x1 - Saturation, as specified by SAT configuration registers, occurred on either slot 0 or 1 (channel A)

NONSATCAINT = 0x0 - No Saturation

9

ZXCB

RW

Zero Crossing - Channel B (Slots 2 or 3)

ZXCBINT = 0x1 - Zero Crossing, as specified by ZX configuration registers, occurred on either slot 2 or 3 (channel B)

NONZXCBINT = 0x0 - Non Zero Crossing

8

ZXCA

RW

Zero Crossing - Channel A (Slots 0 or 1)

ZXCAINT = 0x1 - Zero Crossing, as specified by ZX configuration registers, occurred on either slot 0 or 1 (channel A)

NONZXCAINT = 0x0 - Non Zero Crossing

7

DERR

RW

DMA Error Condition

DMAERROR = 0x1 - DMA Error Condition Occurred

NODMAERROR = 0x0 - DMA Error Condition did not Occurred

DMA错误中断

6

DCMP

RW

DMA Transfer Complete

DMACOMPLETE = 0x1 - DMA Completed a transfer

DMAON = 0x0 - DMA completion is pending or not triggered.

DMA完成传输中断

5

WCINC

RW

Window comparator voltage incursion interrupt.

WCINCINT = 0x1 - Window comparator voltage incursion interrupt.

WCINCNOINT = 0x0 - Not a Window comparator voltage incursion interrupt.

Voltage Incursion Interrupt 是在采样值低于窗口范围下限时触发

4

WCEXC

RW

Window comparator voltage excursion interrupt.

WCEXCINT = 0x1 - Window comparator voltage excursion interrupt.

WCEXCNOINT = 0x0 - Not a Window comparator voltage excursion interrupt.

Voltage Excursion Interrupt 是在采样值超出窗口范围上限时触发

3

FIFOOVR2

RW

FIFO 100 percent full interrupt.

FIFOFULLINT = 0x1 - FIFO 100 percent full interrupt.

FIFOFULLNOINT = 0x0 - Not a FIFO 100 percent full interrupt.

FIFO中有效条目达到100%时上报中断,也就是FIFO COUNT为16时上报中断

2

FIFOOVR1

RW

FIFO 75 percent full interrupt.

FIFO75INT = 0x1 - FIFO 75 percent full interrupt.

FIFO75NOINT = 0x0 - Not FIFO 75 percent full interrupt.

FIFO中有效条目达到75%时上报中断,也就是FIFO COUNT为12时上报中断

1

SCNCMP

RW

ADC scan complete interrupt.

SCNCMPINT = 0x1 - ADC scan complete interrupt.

SCNCMPNOINT = 0x0 - No ADC scan complete interrupt.

扫描完成中断用于扫描模式下的多通道连续转换

0

CNVCMP

RW

ADC conversion complete interrupt.

CNVCMPINT = 0x1 - ADC conversion complete interrupt.

CNVCMPNOINT = 0x0 - No ADC conversion complete interrupt.

转换完成中断用于单次转换模式下的单通道转换

  • INTSET(ADC Interrupts: Set) 中断状态设置寄存器,可以使ADC立即产生对应中断,一般调试使用

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/881863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

P4500Q22CLRP 半导体放电管 品牌厂家 现货直供

防浪涌过电压保护电路中,常用的过电压保护器件有:半导体放电管TSS、TVS瞬态抑制二极管、压敏电阻MOV、陶瓷气体放电管GDT,其中半导体放电管TSS和陶瓷气体放电管GDT属于开关型过压保护器件,压敏电阻MOV和TVS瞬态抑制二极管属于钳位…

金蝶软件实现导入Excel数据分录行信息到单据体分录行中

>>>适合KIS云专业版V16.0|KIS云旗舰版V7.0|K/3 WISE 14.0等版本<<< 金蝶软件中实现[导入Excel数据业务分录行]信息到[金蝶单据体分录]中,在采购订单|采购入库单|销售订单|销售出库单等类型单据中,以少量的必要字段在excel表格中按模板填列好,很方便快捷地从…

app测试和web测试有什么区别

1.性能方面: web页面可能更关注响应时间&#xff0c;而app更关注流量、电量、QPS。 2.系统架构方面&#xff1a; web项目&#xff0c;一般都是b/s架构&#xff0c;基于浏览器的&#xff0c;而app则是c/s的&#xff0c;必须要有客户端。在系统测试的时候就会产生区别了。首从…

使用ntp服务器调整linux系统时间(附带代码示例)

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;RodmaChen 为了防止应用在系统上运行时候&#xff0c;系统时间与真实时间出现误差。可以调用ntp服务器获取正确的时间进行调整 NTP简介 网络时间协议&#xff08;NTP&…

Qt扫盲-QTableView理论总结

QTableView理论总结 一、概述二、导航三、视觉外观四、坐标系统五、示例代码1. 性别代理2. 学生信息模型3. 对应视图 一、概述 QTableView实现了一个tableview 来显示model 中的元素。这个类用于提供之前由QTable类提供的标准表&#xff0c;但这个是使用Qt的model/view架构提供…

mysql 8.0.20不停机主从同步

一、环境 CentOS &#xff1a; 7.3.1611 (Core) mysql&#xff1a;8.0.20 二、遇到的问题 1.查看主从同步发现下列问题 error connecting to master repl192.168.0.21:3306 - retry-time: 60 retries: 4 message: Authentication plugin caching_sha2_password reported e…

https协议的nginx请求http协议tomcat,出现静态文件js访问不到的情况!

复现问题&#xff1a; 访问https://1.1.1.1:443/aaa,页面出现静态js,css请求失败&#xff01; F12查看&#xff1a; 分析问题&#xff1a; 问题的根源应该就是浏览器的安全机制&#xff0c;不允许在嵌套在https的页面中进行http请求吧&#xff0c;结合google想到这个应该可以…

用dcker极简打包java.jar镜像并启动

用dcker极简打包java.jar镜像并启动 一、本地打包好jar包 二、新建文件夹&#xff0c;将步骤1中的jar包拷贝到文件夹下 三、同目录下新建Dockerfile ## 基础镜像&#xff0c;这里用的是openjdk:8 FROM openjdk:8## 将步骤一打包好的jar包 拷贝到镜像的 跟目录下[目录可以自定义…

真想学技术,还是不要去外包了,干了三年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

群折射率$ n_g$与有效折射率$ n_{eff}$的关系详细推导(假设$ \lambda_0$为真空入射光波长)

这个关系应该在环谐振器相关的资料中挺常见的。 其中&#xff1a; 注意 β \beta β为传播常数。

我都30了,还能不能做软件测试?

今天在CSDN看到一个问答&#xff0c;我都30了&#xff0c;还能不能做软件测试&#xff1f;我本来想直接回答&#xff0c;但回答的明显字数不够用。所以就干脆就把想说的都记录下来写一篇文章。 1.我今年30岁了&#xff0c;还适不适合做软件测试&#xff1f; 我认为&#xff0c;…

合并单元格

需求&#xff1a; 合并 相同名称的产品 先说下elementUI合并单元格的方法&#xff0c;先计算好要合并的行数rowspan&#xff0c;return {rowspan&#xff0c;colspan}&#xff0c;其他的单元格return{0,0} getData(params) {//临时数组&#xff0c;存放产品名称相同的数量this…

helm安装harbor + nerdctl 制作push 镜像

参考 文章&#xff1a;Helm部署Harbor_helm harbor_风向决定发型丶的博客-CSDN博客 安装好后使用 nerd containerd对接harbor_containerd 容器 insecure-registries 配置_柠是柠檬的檬的博客-CSDN博客 推送镜像 Containerd 对接私有镜像仓库 Harbor - 知乎 接下来我们来…

2023年7月京东洗衣机行业品牌销售排行榜(京东数据分析软件)

2023年上半年&#xff0c;洗衣机市场表现平淡&#xff0c;同环比来看出货量都有一定程度的下滑。7月份&#xff0c;洗衣机市场仍未改变这一下滑态势。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;7月份&#xff0c;京东平台洗衣机的销量为109万&#xff0c;环比下降…

企业为什么需要档案管理系统?

在当今的信息化社会&#xff0c;企业的数据和信息越来越多&#xff0c;而且日益复杂。而这些数据和信息都是企业运营的重要资源&#xff0c;它们的管理与否&#xff0c;直接影响到企业的决策效率&#xff0c;甚至是企业的生存发展。然而&#xff0c;传统的纸质档案管理方式已经…

机器学习实战:Python基于KDE核密度估计进行分布估计(十六)

文章目录 1. 前言1.1 KDE简介1.2 KDE应用领域 2. diy数据集实战演示2.1 导入函数2.2 自定义数据2.3 可视化数据2.4 KDE建模 3. 参数探讨3.1 带宽3.2 选择最佳带宽3.2 核函数 3.4 挑选合适核函数4. 讨论 1. 前言 1.1 KDE简介 核密度估计&#xff08;Kernel Density Estimation…

结构体和数组结合使用

1、定义结构体 struct Student {int num;char name[32]; }; 2、结构体数组定义 #include<iostream> using namespace std;struct Student {int num;char name[32]; }; int main() {//结构体变量复制方式2struct Student arr[2] { {1,"张三"}, {2,"李四…

从系统角度,看智能制造|百世慧®

7月31日我们结束了智能制造专题第二期“电池智能制造质量管理应用及案例分享”的线上研讨会&#xff0c;有不少朋友没有来得及参加智能制造专题第一期研讨会&#xff0c;同时又工作繁忙。所以&#xff01;今天就由我百小能为大家快速讲解第一期研讨会——“电池智能制造应用”的…

【C++】移动赋值运算符

2023年8月15日&#xff0c;周二上午 概述 移动赋值运算符是一个特殊的赋值运算符&#xff0c;用于从一个对象中移动&#xff08;转移&#xff09;资源到另一个对象&#xff0c;而不是进行复制操作。它通常与右值引用一起使用&#xff0c;以实现高效的资源转移&#xff0c;提高…

用AI解锁声音的奥秘——启英泰伦新成果发布交流会

声音&#xff0c;是由物体或介质的振动引起的&#xff0c;振动源的多样性、振动的频率和波形的差异、传播介质的差异等因素共同作用&#xff0c;使我们能够感知到丰富而多样化的声音世界。听得到、听得清、听得懂、辨得明&#xff0c;是AI语音技术的重要研究课题。 启英泰伦一…