第一章:行业背景与开发环境搭建
各位同学好,我是你们这门课的老朋友。做充电桩固件开发这些年,踩过的坑比吃过的盐还多。今天咱们先聊聊行业背景和环境搭建,这部分看似基础,但说实话,很多人一开始没重视,后面吃了大亏。
1.1 充电桩行业标准概览
做充电桩,第一件事不是写代码,而是搞清楚你要遵守什么标准。我见过不少团队,代码写得飞起,结果拿到认证机构一测,直接打回重做。为什么?标准没吃透。
目前全球主流的充电标准有三套:
- 国标GB/T 18487:国内必选,2015版之后加入了CAN总线通信协议。我个人习惯是先把国标里的物理层和协议层啃完,再动手。
- 欧标CCS(Combined Charging System):欧洲主流,支持交流慢充和直流快充。CCS用的是PLC(电力线载波)通信,和国标的CAN完全不同。
- 美标CHAdeMO:日本主导,早期电动车用得比较多。现在新项目很少选它了,但存量市场维护还是需要的。
核心要点:不管你选哪个标准,一定要先拿到最新的标准文档。我在项目中遇到过,客户拿着旧版标准来验收,结果我们按新版做的,双方扯皮了两个月。
1.2 主流MCU平台选型
选MCU就像选工具,没有最好的,只有最合适的。我这些年用过STM32、ESP32、NXP,各有各的脾气。
| MCU型号 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|
| STM32(如F4/H7系列) | 生态成熟,资料多,CAN外设丰富 | 价格偏高,供货不稳定 | 国标充电桩主控 |
| ESP32 | 自带WiFi/蓝牙,价格低 | 工业级可靠性一般,CAN需外扩 | 家用交流桩、数据采集 |
| NXP(如i.MX RT系列) | 性能强,支持多协议栈 | 开发门槛高,工具链复杂 | 欧标CCS、大功率直流桩 |
嗯,这里要注意:不要盲目追求高性能。我见过有人用i.MX RT做交流桩,结果成本翻了三倍,性能还过剩。说白了,够用就好。
1.3 开发工具链安装
工具链这块,我建议统一用开源方案。为什么?因为商业IDE的许可证费用,小团队扛不住。而且开源工具链的社区支持,其实比你想的要好。
1.3.1 ARM GCC
ARM GCC是目前最主流的交叉编译器。安装很简单,但要注意版本匹配。我曾经因为GCC版本太新,导致生成的代码在旧版Cortex-M3上跑不起来。你想想看,查了两天才发现是编译器优化的问题。
# Ubuntu/Debian安装
sudo apt-get install gcc-arm-none-eabi
# macOS安装(使用brew)
brew install gcc-arm-none-eabi
# 验证安装
arm-none-eabi-gcc --version
1.3.2 OpenOCD
OpenOCD是调试和烧录工具。它支持ST-Link、J-Link、CMSIS-DAP等多种调试器。我个人习惯用ST-Link,便宜又稳定。
# 安装OpenOCD
sudo apt-get install openocd
# 启动调试(以STM32F4为例)
openocd -f interface/stlink.cfg -f target/stm32f4x.cfg
小技巧:如果OpenOCD连接不上,先检查驱动。Windows下要装Zadig,Linux下要加udev规则。我曾经在这上面浪费了半天,后来写了个脚本一键配置。
1.3.3 CMake
CMake是构建工具,比Makefile好管理得多。我建议所有新项目都用CMake,别再用手写Makefile了。
# 安装CMake
sudo apt-get install cmake
# 一个简单的CMakeLists.txt示例
cmake_minimum_required(VERSION 3.10)
project(charger_firmware)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
add_executable(main.elf
src/main.c
src/can_protocol.c
src/charger_control.c
)
target_include_directories(main.elf PRIVATE
include/
)
1.4 版本控制(Git)入门
Git这东西,说实话,刚开始觉得麻烦,但用习惯了就离不开了。我见过最惨的案例:一个团队用U盘拷代码,结果版本搞混了,加班三天才恢复。嗯,从那以后我强制所有项目用Git。
充电桩固件开发,Git的基本操作就够了:
git init:初始化仓库git add和git commit:提交代码git branch和git checkout:分支管理git merge:合并分支
避坑指南:我曾经在合并分支时,不小心把别人的代码覆盖了。后来养成了习惯:合并前先 git diff 看差异,合并后立刻编译测试。千万别偷懒。
# 日常开发流程
git clone https://github.com/your-repo/charger-firmware.git
cd charger-firmware
git checkout -b feature/can-protocol
# ... 写代码 ...
git add src/can_protocol.c
git commit -m "feat: add CAN protocol implementation"
git push origin feature/can-protocol
好了,第一章的内容就到这里。环境搭建好了,后面咱们才能愉快地写代码。下一章我会讲充电桩的通信协议栈实现,包括CAN和PLC的底层驱动怎么写。到时候见。
课后作业:按照本章内容,搭建好你的开发环境。用STM32F4开发板跑一个LED闪烁的例程,确保工具链能正常工作。遇到问题先查文档,实在不行来群里问。
公众号:蓝海资料掘金营,微信deep3321