logo资料库

硬石CANopen编程指导手册.pdf

第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
资料共40页,剩余部分请下载后查看
硬石CANopen编程指导手册
STM32入门系列教程
第1章 CAN基本介绍
1.1 CAN简介
1.2 CAN简介
1.2.1 CAN物理层
闭环总线网络
开环总线网络
通讯节点
CAN协议中的差分信号
1.2.2 CAN协议层
1. CAN的位时序以及同步
位时序的组成
通讯的波特率
CAN同步机制
2. CAN报文
CAN报文格式
数据帧的结构
1.3 STM32的CAN外设简介
1.3.1 CAN总体描述
1. CAN控制内核
主控制寄存器(CAN_MCR)
CAN位时序寄存器(CAN_BTR)
2. CAN发送邮箱
3. CAN接收FIFO
4. 接收过滤器
1.4 CAN通讯硬件电路设计
第2章 CANopen简介
2.1 CANopen概述
CANopen与CAN的关系
CANopen优势
CANopen协议分层
2.2 对象字典
通信子协议
制造商自定义子协议
设备子协议
2.3 CANopen的预定义连接集
2.4 通讯接口
1. NMT网络管理
NMT模块控制
NMT节点状态
NMT节点保护
NMT Boot-up
2. 服务数据对象(SDO)
通讯原则
3. 过程数据对象(PDO)
PDO的CAN-ID定义
PDO传输形式
PDO通讯参数
PDO映射参数
PDO通信机制
第3章 例程讲解
3.1 主机例程
Bsp_can.c文件内容
TestMaster.c文件内容
Main.c文件内容
3.2 从机例程
3.3 总结
3.4 实验现象
硬石 CANopen 编程指导手册 STM32 入门系列教程 技术论坛 :www.ing10bbs.com 电 话:020-29814159 QQ:2536843366 QQ 交流群:515110016(硬石电子交流群) 旺 旺:硬石电子 版本历史 修改内容 版本 V1.0 发布时间 2018-05-11 新建文件 作者 硬石
前言 CAN(Controller Area Network, 控制器局域网络)是由博世开发的一种现场总 线,首先应用在汽车领域。由于它的低成本和可靠性,现在被广泛应用在工业测 控和工业自动化领域。 CAN 的物理层分了三层分别是 MDI,PMA 和 PLS,数据链路层分了两层: MAC 与 LLC。这五层就是最原始的 CAN 协议,标准是 ISO11898。也就是说 CAN 协议一开始是没有应用层的。后来有一种叫 CANopen 的基于 CAN 的应用层协议 被开发出来,标准是 CiA301。 在实际开发 CAN 器件的时候不一定要用 CANopen,你可以根据自己的需要 定制自己的应用层协议。CANopen 是协议。它规定了许多的规约,你必须去遵守。 这样一来可以对网络上的各个节点进行更加高效的管理。想象一下,如果让你控 制主机来对网络上的 30 个节点来分别读取 10 帧的数据,你都点多少次按钮。而 如果网络上的各个点都用到了 CANopen 协议。那行,你只需要在主节点进行一 个非常简单的设置,再按一下按钮,就能实现上面的操作了。CANopen 协议在形 式上也是一些代码。
关于本文档几点说明 1) 因为 STM32 知识也就这么多,目前在网络上流通的所有资料也是很多,所以 本文档有部分资料说明来着网络,在此我们对原作者表示衷心的感谢,当然 如果有原作者认为我们不能引用您的著作内容,请务必联系我们,我们会把 相关内容修改。 2) 本文档参考大量文档而编写完成,部分内容可能直接引用网络文档,所以在 结构和语句组织上不是很严谨,我们力求平白化,把内容、原理讲通就好。 3) 因本人能力有限,可能文档部分内容表述不完善,请各路高手务必指出,我 们会虚心求教,我们会根据情况赠送本店模块以表示我们的诚意。 最后,希望大家继续支持硬石科技!!! 硬石科技最新资料 http://www.ing10bbs.com/forum.php?mod=viewthread&tid=1458&fromuid=4
目录 第 1 章 CAN 基本介绍 ........................................................................................ 5 1.1 CAN 简介 ........................................................................................................ 5 1.2 CAN 简介 ........................................................................................................ 5 1.2.1 CAN 物理层 ....................................................................................... 5 1.2.2 CAN 协议层 ....................................................................................... 9 1.3 STM32 的 CAN 外设简介 ............................................................................ 13 1.3.1 CAN 总体描述 ................................................................................. 14 1.4 CAN 通讯硬件电路设计 .............................................................................. 18 第 2 章 CANopen 简介 ...................................................................................... 19 2.1 CANopen 概述 ............................................................................................. 19 2.2 对象字典 ...................................................................................................... 21 2.3 CANopen 的预定义连接集 ......................................................................... 22 2.4 通讯接口 ...................................................................................................... 24 第 3 章 例程讲解 .............................................................................................. 33 3.1 主机例程 ...................................................................................................... 33 3.2 从机例程 ...................................................................................................... 37 3.3 总结 .............................................................................................................. 37 3.4 实验现象 ...................................................................................................... 37
第1章 CAN 基本介绍 1.1 CAN 简介 CAN 是 Controller Area Network 的缩写(简称为 CAN),是由以研发和生产汽 车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO 11898), 是国际上应用最广泛的现场总线之一。 CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标 准总线,并且拥有以 CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。 CAN 的可靠性已经得到广泛认可,被应用于工业自动化、船舶、医疗设备、 工业设备等方面。 1.2 CAN 简介 CAN 是 Controller Area Network 的缩写(简称为 CAN),是由以研发和生产汽 车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO 11898), 是国际上应用最广泛的现场总线之一。 CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标 准总线,并且拥有以 CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。 CAN 的可靠性已经得到广泛认可,被应用于工业自动化、船舶、医疗设备、 工业设备等方面。 1.2.1 CAN 物理层 CAN 是一种异步通讯,只有 CAN_High 和 CAN_Low 两条信号线,共同构成一 组差分信号线,以差分信号的形式进行通讯。
闭环总线网络 CAN 物理层的形式主要有两种,如图 1-1 是其中的一种“闭环网络”,它允 许总线最大长度为 40m,最高速度为 1Mbps,可以看到总线的两端各有一个 120 欧的电阻,这是规定。节点就是不同的设备,连接到一个闭环总线上面。 图 1-1 CAN 闭环通讯网络 开环总线网络 这是另一种物理层的形式,简单的说就是另一种的连接方法,如图 1-2,最 大传输距离为 1Km,最高通讯速率为 125Kbps,这里的两根线是独立的,每根线 上串联一个 2.2 欧的电阻。
图 1-2 CAN 开环通讯网络 通讯节点 CAN 节点是指能够挂接在 CAN 总线上的单元,并能通过 CAN 总线实现各个 节点间的通信,以实现复杂的控制过程。理论上 CAN 总线连接的节点可达 110 个,但实际上收到总线上的时间延迟及电气负载的限制。当连接多节点时,降低 通信速率,可连接的节点增加;提高通信速率,则可连接的节点数减少。 CAN 通讯节点由一个 CAN 控制器及 CAN 收发器,CAN 控制器用于实现实现 CAN 总线的协议底层以及数据链路层,用于生成 CAN 帧并以二进制码流的方式 发送,在此过程中进行位填充、添加 CRC 校验、应答检测等操作;将接收到的二 进制码流进行解析并接收,在此过程中进行收发比对、去位填充、执行 CRC 校验 等操作。此外还需要进行冲突判断、错误处理等诸多任务。 CAN 收发器(有时也叫做驱动器),用于将二进制码流转换为差分信号发送, 将差分信号转换为二进制码流接收。 我们已经知道 CAN 控制器和收发器的概念,观察图 1-1 和图 1-2,为接线方 式,控制器和收发器通过普通的类似 TTL 逻辑信号来连接,CAN_Low 和 CAN_High 是一对差分信号线。 当 CAN 节点需要发送数据时,控制器把要发送的二进制编码通过通过 CAN_Tx 线发送到收发器,然后由收发器把这个普通的逻辑电平信号转换成差分
信号,通过差分线 CAN_High 和 CAN_Low 线输出到 CAN 总线网络。而通过收发 器接收总线上的数据的到控制器时,是相反的过程。 CAN 协议中的差分信号 差分信号又称为差模信号,具体的含义这里不多介绍了。CAN 协议中对它使 用的 CAN_High 以及 CAN_Low 表示的差分信号做了规定,如图 1-3,可以看到, 显性电平对应逻辑“0”,隐性电平对应逻辑“1”。当表示为隐性电平(逻辑“1”)时, CAN_High 和 CAN_Low 的电压均为 2.5V,此时它们的电压差为 0V;当表示显性 电平(逻辑“0”)时,CAN_High 的电压为 3.5V,CAN_Low 的电压为 1.5V,它们的 电压差为 2V。举个例子:当 CAN 收发器从 CAN_Tx 线接收到来自 CAN 控制器的 低电平信号(逻辑“0”)时,它会使 CAN_High 输出 3.5V,同时 CAN_Low 输出 1.5V。 在总线上显性电平具有优先权,只要有一个单元(也就是节点)输出显性电 平,总线上即为显性电平。而隐性电平则具有包容的含义,只有所有的单元都输 出隐性电平,总线上才为隐性电平。那么可以知道,CAN 通讯是半双工的,收发 数据需要分开来进行,由于是公用总线,在整个网络中,同一时刻只能由一个通 讯节点发送信号,其余的节点在该时刻只能接收。 图 1-3 CAN 的差分信号
分享到:
收藏