• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

算法是什么,为什么只在DSP上验证,单片机不行么?

6b78a8c6c8ffe067 2019-11-02 浏览量:969
算法是什么,为什么只在DSP上验证,单片机不行么?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 简单来说,算法是解决一个问题的方法。简单的问题,算法当然不会那么复杂,几句即可,当困难的问题,就不是那么容易了,大部分是需要结合数学知识以及一些巧妙的思路。当然,这么说比较空洞,因为我是做电机矢量控制,所以就用电机控制算法来举例:


    例如无感BLDC的FOC,主要核心的几个算法是:状态观测器,坐标变换,快速反正切或PLL锁相环,电流环PID,转速换PID。因为电机控制是一个强实时性系统,所以算法程序基本都是在中断中完成。电机PWM载波频率一般选择的15k以上,ST,Microchip等选用的载波频率都是16k,假定我们选择的是16k频率,那么PWM周期就是62us,电机的电流采样也是跟着PWM同时采样的,所以周期也是62us,在ADC完成中断中,需要进行FOC计算,也就是说,在62us为周期的中断中,要计算状态观测器,坐标变换,快速反正切或PLL以及电流环PID。那么问题就来了,芯片能否胜任这个工作,在62us这么短的时间内,计算这么多东西。


    这便涉及到计算能力的问题,以及一些数学公式的优化。如果用DSP,或者有集成硬件浮点运算的芯片,当然优势会很大,就不用花过多时间在数学公式优化上,DSP无疑是比较好的选择,当然,这样成本就上去了,可能量少的话,不会在意这几块钱,或者几十块钱,如果量大呢,就需要综合考虑,如果这个项目出货量有10万块板子,如果每个板芯片都贵5块钱,那么总的成本就多50万。


    算法在DSP上进行验证,是因为硬件帮你做了数学上比较复杂的运算,让你可以把精力放在算法研究上,当然,这也只是验证,用DSP验证算法,并不代表这个算法只能用DSP来实现。因为在实际项目中,成本还是需要考虑的,不仅成本,每个项目都有自己的运行环境,环境以及工程师自己的喜好都是芯片选型的考虑因素。在实际中,往往考虑成本以及其他因素,会选用单片机,因为它便宜,就拿FOC来说,我用的STM32F103,硬件浮点运算也没有,主频72M,在这种情况下,就需要我自己写了一个定点运算的数学库,包括定点运算的Q格式,全整数实现反正切计算,全整数计算开方等等数学函数,使用C语言浮点运算的math.h,程序肯定会死机的,除此之外,程序也不能随意编写,大量运用了指针,因为使用指针会加快运算速度。所以如果是没有浮点运算的,那么你就要考虑这些,包括C语言的加快程序运算的知识,还要自己编写一个定点运算的数学库(当然,你能移植也可以)。这样就比较消耗你的精力了,你不仅要考虑算法的正确性,还要考虑这些杂七杂八的东西。


    综上,在验证算法上,使用DSP来验证算法,是比较好的选择,因为你的目的是验证算法,检验算法正确性。在实际生产上,就需要多方面考虑,不能单单的说,单片机做算法不行,而是根据自己项目的实际情况而定。以上是个人观点,仅供参考,有不同意之处,多多交流。

    • 发布于 2019-11-04
    • 举报
    • 评论 2
    • 1
    • 0
fa40568202e26440 回复了 KVIN:写的太好了! 回复
KVIN 回复了 fa40568202e26440:多谢,一家之言,能有点帮助就好 回复

其他答案 数量:3
  • 算法也分简单和复杂,处理千万级别的数据,单片机也行啊。但是你要考虑效率啊。如果用DSP只要一秒钟,但是单片机要十分钟才行。那你还用单片机吗?

    不是不行,只是没有意义!

    • 发布于2019-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 算法是为了完成一定功能,实现输入量与输出量的转换的一种方法

    DSP和单片机都可以验证算法,不过DSP针对某些算法,比如傅里叶变换,提供了硬件加速

    • 发布于2019-11-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 算法就是针对你的控制系统写入的过程控制程序,一般来说都是在PC或者DSP上验证,因为单片机的算力太低,运行速度太慢
    • 发布于2019-12-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

算法是什么,为什么只在DSP上验证,单片机不行么?