- 2023-09-22
-
回复了主题帖:
【HC32F448测评】+用高级定时器6输出PWM
freebsder 发表于 2023-9-21 20:07
没有直接干的库函数吗?好复杂
这就是库函数呀
- 2023-09-20
-
回复了主题帖:
【HC32F448测评】终篇
freebsder 发表于 2023-9-20 19:08
希望国产越做越好!支持!
是的呢
- 2023-09-16
-
回复了主题帖:
【HC32F448测评】+DSP库配置+FFT分析
学学学学学学学 发表于 2023-9-16 12:06
为什么我按着你上面的配置结果到stack那一步会报很多的错,报的错是有写东西重复定义,有些没定义
具体是怎么样的
- 2023-09-15
-
回复了主题帖:
【HC32F448测评】+ADC采样+FFT分析
学学学学学学学 发表于 2023-9-15 12:06
可以下载个VOFA,能自己画图
有空我去试试
-
回复了主题帖:
【HC32F448测评】+ADC采样+FFT分析
lugl4313820 发表于 2023-9-15 12:35
如果这样的话,实时性会受影响吗?
会有影响的 所以像示波器会有死区时间 这个时间就是不采样 只显示 所以只能做到死区时间越来越短 也就是波形刷新率提高
-
回复了主题帖:
【HC32F448测评】+ADC采样+FFT分析
dmzdmz666666 发表于 2023-9-15 10:22
快了也会打断ADC采样 所以一般是采样好 再显示 跟示波器一样
不知道 还没有研究
-
回复了主题帖:
【HC32F448测评】+ADC采样+FFT分析
lugl4313820 发表于 2023-9-14 17:04
楼主很强呀,串口的话你把速率搞高点,应该没有什么压力吧。
快了也会打断ADC采样 所以一般是采样好 再显示 跟示波器一样
- 2023-09-13
-
回复了主题帖:
【HC32F448测评】终篇
Jacktang 发表于 2023-9-13 07:25
有一些未知的Bug难免,就是试错成本高点
有时候就是不知道是Bug导致 还是自己程序没配置好导致 就很难受 卡在那里
-
回复了主题帖:
【HC32F448测评】+DSP库配置+FFT分析
观赏桃 发表于 2023-9-13 16:27
有没有测过完成一次FFT需要多少时间呢?
这个倒是没有测过
- 2023-09-12
-
回复了日志:
是的 现在叫小华半导体 这是华大半导体的MCU事业部
-
回复了主题帖:
【HC32F448测评】+ADC采样+FFT分析
火辣西米秀 发表于 2023-9-12 07:29
同时开启定时器输出PWM波和FFT会死机,这个先开一个,慢慢增加,看看问题是哪个方面造成的
主要现在没时间搞这个 下次有空再研究研究
- 2023-09-11
-
发表了日志:
【HC32F448测评】终篇
-
发表了主题帖:
【HC32F448测评】终篇
第十篇:终篇
对HC32F448的测评告一段落了,接下来讲一下我的个人体会,仅代表我个人哦。
优点:
宏观:
资料公开透明,基本齐全,且均提供中文版;提供的例程相对丰富,有利于本土开发者使用。立足本土,放眼海外
小华半导体的MCU产品线相对丰富,包含通用控制、电机控制、低功耗和车规,每款型号均有多种规格可以选择。
针对F460和F4A0型号有对应的初始化代码生成器,XHSC XHCode Setup.zip,类似于STM32的CubeMX,虽然没用过,但是有就好评。
微观:
通讯引脚可以很方便的在GPIO上映射,有利于后期PCB布局。
各个模块介绍相对完整。
不足:
个人觉得最大的问题也是国产MCU厂家共同的问题,就是生态。一方面虽然提供了数据手册、参考手册、勘误手册等,但是有些外设更加具体的用法没有介绍,像DMA、定时器、ADC等。以至于可能就是一两个配置没配置对或者理解错误,导致功能无法运行。虽然有提供较多的例程,但不是所有细节都能概括的。另一方面因为国产MCU相对用的人较少,所以开发资料也很少,对一些模块的驱动都需要自己编写,耗时耗力。
提供技术支持的渠道和时效不理想。官网提供了技术咨询的邮箱和电话,但是像程序这类电话咨询不方便,邮箱个人感觉时效性不高,因为我有个问题发到他们邮箱3天了,但还是没有消息,虽然人家可能比较忙,也没有义务帮你解答,但是一些小问题只需要厂家稍微指导一下,开发者就能豁然开朗,对开发者和厂家其实都是有利的,虽然我是个人开发者,但是选用了你们的产品,你们也不能不太重视吧,技术肯定是原厂就权威。除非你们的目标就是面对大客户。
最后,我当然相信认真设计MCU的企业给他们一定的时间会做的更好,会推出更多的应用笔记、编写更加实用的例程,更加实用的工具。像STM32的生态也不是一朝一夕就建立起来的,也是ST的工程师和无数开发者的共同努力下才越来越完善的,市面上有大把大把的资料和现成工程,还有针对越来越复杂外设配置的CubeMX等。现在工程师吐槽国产最多的就是资料太少了,使用成本过高,同时由于推出时间较短,可能还有一些未知的Bug,这个试错成本对于开发时间有限的使用者来说是比较高的,所以需要厂家共同努力,毕竟MCU设计起来是要有人用的,不好用或者很难用会直接不采用这款MCU而选择成熟、资料多的国外MCU,这对于厂家也是不利的。 最后,我还是很看好小华半导体的,也希望我以后遇到问题,实在解决不了,还有求助于原厂的机会,共同努力,谢谢
-
发表了主题帖:
【HC32F448测评】+ADC采样+FFT分析
第九篇:ADC采样+FFT分析
接上一篇的配置,上一篇已经配置好DSP库了,接下来测试利用ADC采集模拟数据进行傅里叶分析。
首先参考例程对ADC进行配置,ADC的参数相对简单,需要注意的是它的时钟,它有两个时钟,包含转换时钟PCLK2,数字接口时钟PCLK4。转换时钟PCLK2有三个时钟源,包括系统时钟、PLLHQ、PLLHR,如果采用系统时钟,最高主频为50MHz,如果采用PLLHQ、PLLHR可以通过PLL倍频到60MHz,PCLK4与PCLK2一样,也有三个时钟源,这里为了方便,均采用系统时钟,PCLK2=50MHz,PCLK4=100MHz
ADC有好几种扫描模式,单次扫描、连续扫描、缓冲扫描等,这里我们选择连续扫描模式:stcAdcInit.u16ScanMode=ADC_MD_SEQA_CONT;
同时触发源选择软件触发:
ADC_Start(CM_ADC1);
然后循环运行以下程序:查询状态位,然后清零,读取数据。
while(ADC_GetStatus(ADC_UNIT, ADC_EOC_FLAG) != SET);
ADC_ClearStatus(ADC_UNIT, ADC_EOC_FLAG);
ADC_DATA[ADCnum]=ADC_UNIT->DR10;
因为目前做不到实时分析,所以只能当数据满1024时,再进行FFT分析。输入一个1KHz方波,下图是ADC测得的波形
然后对该数据进行FFT分析,取前64个数据进行作图,可以发现有多个频率的信号,除了1KHz的基波,还有3KHz的3次谐波,5KHz的5次谐波等,这符合方波的特性:由多个频率的正弦波叠加而成。
下图是虚拟示波器测出来的波形及FFT分析的结果,基本一致。
上述是我目前能做到的效果,由于还没有解决下面提到的问题,还没办法实现更加实用的FFT效果:
1、没有通过DMA传输ADC数据的问题,因为没有解决相关问题,用DMA还不太熟,无法一次性转移如1024个ADC数据。
2、开启ADC的转换完成中断(ADC_INT_EOCA)后发现会卡死,会导致开发板上面的按键无法使用,主要原因可能是中断冲突,HC32的中断是很强大,但理解起来对我而言还是很吃力的,后续有机会要去研究一下。
3、发现同时开启定时器输出PWM波和FFT会死机,不知道为什么,还有一点,感觉FFT不太稳定,跟其他多个外设一起开会有问题,有机会也要研究一下。
4、因为波形都是通过串口输出数据,然后Excel画图,要更加直观的话需要显示在LCD上或者实时传输到上位机,上位机实时画线,这个要求更高,因为就类似于示波器了,要花更多的时间。
-
发表了日志:
【HC32F448测评】+ADC采样+FFT分析
-
发表了日志:
【HC32F448测评】+DSP库配置+FFT分析
-
发表了主题帖:
【HC32F448测评】+DSP库配置+FFT分析
第八篇:DSP库配置+FFT分析
这篇文章将来测评HC32F448的DSP库和FFT
HC32F448内核集成了FPU和DSP,支持完整DSP指令集,我们将用此进行FFT分析,关于FFT及傅里叶变换的相关知识,这里强烈推荐安富莱的《安富莱_STM32-V7开发板_第2版DSP数字信号处理教程(V2.7)》写的非常详细,非常好,给硬汉哥的开源精神点一个大大的赞
要使用DSP,要进行以下配置。
1、添加DSP库,这里我们可以通过CMSIS来配置,比较方便,这里使用的是1.8.0版本
2、然后点击魔术棒进行如下配置,要使能FPU,这样添加进来的lib就是arm_cortexM4lf_math.lib
4、添加对应的宏定义,使能FPU等功能,可以这么写 HC32F448,USE_DDL_DRIVER,__DEBUG,__TARGET_FPU_VFP,__FPU_PRESENT
5、修改stack的大小,stack负责存放函数的参数值,局部变量的值等,由编译器自动分配释放,具体的技术细节可以参考网络,这里就不再说了。因为FFT会涉及到比较多的参数传递和局部变量(我认为),所以要分配比较大的stack,具体是在startup_hc32f448.s进行修改,那具体要给多大呢,这里我自己的一个方法可以参考,不一定权威(参考正点原子的《MAP文件浅析》),但经过测试确实有用。我们在生成的工程里找到output文件夹,里面有 htm 文件,选择那个不是build_log的文件,我这里是Demo.htm
其包含了它是编译器在编译代码的时候生成的一个列表文件,包含了整个工程的静态调用图,最大的用处就是可以查看栈深度(最小深度),方便设置栈大小。可以直接由浏览器打开。
可以看到,程序的最大栈深度是17088字节,最大栈深时的调用关系为main ⇒ AdcPolling ⇒ FFT ⇒ arm_rfft_fast_f32 ⇒ arm_cfft_f32 ⇒ arm_cfft_radix8by4_f32 ⇒ arm_radix8_butterfly_f32 这也符合常理
不过需要注意的是,这里的最大栈深度仅仅是最低要求(静态栈),因为它并没有统计无栈深的函数(用内存管理)、递归函数、以及无法追踪的函数(函数指针)等所包含的栈(Stack)。
不过它给我们指明了最低需求,我们在分配栈深度的时候,就可以参考这个值来做设置,一般要高于静态栈不少。
我这里设置的FFT点数为4096,这种情况下stack应该是最多的,所以我这里就设置stack为Stack_Size EQU 0x00005000,有20KB这样在点数取小于4096时,stack也都是足够的。如果运行过程中发现程序卡死,出现HardFault_Handler,可能就是这个设置太小了,至少我遇到的是这种情况。
配置好以后,接下来是程序。
这里的程序比较简单,这里就不在赘述了,因为FFT具有对称性,所以最后输出的结果可以只取一半(主要不取一半的话会有问题,目前没法解决)
接下来验证一下,生成一个sin序列,包含一个直流分量,100Hz,200Hz,500Hz的波形,采样率为1024,具体如下
Input_Data_f32 =1+sin(2*3.141592f*100*i/FFT_N)+sin(2*3.141592f*200*i/FFT_N)+sin(2*3.141592f*500*i/FFT_N);
通过串口打印数据,下图是它具体波形
然后将其FFT分解,因为采样率为1024,点数为1024,所以其分辨率为1Hz,就是每一个数据就代表一个频率,下图中第1点,第100点 第200点 第500点有尖峰,说明其中含有对应频率的波形,与输入的原始波形所包含的频率一致,FFT正确。
- 2023-09-06
-
回复了主题帖:
【小华HC32F48测评】关于通用定时器time0、adc、DMA的学习与测试
请问上面的例程中对ADC的EOCF标志位是否需要清零,如果要 那程序在哪里呢
- 2023-09-02
-
回复了主题帖:
【HC32F448测评】+用DAC输出可调正弦波
lugl4313820 发表于 2023-9-2 11:24
至此,DAC输出正弦波就测评好啦,基本处于可用状态。
有时候专业的事还得专业的设备来做吧。
说的对 生成任意波还是交给DDS来吧
- 2023-09-01
-
发表了日志:
【HC32F448测评】+用DAC输出可调正弦波