- 2024-01-25
-
回复了主题帖:
领取审核名单(第五批): 辞旧,年底清仓,100+板卡来袭,有缘来领
个人信息无误,已知晓需自己支付邮费
- 2024-01-21
-
回复了主题帖:
辞旧:年底清仓,100+板卡来袭,有缘来领
所需板卡:GD32 Colibri-F350RB申请理由:我是一名物联网专业的在校学生,对国产芯片GD32表现出浓厚的兴趣。通过使用GD32 F350开发版,我希望能够深入了解国产芯片的性能和功能,特别是在物联网领域的应用。这块开发板将为我提供一个宝贵的实践机会,有助于我在学业中更深入地掌握相关知识。非常感谢您的支持,我期待着能够为国产芯片的发展做出贡献!
-
回复了主题帖:
先楫HPM5361EVK——DMA测试
LitchiCheng 发表于 2024-1-20 23:06
这个是测试tx接rx的对接测试吗,看起来这个库和其他的国产有一些区别
接收满 16 个字节输出
- 2024-01-20
-
发表了主题帖:
先楫HPM5361EVK——DMA测试
一、DMA简介
直接存储器访问(DMA)是一种通过专门的DMA控制器实现的数据传输方式,它使得I/O设备可以直接访问系统内存而无需CPU的介入。这种方式在大量数据传输的情况下非常有用,因为它可以显著提高系统的性能。
使用DMA进行数据传输时,CPU只需要初始化DMA控制器,然后就可以继续执行其他任务,而不必在数据传输过程中不断地处理每个数据传输请求。DMA控制器负责管理数据传输的细节,包括地址的增减、数据的读写等,从而减轻了CPU的负担,提高了整个系统的效率。
这种方式特别适用于需要大量数据传输的场景,比如文件读写、网络数据传输等。通过释放CPU资源,DMA在提高系统吞吐量和响应速度方面发挥着关键的作用。
DMA就是基于以上设想设计的,它的作用就是解决大量数据转移过度消耗CPU资源的问题。有了DMA使CPU更专注于更加实用的操作–计算、控制等。
二、 先楫HPM5361EVK的DMA控制器
DMA 控制器的主要特性有:
● 支持 32 个可配置的通道
● 通道支持 2 级优先级配置
● 相同优先级通道使用 Round-Robin 仲裁
● 支持链式连接多个 DMA 任务
DMA 模块中的 dma_apb_csr 为控制寄存器模块,dma_ahb_ahbmst 模块实现了 ahb master 接口,DMA_ahb_engine模块实现了 DMA 操作引擎状态机,dma_ahb_arbiter 和 dma_ahb_chmux 模块实现多路 DMA 请求的仲裁与选择。
DMA结构框图:
DMA管脚说明:
DMA 控制器支持 32 个通道,每个通道都可独立配置数据传输的参数。用户可以同时使用多个 DMA 通道, DMA 控制器会交替执行不同通道的数据传输任务,而不是等待一个通道传输完成后再响应下一个通道的传输请 求。也就是说 DMA 控制器可能分多次完成单个通道的数据传输,在这个通道全部任务完成后,将状态寄存器内 的相应标志位置位。 某个 DMA 通道的数据传输可能因为数据传输错误而中断,也可以由软件中止。此种情况下,DMA 控制器会停止传输数据,并将状态寄存器内的相应标志位置位。
DMA 控制器支持 3 种地址模式:递增模式,递减模式和不变模式。
● 递增模式是指,在 DMA 每次访问源或者目标地址后,DMA 下次访问此次源或者目标之后的地址
● 递减模式是指,在 DMA 每次访问源或者目标地址后,DMA 下次访问此次源或者目标之前的地址
● 不变模式是指,在 DMA 每次访问源或者目标地址后,DMA 下次访问的源或者目标地址固定不变
在源和目标地址的模式配置相同时,DMA 会保持源与目标区数据的字节顺序不变。但是如果源与目标的地址 配置相反,那么源与目标地址间数据的字节顺序也会相反。其中不变模式字节顺序与递增模式相同。
三、开发版实测(串口DMA)
运行结果:
- 2024-01-14
-
发表了主题帖:
先楫HPM5361EVK性能评测——CoreMark测试
一、CoreMark介绍
CoreMark是一种用于评估嵌入式系统性能的基准测试工具,它专注于测量处理器的核心性能。该基准测试旨在提供一个简单、小型的测试套件,以评估嵌入式系统的性能,并强调了处理器内核的效率。
CoreMark取代了过时的Dhrystone基准测试,它包含对以下算法的实现:列表处理(查找和排序)、矩阵操作(常见的矩阵操作)、状态机(确定输入流是否包含有效数字)和CRC(循环冗余校验)。
核心特点:
轻量级测试套件: CoreMark的设计目标之一是保持测试套件的轻量级。这使得它成为嵌入式系统中评估处理器性能的理想选择。测试套件的小型规模有助于快速执行,从而更容易嵌入到不同的开发流程中。
独立性: CoreMark测试是相对独立的,这意味着它专注于测量处理器核心的性能,而不受外部因素的干扰。这使得测试结果更具可比性,因为它们不受系统中其他组件的影响。
多平台支持: CoreMark旨在跨多个平台运行,这包括各种嵌入式系统和处理器架构。这种灵活性使得开发人员能够在不同的硬件环境中进行性能比较。
与Dhrystone相似,CoreMark具有小巧、便携、易于理解和免费的特点,并提供单一基准测试分数。不同于Dhrystone的是,CoreMark拥有特定的运行和报告规则,旨在避免Dhrystone存在的问题。例如,Dhrystone的主要部分实际上暴露了编译器优化工作负载的能力,而非MCU或CPU的性能。因此,Dhrystone更适用于作为编译器基准测试,而不是硬件基准测试,具有更多洞察力。同样地,在Dhrystone的计时部分中使用了库调用,这些调用通常占据基准测试大部分时间。由于库代码不包含在基准测试中,使用不同的库很难进行结果比较。最后,虽然存在执行Dhrystone的指导方针,但由于结果未得到认证或验证,因此这些指导方针并非强制执行。关于如何报告Dhrystone结果,也没有标准化,存在多种格式(DMIPS、每秒Dhrystones、DMIPS/MHz)。
测试内容:
CoreMark测试涵盖了多个方面,以确保全面评估处理器核心性能,
整数运算: 包括整数乘法、除法、位操作等,以测试处理器在整数计算方面的性能。
控制流: 通过测试分支操作和循环操作的性能,评估处理器在控制流程方面的表现。
内存操作: 包括内存读取和写入,以测试处理器对内存的访问速度。
具体测试项有6个部分:
数值操作(Data structure operations):例如排序、链表操作等。
控制操作(Control operations):例如循环、条件判断等。
数学运算(Arithmetic operations):例如位操作、浮点数运算等。
字符串操作(String manipulation):例如字符串拼接、比较等。
矩阵变换(Matrix manipulation):例如矩阵乘法、转置等。
加密/解密(Encryption and decryption):例如AES、RSA等。
每个测试的执行时间不同,最终将所有测试的得分累计起来,并通过一系列加权平均和标准化处理以生成CoreMark分数。因此,CoreMark分数是计算机硬件整体性能的综合指标,反映了处理器在各种操作上的表现。
使用场景:
嵌入式系统设计: CoreMark广泛应用于嵌入式系统的设计和优化。通过对处理器核心性能的准确测量,开发人员能够选择最适合其嵌入式应用的处理器。
性能比较: CoreMark提供了一个标准的性能比较基准,使得不同处理器和系统的性能可以进行客观的比较。这对于制定购买决策或进行系统优化至关重要。
性能调优: 开发人员可以使用CoreMark测试来识别和解决嵌入式系统中性能瓶颈,从而进行性能调优。
除了作为一个可重复、可移植且可比较的基准测试外,CoreMark还可用作新处理器设计和优化的参考工具。它有助于开发人员更好地理解其处理器、操作系统、编译器和库等各种因素之间的性能优化关系。
二、先楫HPM5361EVK实测
这里我使用先辑官方提供的SDK样例做测试,不需要重新移植,官方提供的软件资料还是挺全的。
编译运行:
跑分结果为1680。
三、跑分对比
在EEMBC官网上可以查看其他处理器跑分,通过对比可以发现先楫HPM5361EVK的跑分可以赶得上STM32H7系列了,比F7系列强太多了。
总得来说,先楫HPM5361EVK是一块性能非常强劲的国产MCU。希望国产芯片继续加油,再创辉煌!
- 2023-12-10
-
发表了主题帖:
先楫HPM5361EVK---ADC测试
本帖最后由 Windccc 于 2023-12-10 23:49 编辑
一、参数介绍
先楫HPM5361EVK具备2 个 2MSPS 16 位高精度 ADC,配置为 12 位精度 时转换率可达 4MSPS,多达 16 个模拟输入引脚;2 个 增益可编程的运算放大器,2 个模拟比较器和 2 个 1MSPS 12 位 DAC。
16 位模数转换 ADC 特性
1、16 位模数转换器 ADC16 的主要功能和特性:
● 16 位逐次逼近型 ADC
● 最大 2MHz 采样率
● 支持单端输入
● 独立的 ADC 转换时钟
● 支持任意配置的 AD 转换分辨率
● 可配置采样周期数
● 内置 DMA 可直接把 ADC 转换结果写入内存
● 支持读取转换模式 – 读取结果寄存器直接触发转换
● 支持周期转换模式 – 内置定时器按周期进行转换 – 支持硬件阈值比较,对超出范围的转换结果报警
● 支持序列转换模式 – 可由软件或硬件触发 – 序列最长可达 16 – 支持单次转换或者连续转换 – 支持序列循环
● 支持抢占转换模式 – 可由软件或硬件触发 – 连续转换序列最长可达 4
● 支持生成各类中断
2、ADC 时钟
ADC 时钟包括 ADC 控制器时钟和 ADC 转换时钟。 其中 ADC 转换时钟是 ADC 逐次逼近模拟转换节拍控制的时钟。 由 ADC 控制器时钟经过预分频得到,ADC 控制器时钟由系统控制模块配置,默认为系统总线时钟 200MHz(与电机系统时钟同步)。 可以通过设置 CONVCFG1[CONVCLKDIV] 寄存器位,配置 ADC 转换时钟相对于 ADC 控制器时钟的预分频的值。CONVCFG1[CONVCLKDIV] 值为 0 时,代表预分频值为/1;值为 1 时,预分频值为/2,最大为/16。 ADC16 转换时钟最大频率为 50MHz。
3、ADC 输入通道配置:
可以使用 SAMPLE_CFGx [SAMPLE_CLOCK_NUMBER] 和 [SAMPLE_CLOCK_NUMBER_SHIFT] 位来设置通道的采样时间。采样时间由 SAMPLE_CLOCK_NUMBER 乘以 2 的 SAMPLE_CLOCK_NUMBER_SHIFT 次方个时钟周期组成。最短的采样时间为 1 个时钟周期。为了达到 16 位的转换精度,需要将 CONV_CFG1[CONVERT_CLOCK_NUMBER] 配置为 21,即转换时间为 21 个时钟周期。
如果用户不需要 16 位的精度,但希望更快地获得结果,可以通过缩短转换时间来实现。用户需要同时改变 CONV_CFG1[CONVERT_CLOCK_NUMBER] 和 ADC16_CONFIG1[COV_END_CNT]。COV_END_CNT = 21 - CONVERT_CLOCK_NUMBER;
当 CONVERT_CLOCK_NUMBER = 21 时,ADC16 在完全的 16 位模式下工作;
当 CONVERT_CLOCK_NUMBER = 14 时,ADC16 大约在 12 位模式下工作;
当 CONVERT_CLOCK_NUMBER = 11 时,ADC16 大约在 10 位模式下工作;
当 CONVERT_CLOCK_NUMBER = 9 时,ADC16 大约在 8 位模式下工作;
其他数值也可以工作,用户可以根据精度和速度需求自由选择。每个通道的转换时间是采样时间和转换时间的总和。
4、ADC采样转换模式
先楫HPM5361EVK的16位ADC共支持四种采样模式,分别是读取转换模式、周期转换模式、序列转换模式和抢占转换模式。
读取转换模式:
读取转换模式可以直观地获取 ADC 某个输入通道的转换结果。这在需要尽快了解某个通道的结果,并且在此之前没有其他任务可执行的情况下非常适用。
读取 BUS_RESULTx 寄存器将触发对 ADC 输入 x 的一次转换。一旦转换完成,结果将直接返回。根据不同的 ADC 通道配置,返回转换结果的时间也会有所不同。
在 ADC 完成转换之前,它会阻塞相关的外设总线访问,而由于转换引起的阻塞时间可能会比较长。可以通过将 BUF_CFG0 [WAITDIS] 设置为 1 来关闭总线阻塞。这样,当读取 BUS_RESULTx 寄存器时,它将直接返回上一次转换的结果。当 BUS_RESULTx [VALID] 为 1 时,表示 ADC 转换已完成,此时 BUS_RESULTx 寄存器中保存了最近一次的转换结果。
周期转换模式:
周期转换模式适用于需要按计划进行转换或监测某个通道是否超过阈值的情况。
通过设置 PRD_CFGx [PRD_CNT] 和 [PRESCALE] 寄存器位,可以定义周期的长度,即 PRD_CNT 乘以 2 的 PRESCALE 次方。每个 ADC 时钟周期,计数器会减 1,当计数器计数到 0 时,转换开始,并且计数器重新加载。
需要注意的是,将 PRD_CFGx [PRD_CNT] 位清零表示关闭该输入通道的周期转换。周期转换的结果保存在 PRD_RESULTx 寄存器中,可以从中读取输入通道 x 的最近一次转换结果。值得注意的是,PRD_RESULTx 寄存器始终保存着 ADC 输入通道 x 的最近一次转换结果。PRD_RESULTx 不仅保存周期转换模式的结果,还保存其他转换模式的结果。可以通过设置 PRD_THSHD_CFGx[THSHDH] 和 PRD_THSHD_CFGx[THSHDL] 来监测输入通道 x 的转换结果。一旦转换结果超出范围(结果大于 THSHDHx 或小于 THSHDLx),将触发报警,相应的标志位 INT_STS[ADWDGx] 会被置为 1。如果启用了相应的中断使能,还会产生中断。
ADC 转换结果的检测不仅限于周期转换模式,对于所有读取模式都有效。如果设置的阈值不正确,例如将 THSHDHx 设为 0,那么每当通道转换结束时都会触发报警。如果有多个通道同时到达计时期限需要开始转换,较小序号的输入通道将先进行转换。
序列转换模式:
这种模式适用于需要连续转换某个或多个通道,并且数据量较大的情况,例如测试信噪比或等效位数(ENOB)。
可以通过依次配置 SEQ_QUE0 到 SEQ_QUE15 寄存器来指定转换序列的目标输入通道。SEQ_QUE0 [CHAN_NUM] 位域用于配置序列转换触发后的第一次转换的通道序号,SEQ_QUE1 [CHNUM] 位域配置第二次转换的通道序号,以此类推,SEQ_QUE15 [CHNUM] 位配置第16次转换的通道序号。此外,需要配置 SEQ_CFG0 [SEQ_LEN] 位来指定转换序列的长度,ADC的转换序列最长可达16个通道。序列的开始转换可以通过软件或硬件触发实现:
通过软件触发:首先将 SEQ_CFG0 [SW_TRIG_EN] 位置1,然后将 SEQ_CFG0 [SW_TRIG] 位置1,即可触发序列转换。
通过硬件触发:将 SEQ_CFG0 [HW_TRIG_EN] 位置1,当触发引脚(STRGI)上检测到上升沿时,即可触发序列转换。
一旦触发,ADC将按照顺序根据 SEQ_QUE0 的配置开始转换输入通道。转换完成后,标志位 INT_STS [SEQ_CVC](转换完成)将被置为1。此时:
如果 SEQ_CFG0 [CONT_EN] 位置1,ADC将自动根据 SEQ_QUE1 的配置开始下一次转换,直到达到指定的序列长度 SEQ_QUEn。
如果 SEQ_CFG0 [CONT_EN] 位清零,ADC将等待下一次软件或硬件触发才会开始下一个通道的转换。
当ADC完成整个序列的转换(长度由 SEQ_CFG0 [SEQ_LEN] 位设置)后,标志位 INT_STS [SEQ_CMPT](序列转换完成)将被置为1。此时:
如果 SEQ_CFG0 [RESTART_EN] 位置1且 SEQ_CFG0 [CONT_EN] 位置1,ADC将自动根据 SEQ_QUEx 的配置,从 SEQ_QUE0 开始连续依次转换。
如果 SEQ_CFG0 [RESTART_EN] 位置0且 SEQ_CFG0 [CONT_EN] 位置1,ADC将在下一次软件或硬件触发后连续转换直到整个序列完成。
如果 SEQ_CFG0 [CONT_EN] 位置0,无论 SEQ_CFG0 [RESTART_EN] 位置1还是0,ADC将在下一次软件或硬件触发后重新根据 SEQ_QUEx 的配置开始转换。
如果在ADC序列转换过程中接收到新的序列转换触发信号,ADC将忽略该触发。如果是通过软件触发序列转换,INT_STS [SEQ_SW_CFLCT] 位将被置为1。如果是由 STRGI 引发的硬件触发序列转换,INT_STS [SEQ_HW_CFLCT] 位将被置为1。
ADC序列转换模式支持内置DMA,可以直接将转换结果写入用户指定的内存缓冲区。用户可以通过 SEQ_DMA_ADDR 寄存器配置目标地址,并通过 SEQ_DMA_CFG [BUF_LEN] 设置数据区域的长度,从而为ADC的序列转换结果配置一个循环缓冲区。
抢占转换模式:
ADC支持抢占转换模式,这是优先级最高的转换模式,适用于对电机控制系统中实时性要求较高的情况,需要在指定时间对指定通道进行转换。
ADC支持12组抢占转换序列,触发信号来自芯片的片上互联模块,共有12个抢占触发源。这些抢占转换序列可以通过寄存器CONFIGx进行配置。抢占转换是通过硬件触发实现的,当PTRGIxA、PTRGIxB或PTRGIxC上出现上升沿时,会触发相应的抢占序列xA、xB或xC。首先,用户需要通过CONFIGx寄存器的[TRIG_LEN]位来配置抢占转换的序列长度,最多可以设置为4,即每个触发最多可以触发一次长度为4的转换。可以通过CONFIGx寄存器配置抢占转换的转换顺序。通过配置寄存器的[CHAN0]、[CHAN1]、[CHAN2]和[CHAN3]位域,依次配置触发后的第1、2、3、4次转换的AD输入通道号码。
一旦抢占转换开始,ADC会根据[TRIG_LEN]的配置连续进行转换,完成整个抢占序列。在抢占序列的第x次转换完成后,如果CONFIGx寄存器的[INTENx]位置为1,INT_STS[TRIG_CMPT]标志位会被置为1。如果相应的中断控制位也被置为1,ADC会生成中断。在ADC抢占转换过程中,如果接收到新的抢占转换触发信号,ADC不会响应新的触发。但是,根据触发源是软件还是硬件,INT_STS[TRIG_SW_CFLICT]标志位或INT_STS[TRIG_HW_CFLICT]标志位会被置为1,表示发生了抢占转换触发冲突。如果对应的中断控制位也被置为1,ADC会产生中断报警。
如果多个不同的抢占转换同时触发,ADC会按照以下优先顺序进行响应:较小组号的抢占转换优先,例如PTRGI0A优先于PTRGI1A;同一组中,xA优先于xB,xB优先于xC,例如PTRGI0A优先于PTRGI0B。同时,INT_STS[PTCHWCFLICT]标志位会被置为1。
ADC抢占转换模式也支持内置DMA,可以直接将转换结果写入用户指定的内存缓冲区中。
二、实际测试
首先是硬件初始化和配置时钟,这里我们的程序采用ADC0的11通道进行测试,查看芯片的数据手册可以看到ADC0_IN11所在端口是在PB08
int main(void)
{
uint8_t conv_mode;
/* Bsp initialization */
board_init();
/* ADC pin initialization */
board_init_adc16_pins();
/* ADC clock initialization */
board_init_adc16_clock(BOARD_APP_ADC16_BASE, true);
printf("This is an ADC16 demo:\n");
/* Get a conversion mode from a console window */
conv_mode = get_adc_conv_mode();
/* ADC16 common initialization */
init_common_config(conv_mode);
/* ADC16 read patter and DMA initialization */
switch (conv_mode) {
case adc16_conv_mode_oneshot:
init_oneshot_config();
break;
case adc16_conv_mode_period:
init_period_config();
break;
case adc16_conv_mode_sequence:
init_sequence_config();
break;
case adc16_conv_mode_preemption:
init_preemption_config();
break;
default:
break;
}
/* Main loop */
while (1) {
board_delay_ms(1000);
channel_result_out_of_threshold_handler();
if (conv_mode == adc16_conv_mode_oneshot) {
oneshot_handler();
} else if (conv_mode == adc16_conv_mode_period) {
period_handler();
} else if (conv_mode == adc16_conv_mode_sequence) {
sequence_handler();
} else if (conv_mode == adc16_conv_mode_preemption) {
preemption_handler();
} else {
printf("Conversion mode is not supported!\n");
}
}
}
它首先初始化了一些硬件和ADC相关的配置,然后从控制台获取了一个转换模式,并根据不同的转换模式进行不同的初始化操作。接着进入一个主循环,每隔1秒进行一次延时,然后根据不同的转换模式调用不同的处理函数进行处理。如果转换模式不被支持,会输出一个错误信息。整体来说,这段代码是一个ADC16的演示程序,根据不同的转换模式进行不同的处理。
代码总共配置了四种转换模式,根据选择的模式进行初始化
hpm_stat_t init_common_config(adc16_conversion_mode_t conv_mode)
{
adc16_config_t cfg;
/* initialize an ADC instance */
adc16_get_default_config(&cfg);
cfg.res = adc16_res_16_bits;
cfg.conv_mode = conv_mode;
cfg.adc_clk_div = adc16_clock_divider_4;
cfg.sel_sync_ahb = (clk_adc_src_ahb0 == clock_get_source(BOARD_APP_ADC16_CLK_NAME)) ? true : false;
if (cfg.conv_mode == adc16_conv_mode_sequence ||
cfg.conv_mode == adc16_conv_mode_preemption) {
cfg.adc_ahb_en = true;
}
/* adc16 initialization */
if (adc16_init(BOARD_APP_ADC16_BASE, &cfg) == status_success) {
/* enable irq */
intc_m_enable_irq_with_priority(BOARD_APP_ADC16_IRQn, 1);
return status_success;
} else {
printf("%s initialization failed!\n", BOARD_APP_ADC16_NAME);
return status_fail;
}
}
采样精度设置为16位,时钟预分频为4分频模式。
这里我只测试了读取转换模式,模式配置和处理函数如下:
void init_oneshot_config(void)
{
adc16_channel_config_t ch_cfg;
/* get a default channel config */
adc16_get_channel_default_config(&ch_cfg);
/* initialize an ADC channel */
ch_cfg.ch = BOARD_APP_ADC16_CH_1;
ch_cfg.sample_cycle = 20;
adc16_init_channel(BOARD_APP_ADC16_BASE, &ch_cfg);
adc16_set_nonblocking_read(BOARD_APP_ADC16_BASE);
#if defined(ADC_SOC_BUSMODE_ENABLE_CTRL_SUPPORT) && ADC_SOC_BUSMODE_ENABLE_CTRL_SUPPORT
/* enable oneshot mode */
adc16_enable_oneshot_mode(BOARD_APP_ADC16_BASE);
#endif
}
void oneshot_handler(void)
{
uint16_t result;
if (adc16_get_oneshot_result(BOARD_APP_ADC16_BASE, BOARD_APP_ADC16_CH_1, &result) == status_success) {
if (adc16_is_nonblocking_mode(BOARD_APP_ADC16_BASE)) {
adc16_get_oneshot_result(BOARD_APP_ADC16_BASE, BOARD_APP_ADC16_CH_1, &result);
}
printf("Oneshot Mode - %s [channel %02d] - Result: 0x%04x\n", BOARD_APP_ADC16_NAME, BOARD_APP_ADC16_CH_1, result);
}
}
结果处理函数:
hpm_stat_t adc16_get_oneshot_result(ADC16_Type *ptr, uint8_t ch, uint16_t *result)
{
uint32_t bus_res;
/* Check the specified channel number */
if (ADC16_IS_CHANNEL_INVALID(ch)) {
return status_invalid_argument;
}
bus_res = ptr->BUS_RESULT[ch];
*result = ADC16_BUS_RESULT_CHAN_RESULT_GET(bus_res);
if (ADC16_BUF_CFG0_WAIT_DIS_GET(ptr->BUF_CFG0)) {
if (!ADC16_BUS_RESULT_VALID_GET(bus_res)) {
return status_fail;
}
}
return status_success;
}
程序调试:
连接板子并且打开串口,下载程序,
运行,打开串口助手,输入1进入直接转换模式。
这里我给板子随便接个传感器看看采样数据是否变化,
可以观测到实际采样数据
三、总结
先楫HPM5361EVK的ADC功能非常出色!它提供了高精度、高性能和可靠性,能够准确地转换模拟信号为数字数据。其高分辨率和低噪声特性使其在各种应用中表现出色。两个16位的高精度ADC可以满足大多数实际工程需要,四种采样模式也可以满足不同用户的需求。
- 2023-11-27
-
发表了主题帖:
先楫HPM5361EVK开箱测试及Segger Embedded Studio环境搭建
## 一、开箱体验
想象一下,当你拿到一块全新的开发版时,你会如何第一时间打开它,期待着发现其中的精彩。感谢先楫半导体和eeworld给我的评测机会。今天我将和大家分享我收到的先楫HPM5361EVK开发版的开箱测试及环境搭建过程,希望能为大家带来一些有价值的信息和体验分享。
### 1.首先是板子介绍,
先楫HPM5300系列开发版是一款基于高性能RISC-V内核的通用MCU开发板。
卡板正面图:
针脚布局好评,做工也是非常不错的,接口标识清晰明了。
**主要参数和功能:**
这里放一张官方介绍图:
**高性能处理器**:主频达到480MHz,支持双精度浮点运算及强大的DSP扩展,相较于M4处理器有更强的性能表现。
**大容量存储**:内置1 MB Flash和288KB SRAM,满足大规模应用程序和数据存储需求。
**强大的模拟部分**:集成16位ADC、12位DAC以及运放,支持各类位置传感器,包括光电式、磁感应和旋转变压器,为传感器数据采集提供了便利。
**多功能接口**:配置两个八通道的PWM模块,引入了可编程逻辑单元(PLB),提供多种可灵活配置的接口,包含4路CAN-FD、4路LIN、多路UART/SPI/I2C以及USB OTG内置HS PHY,满足各种接口类应用需求。
HPM5300EVK是一款功能丰富的开发板,提供了丰富的外设接口和便利的调试功能:
1. ==**ADC输入SMA接口和电机控制及传感器接口:HPM5300EVK提供了一个ADC输入SMA接口和一个先楫标准的电机控制及传感器接口,方便用户进行模拟信号输入和电机控制、传感器接口的评估和应用。**==
2. ==**2x20 pin IO扩展接口:集成了HPM5300 MCU的大部分IO,用户可以通过该接口自由评估和扩展开发板的功能和外设。**==
3. ==**板载调试器:集成了板载调试器,用户可以方便地进行开发板的调试和程序烧录,提高开发效率。**==
4. ==**标准JTAG接口:提供了一个标准JTAG接口,可以连接JLINK、DAPLINK等调试器,方便用户进行更灵活的调试和开发操作。**==
HPM5300EVK开发板在外设接口和调试功能上提供了丰富的选择和便利的使用体验
最关键的点:
**运动控制系统:**
• 2 个 8 通道 PWM 控制器。
• 多种运动传感器接口,包括增量式和绝对值位置传感器接口,旋转编码器接口和磁编码器接口。
• 脉冲式位置输出接口和绝对值位置输出接口。
• 运动和位置控制单元。
• 可编程逻辑单元 PLB。
1)开发板可以支持多个PWM输出,可以用于控制多个电机或执行器,实现精确的脉冲宽度调制,从而进行精确的运动控制。
2)多种运动传感器接口:开发板可以与各种类型的运动传感器进行连接和通信,从而实现对位置和运动的精确感知和控制。
3)脉冲式位置输出接口和绝对值位置输出接口:开发板可以输出脉冲式位置信息和绝对值位置信息,实现对位置信息的准确输出和控制,适用于各种需要精确位置控制的应用场景。
4)运动和位置控制单元:集成了专门的运动和位置控制单元,可以提供更高级的控制功能,包括速度控制、位置控制等,为运动控制系统提供了更强大的支持。
5)可编程逻辑单元PLB:开发板具有可编程的逻辑资源,用户可以根据具体的应用需求进行自定义逻辑设计和控制,从而实现更灵活的功能扩展和定制化控制。
综合来看,这些关键点表明HPM5300EVK开发板在运动控制系统方面具有丰富的适应性,适用于各种运动控制和位置控制应用的开发和评估。
HPM5300EVK开发板在运动控制系统方面具有非常强大的功能和灵活性。
```
**************************************************************************************************************************
```
### 2.软件资料
这次官方提供的资料也是相当丰富的
放一下官方提供的链接,有需要的可以下载。
链接:[https://pan.baidu.com/s/1RaYHOD7xk7fnotmgLpoAlA?pwd=xk2n](https://)
提取码:xk2n 复制这段内容打开「百度网盘 APP 即可获取」
用户手册:
数据手册:
部分原理图:
## 二、开发环境搭建
目前很多IDE都是支持HPM5300系列开发的,如 Segger Embedded Studio 、RT-Thread Studio 、还有基于vscode开发等都可以用来项目开发。目前我使用Segger Embedded Studio进行开发测试。
### 1.软件安装
Segger Embedded Studio可以去官网下载;
下载链接:[https://www.segger.com/downloads/embedded-studio/](https://)
选择Embedded Studio for RISC-V
安装教程可以在网上找。
### 2.创建工程
解压SDK到你熟悉的位置(注意最好不要有中文)
打开start_gui.exe,使用gui界面创建样例工程
### 3.编译调试
编译后可以看到程序所占资源大小
连接板子调试,连接成功后打开设备管理器可以看到端口,由于我现在手里只有一个type-c线,因此选择使用FT2232调试。
如果没有的话重新装驱动
启动调试,打开串口查看,同时可以看见LED灯不停闪烁(间隔1000ms)