基于STM32+移远EC20的CAN网络车载终端
简介
基于STM32+移远EC20的CAN网络车载终端,支持自定义配置CAN数据解码脚本;可通过CAN、OTA 等方式升级固件;具备离线数据存储、GPS车辆定位、MQTT通信功能,并接入阿里云物联网平台。
简介:基于STM32+移远EC20的CAN网络车载终端,支持自定义配置CAN数据解码脚本;可通过CAN、OTA 等方式升级固件;具备离线数据存储、GPS车辆定位、MQTT通信功能,并接入阿里云物联网平台。开源协议
:GPL 3.0
描述
1 车载终端硬件设计与软件开发
1.1 主控芯片选型
在完成总体方案设计后,就需要进行硬件部分的选型。需要综合考虑硬件的性能、功耗、接口数量、成本尺寸等。以及芯片和各个模块之间的通信方式和连接关系。为保证车载终端拥有足够的通信接口和处理能力,主控芯片选用了 ST 公司推出的一款网络型微控制器。型号 STM32F407VE 基于 ARM Cortex-M4 架构设计,主频可达 168MHz 拥有210DMIPS 的处理能力。具有 512KB FLASH、192KB SRAM、86 个 I/O 口,6 个 UART串口、2 路 CAN、3 个 SPI、1 路 USB Device、1 路 USB Host、1 路 ETH 以太网、17 个定时器、ADC/DAC 等外设。可以满足车载终端目前的设计需求以及后续功能扩展所需的接口和运算能力。车载终端硬件基本架构,如图 3-1 所示。
1.2 关键电路设计
1.2.1 电源模块设计
为满足车载终端设备上芯片和模块电流需求以及 12-24V 宽电压输入,采用 MPS 芯源公司的 MP4462 作为电源模块的主芯片。该芯片内置了功率 MOS 管,输入电压范围 4.5V至 36V 适用于各种降压应用,包括汽车环境中的应用。具备软启动、低压保护、自动限流、低静态电流、工作频率可调、高效率的特点。以下为电源模块的原理图。
电源模块使用 0650 合金粉末一体成型电感。该系列 3.3uH 型号饱和电流可达 9A,10uH 型号饱和电流可达 5.5A,可以保证芯片输出最大电流时电感不会饱和导致转换效率的降低和发热。芯片 COMP 引脚外接的 RC 参数以及 FB 分压电阻大小根据数据手册确定。续流二极管使用 TO-277 封装的 SP1045L 势垒二极管(SBR),在 10A 电流下压降只有420mV,低压降可以提高芯片转换效率和降低发热。同时,配合低 ESR 的固态电容作为电源模块输入和输出的滤波电容,大大减小了电源的纹波,提高了芯片和模块的供电质量。
后续的电源模块测试中,使用 DScope 示波器测得 3.3V 电源输出纹波只有 20mV 左右(小于 1%),5.0V 电源输出纹波在 55mV 左右(小于 1.5%)符合相关电源标准。
1.2.2 接口模块设计
车载终端的 CAN 总线和 RS485 总线接口使用了广州金升阳(MORNSUN)的总线隔离模块,使用隔离技术可以防止总线意外接入错误设备造成车载终端烧毁、阻断传导路径提高抗干扰能力、防止高压系统绝缘故障漏电至低压电路系统中对人体造成危害。以下为隔离模块技术参数表格和总线接口的电路原理图。
为了防止终端意外受到雷击或高压击穿,在总线接口处放置了 3R090A-5SS 气体放电管,用于能量泄放。接口屏蔽端采用浮地处理,将 1MΩ 和 10nF 电容电阻并联后串到接口端和隔离模块之间端。可以防止两个设备的屏蔽端接地电位不一致形成大电流以及消除强电地耦合到弱电地的电磁干扰。在接口端还放置了 NUP2105 和 PSM712 两种 TVS 管,用于保护 CAN 总线和 RS485 总线上的共模电压不超出其隔离模块的输入范围。
1.2.3 通信模块设计
通信模块采用移远的 EC20 R2.1 模块,该模块为 CAT4 速率的模块,拥有 150Mbps的下行带宽和 50Mbsp 的上行带宽。模块采用 PCIE 网卡版型封装,方便用户拆装和更换。可以使用 USB 接口或 UART 接口进行通信,使用 AT 指令控制。通信电平为 1.8V 电平,与单片机的 3.3V 系统通信时需要进行电平转换,否则有烧毁模块的风险。使用德州仪器公司的 8 路双向电平转换器,可以实现 1.4V 到 5.5V 电平及开漏模式 1.2Mbps 和推挽模式110Mbps 的信号转换,满足模块的通信要求。以下为 4G 模块的电路原理图。
当 4G 模块处于通讯状态时会出现峰值功率点,需要较大的瞬时电流供应。如果模块3.3V 供电外接的滤波电容容量不够,系统供电电压会被拉低,容易出现因为电压波动导致的芯片、模块异常复位。4G 天线和 GPS 天线使用 IPEX 转 SMA 座跳线引出壳体,SMA座直接焊接在 PCB 板上保证接口强度。射频信号不经过 PCB 走线,直接通过同轴屏蔽跳线传输。实现了更小的接口损耗和提高了模块收发的射频信号质量。
1.2.4 主控电路设计
车载终端主控部分,使用 W25Q256 作为板载 FLASH 存储器,用于存储一些固化数据和配置信息等。而 SD 卡则用于存储总线带时间戳的原始数据和解码文件,可以随时取出用读卡器在电脑上读写文件。调试接口不引出壳体,直接使用 2.54mm 排针连接,用于控制 bootload引导和调试设备。
车载终端主控的外围电路还包括 RTC 时钟和 8M 系统时钟,复位引脚使用板端 10K电阻上拉,BOOT 设置成直接从 MCU 的 FLASH 启动。预留了一个 USB device 接口用于后续功能开发。车载终端设计了四个状态指示灯,分别为网络状态、系统状态、CAN 通信、RS485 通信状态指示灯。
1.3 硬件 PCB 设计
1.3.1 电源模块 PCB 设计
在进行车载终端的电源模块 PCB 设计时,需要先将画好的原理图网络和元件导入到PCB 中,根据白色网络引导线完成电源模块的布局。按照布线的复杂度确定了使用两层板的层叠设计,两路 MP4462 降压芯片对称布局。为减少电源模块产生的电磁干扰,需要保证电路的 dI/dT 环路面积最小,所以 MP4462 的 SW 开关引脚、合金电感及续流二极管三者之间必须靠近放置。降压芯片的 FB 反馈电路也需要远离电感进行布置。模块通过2.54mm 排针输出降压后的 5.0V 和 3.3V 电源。电源模块元器件布局,如图 3-6 所示。
在电源模块 PCB 布线的过程中,需要考虑几种常用的 PCB 设计原则。电源的输入和输出滤波电容必须按照顺序连接,使电流路径依次经过陶瓷电容、固态电容等滤波才能连接至芯片输入或者输出引脚。芯片 SW 引脚、合金电感及续流二极管连接使用一小块铺铜,以减少 dI/dT 环路面积。电压反馈部分必须从经过滤波电容的输出引脚进行取样,走线也布置在远离电感的位置。最后为保证地平面的完整性、屏蔽向外的电磁辐射,增加了板子的 GND 过孔数量。
1.3.2 车载终端 PCB 设计
车载终端主板硬件的设计过程和电源模块设计过程相同,也需要遵守一定的 PCB 设计原则。将原理图的网络和元件导入 PCB 后,按照白色引导线进行布局,根据布线的复杂度选择了四层板的层叠设计。由于主板部分的元器件较多,在布局时需要注意白色网络引导线的连接走向尽量均匀减少交叉,防止在后续布线的过程中由于走线不通导致需要多次过孔换层;外接的总线接口、电源接口、天线接口等需要靠近板边放置;通信频率高的芯片和模块尽量靠近主控芯片放置,减少信号传输的距离;隔离模块的强弱电交界处需要开槽增加爬电间距等布局要求。车载终端主板元器件布局,如图 3-9 所示。
车载终端 PCB 布局布线的过程中,特别对设备接口、存储模块、4G 模块、LED指示灯、屏蔽铺铜部分等做了单独的设计。
(1) 总线接口使用了隔离模块,所以车载终端数字地不再和屏蔽端相连,并在周围做了净空处理,两个隔离接口的元器件单独铺铜。总线的保护器件都尽量靠近接口放置,以便充分发挥其保护作用。隔离模块强弱电分割处开槽,增加爬电距离提高安全性。
(2) 4G 模块的体积较大,容易与其他元器件之间产生干涉。故使用 8H 高度的 PCIE插槽布置在主控芯片上方,下方预留高度足够放置 0603 阻容和芯片。紧靠电平转换芯片放置了去耦电容,防止因为电源波动干扰模块的正常信号。SIM 卡因为较少拆装,所以SIM 卡座可以放置在角落、板背面或模块下方。引出 4G 模块的 USB 接口用于模块后续的固件升级,USB 的上拉电阻和端接电阻需要靠近接口放置。
(3) 外接 4G 天线和 GPS 天线接口采用 IPEX 转 SMA 座跳线,所以射频信号不经过车载终端的 PCB 板,SMA 座的焊盘只起单纯的固定作用。需要注意两个 SMA 座之间的间距,确保两个天线同时安装时不会出现干涉。
(4) 存储部分,板载的 FLASH 存储器放置在靠近主控芯片的位置。SD 卡槽为方便放置空间较大的侧面,SDIO 总线的上拉电阻需要放置在靠近 SD 卡接口的位置,在布线时遵守 3W 原则,防止各信号线之间出现互相串扰。
(5) 主控芯片部分的时钟晶振周围放置了一圈过孔环,以减少时钟信号的辐射传导。对于有金属外壳的 USB 接口、SD 卡槽、DC 电源接口,都做了接地处理,在车载终端 PCB板两侧也进行了开窗漏出铜皮和铝合金外壳接触,提供一定的屏蔽作用。
(6) 在板子绘制完成之后,需要使用 DFM 工具对 PCB 的各项工艺参数进行检查。包括电气信号、净空间距、过孔直径、铺铜开槽等项目。这里使用的是华秋的 DFM 工具进行PCB 工艺制造性能检查。
1.3.3 车载终端外壳装配
车载终端使用网上购买的铝制仪表壳作为设备外壳,PCB 两侧的阻焊开窗可以使车载终端的 GND 铜皮与外壳接触形成一定的电磁屏蔽效果。使用 Altium Designer 导出 PCB板与接口的 STEP 3D 模型,在导出选项中只需要导出选中部件的简化模型。因为精细模型会导致生成的 STEP 文件过大,Solidworks 打开模型的过程中会崩溃。使用 Solidworks绘制设备的外壳开始装配 PCB 模型,根据壳体截面创建前后 I/O 面板,在对应接口位置上绘制草图并开槽。前后的 I/O 面板可以使用 PCB 打样,在对应位置绘制丝印指示接口功能,并在正反面铺上铜皮提高面板屏蔽效果。
1.4 车载终端软件开发
1.4.1 软件架构设计
在车载终端硬件部分的设计工作完成之后,就需要进行对应软件的开发。因为使用的ST 公司 STM32 系列 MCU 在国内拥有较完整的开发者生态,所以本课题选择目前应用较多的 STM32CubeMx + keil5 MDK 组合作为车载终端软件的开发环境。由于 CubeMx 只支持配置 HAL 库或 LL 库工程,所以本软件选择基于 HAL 库进行开发。ST 官方的 HAL 库提供了各种 API 接口,无需用户操作寄存器。可以方便实现时钟和外设的配置、数据收发、中断回调、各种中间件的移植等。车载终端的软件基础架构,如图 3-14 所示。
车载终端软件架构主要分成四个层级,底层的寄存器部分和 HAL 库驱动无需用户关心。仅需要针对车载终端上各模块的板级支持包(BSP)和应用程序(APP)进行开发。其中BSP 层包括 CAN 总线收发结构体的配置和中断服务函数编写、EC20 模块的 AT 指令驱动、FATFS 文件系统的操作指令封装等。而 APP 层主要实现总线数据的解析、文件流的操作、控制状态指示灯闪烁、以及数据打包成 JSON 上传阿里云等功能。
PS:工程描述补充
【V1.0版本PCB,初号机!!!QwQ】
【仿真测试平台】PS:模拟器也是自己做的(笑
STM32驱动BSP源码包、协议&芯片数据手册、已打包上传!!!剩下几个章节的软件架构设计开发、单元测试、集成测试、MQTT物模型生成、WEB应用部署、模拟验证平台搭建仿真部分就靠大家自己通过代码实现啦~Q3Q~
评论