专栏首页嵌入式程序猿【CAN公开课】对面的猿猿你看过来

【CAN公开课】对面的猿猿你看过来

这个周末,各位猿友过的怎么样呢?对面的猿猿你CAN过来,CAN过来,这里的内容很精彩,请不要假装不理不睬。今天我们开始来学习CAN总线,今天先来简单介绍下一些基础知识。

1

CAN总线简介

CAN(Controller AreaNetwork)总线最早由BOSCH博世公司开发,控制器局域网(CAN)为串行通讯协议,最早知识应用在汽车电子领域,但随着技术的发展,应用的需要,由于其高性能、高可靠性、及独特的设计,CAN越来越受到人们的重视。 CAN 的应用已经拓展到很多领域,像传动控制,变频器,楼宇控制,农业机械,船舶等等,范围很广,从高速的网络到低价位的多路接线都可以使用 CAN。在汽车电子行业里,使用 CAN 连接发动机控制单元、传感器、防刹车系统、等等,其传输速度可达 1 Mbit/s。我们曾经介绍过的SAE J1939协议就是基于CAN总线的一种高层协议,被应用在重卡,农机,船舶等对安全要求较高的领域。下图就是一个简单的CAN网络。

2

CAN-Bus发展

1993年CAN 成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。CAN的规范从CAN 1.2 规范(标准格式)发展为兼容CAN 1.2 规范的CAN2.0规范(CAN2.0A为标准格式,CAN2.0B为扩展格式),目前应用的CAN器件大多符合CAN2.0规范。CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。

3

CAN总线特性

报文的优先权

保证延迟时间

设置灵活

时间同步的多点接收

多主机

完善的错误检测处理机制

CAN总线的特性远不止这些,关于更多CAN总线基础的一些要求以及参数请参考BOSCH官方文档,建议大家阅读英文原版的官方文档,这里就不在赘述,简单几句话也讲不完,具体开发时候,对着示波器抓几个波形,在对着文档阅读记忆会比较深刻,后面的课程我们会以飞思卡尔kv4x系列32位MCU来带领大家学习CAN-bus。

4

飞思卡尔FlexCAN模块

飞思卡尔kv4x系列MCU包含一个称为FlexCAN的模块,这个模块完全实现遵守ISO11898-1和CAN2.0B的标准。下图为该模块的框图。

虚线框内为片内,虚线框外为片外,应用的时候,外部电路要接收发器,最好用隔离收发器。片内主要包含协议引擎,消息缓冲RAM块,外设总线接口,发送仲裁,接收匹配,总线接口单元等。支持标准帧和扩展帧。FlexCAN模块有很多特点:

支持CAN2.0B的全功能

兼容ISO11898-1 标准

灵活的消息邮箱数据长度(0~8字节)

支持FIFO和DMA功能

可编程的时钟源(外设时钟源或者晶振时钟源,对应的波特率配置不太一样, 应用时候要注意)

支持回环模式和只听模式

可编程的传输优先级机制

可屏蔽中断

低功耗模式

强大的FIFO功能

5

工作模式

正常模式 (用户或者管理)

在正常模式下,模块可以收发消息帧,错误处理,所有CAN一些功能都被使能。用户和管理模式的不同在与对一些控制寄存器的权限不同。

冻结模式:

在这种模式下,不能收发数据,并且会丢失同步到can总线

回环模式:

在这种模式下,可以实现自发自收,常用于测试。发送器的数据位流会返回接收器

只听模式:

在这种模式下,发送被禁止,所有的错误计数会被冻结

低功耗模式:

低功耗模式下又分为:禁止模式,打盹模式和停止模式

6

信号描述;

Rx:CAN 接收,0代表显性,1代表隐性,在协议的描述内容里,常常会看到显性隐性的术语,其实就是0和1.

Tx; CAN发送,0代表显性,1代表隐性。

CAN的寄存器比较多,设置也较复杂,后面的课程会专门来介绍。

7

功能概述

在应用中有消息邮箱和FIFO 两种应用方案配置,但都会涉及以下过程。

主要分为:

发送过程

发送仲裁过程接收过程

接收过程

接收匹配过程

8

中断

发送接收中断

错误中断

唤醒中断

发送警告中断

接收警告中断

9

协议时序

下图是CAN模块时钟源配置的一个简图,关于如何根据这个图的描述来配置波特率,会在后面的专题里详细讲解,现在大概了解下有两种选择方案,一种是晶振,一种是外设时钟。

这两种配置都已经成功调试和应用,并在250kbps和1Mbps下测试通过。据数据手册所言,晶振源模式比外设时钟模式精度高。

10

帧类型

报文传输由以下4 个不同的帧类型所表示和控制: 数据帧:数据帧将数据从发送器传输到接收器。 远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。 错误帧:任何单元检测到总线错误就发出错误帧。 过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。 数据帧和远程帧可以使用标准帧及扩展帧两种格式。它们用一个帧间空间与前面的帧分隔。

标准帧格式:

扩展帧格式:

今天先讲到这里,简单介绍了下CAN-bus的内容,希望对大家有所帮助。

本文分享自微信公众号 - 嵌入式程序猿(InterruptISR),作者:武国平

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-05-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于STM32F103xxx的J1939程序开发

    本篇笔记主要介绍,如何在STM32F103XXX系列上实现SAE J1939协议,基于STM32F103RCT6芯片 使用IAR8.32作为软件开发环境。

    用户1605515
  • 一起来学习CAN FD(CAN with Flexible Data-Rate)

    精彩内容 首先,小猿给大家拜个晚年,祝各位猿友在新的一年里,工作顺利,技术长进,家庭和睦, 在刚刚过去的一年,CAN总线有了飞跃的发展,也就是我们要讲的CAN...

    用户1605515
  • CAN通信之BSP封装

    本篇笔记主要介绍,在STM32H743芯片上实现CAN通信,封装为BSP驱动,为之后实现CAN的高层通信打下基础。

    用户1605515
  • Linux应用程序开发之CAN编程

    CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。

    韦东山
  • 汽车CAN协议hacking

    作者: Eric Evenchick 翻译:看雪论坛『智能设备应用』版主:gjden

    用户1908973
  • CAN总线(一)

    原文出处:http://www.cnblogs.com/jacklu/p/4729638.html

    用户7043923
  • 基于 CAN 总线操作汽车仪表盘模拟器实用指南

    最近在外文博客看了相关的系列文章,学习结束后决定翻译整理做一个笔记,整理笔记的过程中曾试图放弃,阅读实践半小时,整理笔记用几天,以后再慢慢培养整理笔记的技能吧。

    信安之路
  • CANard工具套件:CAN总线安全工具

    CAN是控制器区域网络(Controller Area Network, CAN)的简称,是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为...

    FB客服
  • 基于STM32F103xxx的J1939程序开发

    本篇笔记主要介绍,如何在STM32F103XXX系列上实现SAE J1939协议,基于STM32F103RCT6芯片 使用IAR8.32作为软件开发环境。

    用户1605515
  • 【通信专栏】STM32单片机/小谈CAN通信

    我认为CAN通信大概是所学通信里比较高级的了,说难也难,说不难也不难。本文只是结合stm32单片机来小谈一下,以此来帮助大家理解CAN通信。对于CAN通信的理论...

    周旋

扫码关注云+社区

领取腾讯云代金券