C2000开发笔记-为什么选择C2000?
为什么选择C2000?当然是因为项目需要啦,目前水平不足以影响硬件选型。在接触C2000之前一直用STM32、HC32这类通用MCU。说到底只是工具罢了,用好芯片解决问题是我的目标。
1. 通用MCU vs C2000
花了些时间搞清楚后,也试着整理了一下。这里与其说是C2000与MCU的区别,不如说是DSP(Digital Signal Processing)与MCU的区别。
一句话来说,就是DSP是专门为实时控制设计的专用控制器,而MCU是通用控制器。
| 维度 | MCU(如STM32F103x) | DSP(如TMS320F280x) |
|---|---|---|
| 主频 | 72MHz | 60MHz |
| 内核 | ARM Cortex-M | TI自研C28x DSP内核 |
| 指令集 | 通用 | 针对控制算法优化(单周期MAC、并行指令) |
| 浮点能力 | 部分型号有FPU | 全系列标配硬件FPU(2837x以上) |
| 三角函数 | 软件库实现(慢) | 硬件指令(TMU,单周期sin/cos) |
| 可编程控制律加速器(CLA) | 无 | 独立并行协处理器,可单独跑控制算法 |
| PWM | 通用定时器 | ePWM |
| ADC | 12位, 支持1Msps | 12/16位, 能支持4.6Msps |
| … |
Q: DSP主频低,为什么会计算更快呢?有MCU主频能到200MHz,甚至更高
A: 内部集成了多个硬件加速器,像CAL(完全独立的32位浮点处理器,可以和主CPU并行工作)、TMU(三角函数加速器)、FPU(浮点单元)。并且采用多总线结构(哈弗总线架构)实现在一个单周期内取一个指令、读取一个数据值和写入一个数据值1。
2. 常见应用场景
光伏逆变、电机控制、数字电源等等。偏向于工业场景,高精度、对成本不敏感、实时性要求高的场景。
3. 选型
C2000系列产品众多,不同型号的特性差异不小。但作为软件开发者,咱们的选型关注点其实很简单:
- 库齐不齐?
- 调试好不好用?
- 文档清晰吗?
- 遇到问题能搜到答案吗?
- 芯片技术支持怎么样?
说实话,这些对选型的影响通常比性能/成本小。因为很多时候芯片是硬件定的,软件只能“硬着头皮上”。选到小众芯片,苦哈哈也得干。
一个现实:只有量大的客户,原厂才会提供贴身支持(甚至帮你开发)。普通玩家主要只能靠文档和论坛摸索。现在有AI,处境似乎好了一点点。
3.1 C2000的定位
C2000、C5000、C6000是TI的三大DSP分支:
| 系列 | 定位 |
|---|---|
| C2000 | 实时控制MCU(缝合怪:MCU外设 + DSP算力) |
| C5000 | 低功耗DSP |
| C6000 | 高性能DSP |
C2000的独特之处在于:它既集成了MCU的各类外设(PWM、ADC、通信),又保留了DSP的高速计算能力(FPU、TMU、CLA)。所以有人说它是“缝合怪”——我觉得这个评价很精准。
3.2 怎么选?
去TI官网看产品,几百个型号,各种参数、各种领域,根本不知道怎么选。
后来我想通了:抄就完了。
- 选资料多的型号,别选小众的
- 选社区活跃的型号,别选没人讨论的
- 选大厂量大的型号,别选“参数完美但没人用”的
怎么抄还得向友商们取取经。
相关笔记
参考资料
-
TI. (2024). C28x 架构和加速器概述. https://dev.ti.com/tirex4-desktop/content/c28x_academy_%E4%B8%AD%E6%96%871_00_00_00/_build_c28x_academy%E4%B8%AD%E6%96%87_1_00_00_00/source/c2000_overview/c2000_device_overview.html ↩