车联网TBOX开发实战六,CAN特性
接上篇芯片及系统方案基础本篇想写个远程控制但想想整个交互链路较长涉及到的基础很多决定先从最基础的介绍一下CAN就是与车辆交互的核心总线本篇不做CAN基础的全面讲解网络上有大篇幅的专业CAN介绍此处只针对TBOX业务涉及到的CAN相关的知识分点深入解读CAN是如何支撑起业务的先总体看一下CAN有什么优劣势1. 双绞线差分传输成本低抗干扰性强可靠性高2. 多主架构自带仲裁机制传输时效性高3. 帧结构及协议简单也是其劣势长数据需要分包4. 带宽低1-20Mbps5. 协议层无原生安全设计需在应用数据层加密从TBOX常用架构看CAN一般是接在MCU芯片上与通讯芯片也就是4G/5G芯片中间通过UART或SPI交互从TBOX业务上看与CAN相关的有整车电源管理车辆模式车辆数据诊断等CAN接入管理一般MCU会部署AutoSar直接管理CAN数据业务上只需要处理单个CAN信号或者消息即可CAN网络管理整车部署有多个CAN网络具体的业务部署以及信号设计需要有详细及规范的设计原则那属于整车CAN网络设计归属整车电子电气架构TBOX只是其中一个ECU挂接在一条或多条CAN网络之下。背后依赖的就是CAN的多主特性以及仲裁优先级特性比如在设计上刹车油门高优先级传输座椅低优先级空调故障不影响整个网络先借用一张图看下整体怎么接的再看下CAN数据格式注意仲裁段11位IDCAN从设计上就规定ID越小优先级越高硬件上会针对ID逐bit比较高的发低的停只要是符合标准CAN规范的芯片都会按照此规范来实现大家遵守同一约定所以高优先级的消息比如刹车油门的CAN ID就会设计得比较小再看电源管理比如最基础的休眠唤醒ECU通常在没有业务的时候会进入休眠态以降低功耗然后等待发生某一事件后醒来继续工作以此不断循环。那么ECU如何在休眠的时候等待数据且能唤醒起来?正常我们会想到中断的确CPU在休眠时只能通过中断来唤醒但CAN如何触发中断整车那么多ECU休眠时有的先有的后先休眠的如何不被后休眠的数据中断呢先看下CAN的工作模式随便找个手头的datasheet看下一共有5种模式Sleepresethaltwork和bus-off休眠唤醒就是用的sleep ModeCAN控制器支持设置特定ID或ID范围然后在休眠态下自动匹配ID属于自己设置的ID及范围就会触发中断唤醒CPU注意bus-off状态简单理解就是遇到了太多的错误(CAN控制器可以主动记录错误状态)主动退出总线防止干扰别人控制器总体结构如下Interrupt generator就是触发CPU中断用于唤醒最右边的Message box就是数据缓存以及匹配ID设置的地方还有ID priority就是ID优先级匹配的地方此处是随意找了一个CAN控制器截图不同的芯片不一样但大差不差都是一个意思该有的都有再看应用层在设计上CAN数据一般都是循环周期发送比如间隔50ms可以简单理解为单向交互每个ECU都在广播数据每个ECU都在从广播中接收数据既然大家都在广播但总线带宽有限所以在设计上需要计算和限制总线负载比如动力不超过30%否则容易丢包导致功能延迟或失效相关工具比如CANoe常用功能有1. 可以分析总线CAN帧查看总线负载2. 可以录制数据可以回放数据方便debug3. 可以编写脚本仿真ECU实现自动化测试4. 可以诊断刷写标定数据等最后工程应用有几个主要的考虑点1. 业务划分MCU和SOC分别承载什么业务部署什么功能2. 交互链路用uart还是spi或是其他的通常需要考虑实时性及数据量3. 交互的内容有哪些协议如何设计4. 功能如何解耦SOC重启是否会影响MCUSOC是否能兼容处理MCU的异常情况总结一下1. CAN只是基石一个通路业务设计需充分依赖这个基石的特性2. 越了解底层原理上层设计越从容3. 工程应用依赖技术基础但不仅仅只是技术需要全面综合考虑
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2634851.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!