1. 为什么第十五届的“芯片选型”忽然成了所有人绕不开的话题
从第十五届备赛周期开始,智能车竞赛里的一个趋势变得非常明显:你打开官方通知后,第一件事不再是去翻上届学长传下来的代码,而是先去看“主控芯片”那一栏还能不能沿用老配置。我和逐飞这边不少带队老师、实验室队长聊过,大家的反应很一致——如果放在早几届,芯片选型根本不算选择题,因为赛题主控基本被长期的行业惯性固定在某一条线上,很多人甚至把“那家芯片”直接等同于智能车竞赛本身。但从第十五届前后开始,官方清单里能用的芯片一下子宽了许多,英飞凌、NXP、ST、国产系列都摆上了台面,大家反而慌了。
为什么“选择变多”反而会慌?因为大部分参赛队伍并不是芯片专家,大家需要的是一个“稳妥能跑、资料够多、坏了好换”的答案。以前默认只有一个标准答案,闭着眼睛抄上届配置就行;现在多选一,选错了影响的不只是买哪块板子,而是整个备赛周期里所有外设驱动、控制算法、调试工具的连带更换。更尴尬的是,第十五届这个特殊年份还叠加了疫情带来的线下备赛时间压缩,很多队伍连实物车都很少碰,根本没法通过跑圈来验证平台稳定性,所有判断只能靠纸面参数和网上帖子来定。
所以我才想在这个时间点“再谈”一次选题。第一轮分析文章里我们主要把官方目录列了一遍,告诉大家有哪些芯片可以用;但真正落地之后,你会发现同一个名字在不同组别、不同算法方案里的表现差异很大。第十五届里,同样一颗芯片,在四轮组做电磁循迹和在直立组做姿态解算,完全是两种难度;同样一颗芯片,放在大一新生和放在研究生学长手里,能发挥出的实际战斗力也完全不同。芯片选型从来不是“选最强的”,而是“选你在规定时间内真的能用好的”。
后来大家再去搜“第二十一届智能车竞赛规则”“第十八届四轮车开源讲解”这类话题时,里面最常被翻出来的问题依然是同一个:这个芯片到底够不够用?这恰恰说明,选型不是一锤子买卖,而是一条贯穿备赛始终的决策链。今天这篇,我就照着第十五届的实际场景,把这条决策链上的关键点重新过一遍。
2. 选芯片到底在选什么:从“主频”回到“资源地图”
很多队伍选型第一步是先看主频和 Flash,比如“这颗 200MHz,比原来那颗 100MHz 高了一倍,肯定更稳”。这个逻辑听起来没毛病,但放进智能车这个场景里,主频只是最表层的东西。真正决定一颗芯片能不能适配你的方案,要看的是它把外设资源摆在了哪些引脚上、这些外设能不能同时工作、中断优先级能不能满足你的控制周期。
2.1 先把整车的信号流画出来
我一般建议队员在打开芯片数据手册之前,先画一张最笨的信号图。以最常见的四轮摄像头组为例,车上大概有这么几路信号要进主控:
- 摄像头图像数据,可能是数字摄像头并口/DVP 接口,也可能是 SPI 接口,甚至有少量方案用串口传灰度;
- 编码器反馈,左右后轮各一路,通常用正交解码或者脉冲计数;
- 舵机控制 PWM,一路;
- 电机驱动 PWM,两路或者更多,取决于驱动方式;
- 按键、拨码开关、LED、蜂鸣器,至少占掉几个 GPIO;
- 蓝牙或者无线模块,至少要一个串口;
- 下载调试口,又占掉一个串口或者 SWD/JTAG 引脚。
这张图一画完,你需要的资源清单就出来了:至少两路定时器用于编码器,至少三到六路 PWM,一路硬件串口或多路串口,一定数量的 GPIO。然后再回头翻芯片选型表,你会发现不少标称性能很高的芯片,真正把引脚复用关系一查,反而会卡壳——比如你想用的三路 PWM 被分配到了同一个定时器的不同通道,而那个定时器同时又被编码器占用,这就产生了资源冲突。
2.2 比主频更值得注意的隐性资源
在实际调车过程中,有四个隐性资源经常被忽略,却在第十五届备赛里坑了很多人:
第一是 DMA 通道。摄像头组每帧图像数据量很大,如果用 CPU 中断一个字节一个字节地收,主频再高也会被拖死;这时候必须靠 DMA 把数据搬到内存缓冲区,等一帧收完再唤醒 CPU 处理。选型时如果发现那款芯片擅长高性能计算,但 DMA 通道数量少、或者 DMA 请求映射不够灵活,摄像头方案就可能很痛苦。
第二是中断响应的确定性。智能车控制周期一般做到 1ms 到 10ms 不等,电磁组甚至希望更快。如果芯片的中断嵌套、优先级设置很别扭,或者多个外设共享同一根中断线,你调控制周期的时候就会出现“明明代码没改,跑起来却偶尔抖一下”的诡异现象。
第三是 ADC 的稳定性和转换位数。电磁组需要采集多路电感电压,AI 视觉组可能还需要采集一些模拟量。标称 12 位 ADC 不代表实际噪声表现就好,很多时候供电纹波一大,低几位全是乱跳。选型时最好看一下芯片内置 ADC 的参考电压源、采样保持电路以及是否支持多路同步采样。
第四是串口数量和引脚的可用性。这一点最土,却最致命。你辛辛苦苦把算法调完了,突然发现剩下的引脚不够再接一个无线透传模块,或者下载调试口和某个传感器引脚复用冲突,最后只能飞线或者改板。第十五届里很多队伍的“芯片不够用”,其实就是“引脚安排不过来”,而不是“性能不够”。
2.3 和队友能力匹配也是硬指标
所谓选型,还要把队伍里谁会写代码、谁会画板子、谁会查手册这些因素算进去。有的芯片性能确实强,但寄存器手册几百页,工具链配置复杂,如果队伍里没人用过这种内核,光是点亮一颗 LED、跑通一个串口就要折腾两周,后面算法根本没时间调。反过来,如果队伍里有人对某颗芯片的库函数和踩坑经验非常熟,哪怕这颗芯片账面参数低一些,整体出车的效率也会高很多。这也是为什么很多实验室会形成“传承”,上一届用哪颗,下一届继续用同一颗,不是因为懒得换,而是因为踩坑经验本身就是最宝贵的生产资料。
3. 第十五届的英飞凌线:TC264、TC364、TC377怎么选才不冤
第十五届里英飞凌 AURIX 系列算是一个明显的上升势力。原因也不难理解:一方面,官方目录给了英飞凌平台正式身份;另一方面,逐飞这边和不少同行围绕 TC264 等芯片做了大量开源库、核心板和例程,把上手门槛拉低了一大截。于是许多队伍第一次从传统的单一平台转向 AURIX,就成了第十五届一道特别的风景线。
3.1 TC264:第十三、十四届积累下来的“黄金中庸”
TC264 在队伍里的口碑非常稳。它的定位大致是这样:双核 TriCore 架构,主频在同级别里并不算夸张,但面向电机控制、车身电子这类场景的外设设计非常齐全。对四轮组、直立组、信标组来说,TC264 更像一个“什么都能干、什么都不太偏科”的选手。很多队伍一个核跑主循环和控制算法,另一个核专门收图像、做预处理,跑起来有余量,写代码的逻辑也清晰。
如果你问我第十五届备赛最推荐的起步配置,我大概率还是会说 TC264。倒不是因为它账面数据最漂亮,而是因为它在“性能、资料、功耗、封装、价格、学习成本”这几项里的综合分最高。逐飞开源库对它的支持也比较完整,从 GPIO、串口、定时器、编码器到摄像头采集都有现成例程,大一学生照着例程改,一周内就能让小车动起来。这种“短时间能出活”的属性,在疫情压缩备赛周期的大背景下,价值比什么浮点运算能力都高。
3.2 双核任务划分:最容易想当然的地方
TC264 是双核,很多队伍拿到板子第一反应是“两个核肯定比一个核快”。实际用起来才发现,双核带来的第一波工作量不是性能提升,而是任务划分。你需要想明白:哪个核负责控制闭环,哪个核负责图像处理,两个核之间怎么通信,共享的外设(比如同一个 ADC、同一个定时器)由谁初始化、谁来读。
我见过不少队伍在这里翻车。有人把所有初始化都放在核 0,结果核 1 使用的某个外设根本没被正确初始化;有人把控制算法放在核 1,但中断服务函数却注册在核 0 上,导致响应延迟忽高忽低。正确的做法是:先把每个外设的使用者和数据流向标清楚,再决定挂在哪个核上,最后通过核间通信机制(邮箱或者共享内存加标志位)传递关键数据。最稳的分配方式往往是“一个核做实时控制,绝不处理大数据;另一个核做图像采集和运算,绝不直接驱动执行机构”。
3.3 TC364、TC377:更强的芯片不一定等于更好的成绩
TC364 和 TC377 在第十五届也有不少队伍尝试。TC364 可以理解为 TC264 的加强版,外设资源更丰富,适合传感器数量多、信号种类杂的方案;TC377 则是更高一档的存在,双核加上更充沛的内存和外设,看起来完全能支撑更激进的算法。
但这里我要泼一盆冷水:更强的芯片,在备赛时间有限的情况下,往往意味着更大的麻烦。TC377 这类高规格芯片的电源要求更严格,核心电压和 IO 电压的时序配合、去耦电容的布局都有讲究;它的引脚更多、封装更复杂,手工焊接和飞线难度直线上升;工具链配置、启动文件、链接脚本这些底层内容,也远比一颗简单芯片要繁琐。很多队伍把 TC377 拿回来以后,第一周全在跟编译器和下载器较劲,第二周才发现自己连电机都还没转起来。
换句话说,TC264 是“你写代码,它干活”;TC377 在某些情况下会变成“你花时间伺候它,然后才有机会让它干活”。不是反对你用更高端的芯片,而是强调一个判断标准:如果你的算法复杂度还没有把 TC264 的资源吃满,换 TC377 大概率不会让你的成绩变好,只会让你的调试时间变长。第十五届的赛场上,拿好成绩的队伍里不乏用 TC264 的,而用 TC377 却因为底层问题早早淘汰的例子同样不少。
4. NXP 线、ST 线、国产线:另外那半张名单,绝不是陪跑
很多队伍一看英飞凌热度高,就把目录里其他选项全忽略了。实际上,第十五届的选型目录里,NXP、ST 和国产芯片都留了明确的位置。这些平台不一定是最优解,但在特定场景下完全可能比英飞凌更适合你。
4.1 NXP 的“老将”价值
NXP 平台在智能车竞赛里算是老面孔了。过去很长一段时间,比赛主控被限制在一个比较窄的范围里,大量现成代码、老学长笔记、培训机构资料都围绕 NXP 体系积累下来。到了第十五届,NXP 依然凭借“资料多、有人教、踩坑案例全网都能搜到”的优势,吸引了不少求稳的队伍。
NXP 的典型代表大概是 Kinetis 系列里的某些型号,比如 K60 这类 M4 内核的芯片。以今天的眼光看,它的主频和外设不算惊艳,但如果你做的是基础四轮、基础电磁这类相对传统的组别,控制逻辑本身不复杂,资源完全够用。更关键的是,老平台的老问题几乎都被前人趟平了:下载器怎么接、供电怎么处理、PWM 频率怎么配、摄像头 DMA 怎么收,网上随便一搜就是十几篇帖子。对一支没有“大神带队”的队伍来说,这种确定性和安全感,有时候比性能参数更重要。
4.2 STM32:生态强大,但要看用在哪个组
STM32 能出现在选型目录里,让很多从纯嵌入式学习背景过来的队员特别开心,毕竟学校里单片机课用的就是它。STM32 的生态确实无与伦比:中文资料极多、HAL 库和 LL 库各有拥趸、各种传感器例程遍地都是、IDE 选择也灵活。如果你让我推荐“学习成本最低的平台”,STM32 大概率是第一选项。
但放进智能车竞赛的特定场景,STM32 并不是万能答案。在部分强实时、多路传感器同步采集的组别里,STM32 某些型号的定时器、DMA 和外设组合,用起来会比特意面向电机控制场景设计的芯片更别扭。如果你选的是 AI 视觉组、创意组这类更偏算法实现和功能验证的赛项,STM32 的生态优势就能发挥得淋漓尽致;如果你选的是传统竞速组,追求极致控制周期和传感器同步,那 STM32 的适配工作可能比想象中多。做决定之前,先想清楚你到底是在做“嵌入式应用”还是在做“实时控制”。
4.3 国产芯片:价格和供货都是优势,但要有心理准备
第十五届目录里能看见国产芯片,对很多队伍来说是新鲜事。国产芯片在这类场景里的最大优势是价格便宜、供货稳定、上手资料也越来越全。在一些不需要太高性能、又希望多备几块板子防止烧毁的组别里,国产芯片能帮你省下不少预算。
但选择国产芯片也要做好心理准备:它的生态还在成长中,你遇到一个冷门 bug 时,能搜到的解决方案可能比老平台少很多;部分型号的库函数或底层驱动还不完善,需要你自己去啃参考手册。如果你队伍里有擅长读手册、愿意折腾底层的人,国产芯片完全可以是性价比之选;如果全队都指着现成例程,那就要谨慎一点。
4.4 三类平台的直观对比
为了帮大家快速建立判断框架,我把三条线放在一起对比一下:
| 维度 | 英飞凌 AURIX 线 | NXP 老平台线 | ST / 国产线 |
|---|---|---|---|
| 性能上限 | 高,TC377 级别余量很大 | 中等,满足传统组别有余 | 取决于具体型号,跨度大 |
| 资料生态 | 逐飞等开源库加持,近年增长快 | 年深日久,踩坑帖极多 | 通用资料极丰富,竞赛专项偏少 |
| 上手难度 | 中等,双核需要额外学习成本 | 低,很多代码可直接抄 | 低到中等,IDE 友好 |
| 赛事适配 | 竞速属性强,适合四轮、直立、信标 | 适合稳定出车的传统方案 | 适合 AI 组、创意组、功能验证 |
| 试错成本 | 板子和工具链相对贵一点 | 老型号价格平稳 | 国产便宜,ST 居中 |
这张表不是让你只看最后一列,而是提醒你:选型是把自己的队伍特点放进这些维度里做匹配。没有什么“所有人都该用某颗芯片”的答案,只有“你们这支队伍用某颗芯片最顺”的答案。
5. 我从第十五届备赛里带出来的选型避坑清单
最后这部分,我把它写成一份可以直接拿去对照的清单。里面的每一条,几乎都对应着我在第十五届备赛期间亲眼见过或者亲身踩过的坑。
5.1 先查引脚映射,再决定性能够不够
选芯片型号时,第一件事不是比主频,而是把你要用的外设逐项列出来,然后在参考手册的引脚复用表里逐一确认。最常见的问题是:某芯片功能很强,但有两路编码器接口和你要用的 PWM 通道冲突,或者摄像头并行数据引脚和调试下载口重叠。这种问题一旦发生,要么换芯片,要么重新画板,伤筋动骨。花半天时间做一张“外设到引脚”的映射表,能救你后面两个月。
5.2 电平、电源、下载口三件套,开赛前就要确认
智能车上的外设五花八门,有 3.3V 的传感器,有 5V 的舵机,还有 12V 的电机驱动逻辑端。很多芯片 IO 不能容忍 5V,直接接舵机信号线可能把一个引脚甚至整颗芯片烧掉。我的习惯是:所有可能的高压信号全部经过电平转换或者隔离,绝不赌“应该没事”。电源方面,主控板最好独立供电或者做好隔离,避免电机启动瞬间的压降把主控拉复位。下载口方面,我强烈建议至少留出两个独立串口:一个用于程序下载和调试,另一个接无线模块或者上位机。如果你只有一组串口,调试到后期会非常痛苦,插拔线材的频率高到你想摔板子。
5.3 备用芯片和焊接方案,属于选型的一部分
赛场上烧芯片太常见了。如果你的芯片封装是那种脚距极小的 BGA,那现场手焊几乎不可能,返修要多麻烦有多麻烦。选型的时候一定要考虑:这颗芯片有没有容易焊接的封装版本?队伍里有没有人能焊?实验室有没有热风枪?如果答案都是否定的,那这颗芯片哪怕性能再强,我也建议你谨慎。第十五届里我见过不止一支队伍因为核心板烧了又买不着急件,最后直接退赛。选型不是在选“你理想中的最强芯片”,而是在选“你能稳定拥有并快速替换的芯片”。
5.4 别把“别人说好”当成“你用得好”
智能车竞赛圈子有一个很有趣的现象:某一颗芯片在热帖里被夸得天花乱坠,下一届就有大量队伍无脑跟进。但芯片好不好用,和“你自己会不会用”强相关。同样一颗 TC264,有人三天出车,有人三个星期还在跟编译器搏斗。在跟风之前,先问自己三个问题:队伍里有没有人用过类似内核?遇到问题时能在多少小时内找到人问?这颗芯片的库函数和例程,你是否愿意花时间仔细读一遍?如果这三个问题都让你犹豫,那这颗芯片很可能不适合你的队伍。
5.5 把选型当成一个“会延续到下一届”的决定
第十五届的选型影响的不只是第十五届。很多实验室的传承路径就是这样的:第十五届用了某个平台,第十六届的学弟学妹会顺着这套代码继续改;到了第十八届,还有人翻出第十五届的开源讲解视频和例程来学习。你在选型时多花一点时间做的判断,实际上是在给实验室未来两三届铺路。选一颗资料全、有人教、可持续开发的芯片,比选一颗账面性能最高但可能“后继无人”的芯片,要有价值得多。
我在逐飞这边做支持工作这些年,最大的体会就是:芯片选型没有标准答案,只有最优解。最优解不是从芯片数据手册里算出来的,而是从你们队伍的备赛时间、技术积累、组别需求共同推导出来的。第十五届的选型讨论过去这么久,这些问题到了第二十一届还会被反复问,说明它本来就是智能车竞赛里最值得花心思的一环。希望这篇梳理能帮你在下一块核心板下单之前,想清楚自己到底需要什么。