第 12 章
飞思卡尔控制器局域网 (S08MSCANV1)
12.1 介绍
飞思卡尔控制器局域网 (MSCAN)是一种通信控制器,它按照 1991 年 9 月定义的 Bosch 规范
执行 CAN 2.0A/B 协议。为了全面了解 MSCAN 规范,我们建议首先阅读 Bosch 规范,熟悉本
文档包含的一些条款和概念。
尽管 CAN 协议并非是汽车应用的专用协议,但它旨在满足车辆串行数据总线的特定规范,如实
时处理、车辆在 EMI 环境中的可靠运行、成本高效性和所需带宽等。
MSCAN 使用先进的缓冲器安排,实现了可预测的实时性,并简化了应用软件。
MSCAN 模块应用在 MC9S08DZ60 系列的所有器件上。
飞思卡尔半导体公司
MC9S08DZ60 系列 , 第 3 版
207
第 12 章 飞思卡尔控制器局域网 (S08MSCANV1)
BKGD/MS
RESET
VREFH
VREFL
VDDA
VSSA
VDD
VDD
VSS
VSS
HCS08 CORE
CPU
BDC
BKP
HCS08 系统控制
复位和中断
运行模式
电源管理
COP
INT
LVD
IRQ
Q
R
I
用户闪存
MC9S0DZ60 = 60K
MC9S0DZ48 = 48K
MC9S0DZ32 = 32K
MC9S0DZ16 = 16K
用户 EEPROM
MC9S0DZ60 = 2K
用户 RAM
MC9S0DZ60 = 4K
调试模块 (DBG)
实时计数器 (RTC)
稳压器
多功能
时钟管理器
(MCG)
振荡器 (XOSC)
模拟比较器
(ACMP1)
ACMP1O
ACMP1-
ACMP1+
8
ADP7-ADP0
ADP15-ADP8
ADP23-ADP16
24 通道,12 位
数模
转换器 (ADC)
6 通定时器 /PWM
模块 (TPM1)
TPM1CH5 -
TPM1CH0
TPM1CLK
6
2 通道定时器 /PWM
模块 (TPM2)
TPM2CH1,
TPM2CH0
TPM2CLK
控制器区域
网络 (MSCAN)
串行外围设备
接口模块 (SPI)
串行通信
接口 (SCI1)
模拟比较器
(ACMP2)
IIC 模块 (IIC)
串行通信
接口 (SCI2)
RxCAN
TxCAN
MISO
MOSI
SPSCK
SS
RxD1
TxD1
ACMP2O
ACMP2-
ACMP2+
SDA
SCL
RxD2
TxD2
XTAL
EXTAL
A
T
R
O
P
PTA7/PIA7/ADP7/IRQ
PTA6/PIA6/ADP6
PTA5/PIA5/ADP5
PTA4/PIA4/ADP4
PTA3/PIA3/ADP3/ACMP1O
PTA2/PIA2/ADP2/ACMP1-
PTA1/PIA1/ADP1/ACMP1+
PTA0/PIA0/ADP0/MCLK
B
T
R
O
P
C
T
R
O
P
D
T
R
O
P
E
T
R
O
P
F
T
R
O
P
G
T
R
O
P
PTB7/PIB7/ADP15
PTB6/PIB6/ADP14
PTB5/PIB5/ADP13
PTB4/PIB4/ADP12
PTB3/PIB3/ADP11
PTB2/PIB2/ADP10
PTB1/PIB1/ADP9
PTB0/PIB0/ADP8
PTC7/ADP23
PTC6/ADP22
PTC5/ADP21
PTC4/ADP20
PTC3/ADP19
PTC2/ADP18
PTC1/ADP17
PTC0/ADP16
PTD7/PID7/TPM1CH5
PTD6/PID6/TPM1CH4
PTD5/PID5/TPM1CH3
PTD4/PID4/TPM1CH2
PTD3/PID3/TPM1CH1
PTD2/PID2/TPM1CH0
PTD1/PID1/TPM2CH1
PTD0/PID0/TPM2CH0
PTE7/RxD2/RXCAN
PTE6/TxD2/TXCAN
PTE5/SDA/MISO
PTE4/SCL/MOSI
PTE3/SPSCK
PTE2/SS
PTE1/RxD1
PTE0/TxD1
PTF7
PTF6/ACMP2O
PTF5/ACMP2-
PTF4/ACMP2+
PTF3/TPM2CLK/SDA
PTF2/TPM1CLK/SCL
PTF1/RxD2
PTF0/TxD2
PTG5
PTG4
PTG3
PTG2
PTG1/XTAL
PTG0/EXTAL
- 48 管脚和 32 管脚封装中,VREFH/VREFL 和 VDDA/VSSA 内部连接。
- VDD 和 VSS 管脚是通过内部方式和 32 封装的 2 个管脚连接。
- 48 管脚和 32 管脚封装内管脚不连接
- 32 管脚封装内管脚连接
图 12-1. MC9S08DZ60 结构图
MC9S08DZ60 系列 , 第 3 版
208
飞思卡尔半导体公司
第 12 章 飞思卡尔控制器局域网 (S08MSCANV1)
12.1.1 特性
MSCAN 的基本特性如下 :
• 实施 CAN 协议—2.0A/B 版
— 标准和扩展数据帧
— 0-8 字节数据长度
— 高达 1 Mbps1 的可编程比特率1
— 支持远程帧
• 5 个具有 FIFO 存储机制的接收缓冲器
• 3 个具有使用 “本地优先”概念的内部优先顺序的发送缓冲器 t
• 灵活可掩码标识符滤波器支持 2 个全尺寸 (32 位)扩展标识符滤波器或 4 个 16 位滤波器
或 8 个 8 位滤波器
• 集成低通滤波器的可编程唤醒功能 r
• 可编程环回模式支持自测操作
• 可编程监听模式用于 CAN 总线监控
• 可编程总线脱离恢复功能
• 独立的信号和中断功能适用于所有 CAN 接收器和发射器错误状态 (警报、错误严重状
态、总线脱离)
• 可编程 MSCAN 时钟源,采用总线时钟或振荡器时钟
• 内部计时器提供给接收和发送的报文的时间标签
• 三种低功耗模式:睡眠、关机和 MSCAN 使能
• 配置寄存器的全局初始化
12.1.2 运行模式
以下运行模式是 MSCAN 的特定运行模式。详情 12.5,“功能描述”。
• 监听模式
• MSCAN 睡眠模式
• MSCAN 初始化模式
• MSCAN 关机模式
• 环回自测模式
1. Depending on the actual bit timing and the clock jitter of the PLL.
飞思卡尔半导体公司
MC9S08DZ60 系列 , 第 3 版
209
第 12 章 飞思卡尔控制器局域网 (S08MSCANV1)
12.1.3 结构图
MSCAN
振荡器时钟
总线时钟
MUX
CANCLK
Tq Clk
Presc.
接收 / 发送引擎
RXCAN
TXCAN
发送中断请求
接收中断请求
错误中断请求
唤醒中断请求
控制和状态
报文过滤和缓冲
配置
寄存器
唤醒
低通滤波器
图 12-2. MSCAN 结构图
12.2 外部信号描述
MSCAN 使用两个外部管脚 :
12.2.1 RXCAN — CAN 接收器输入管脚 Ý
RXCAN 是 MSCAN 接收器输入管脚。
TXCAN — CAN T 发射器输出管脚
12.2.2
TXCAN 是 MSCAN 发送器输出管脚。 TXCAN 输出管脚代表 CAN 总线上的逻辑层:
0 = 显性状态
1 = 隐性状态
12.2.3 CAN 系统
图 12-3. 显示了一个具有 MSCAN 的典型 CAN 系统 . 每个 CAN 节点通过收发器物理连接到
CAN 总线线路 .e. 收发器能够驱动 CAN 总线所需的大电流,并具有对故障 CAN 或故障节点的
电流保护。
210
MC9S08DZ60 系列 , 第 3 版
飞思卡尔半导体公司
第 12 章 飞思卡尔控制器局域网 (S08MSCANV1)
CAN 节点 2
CAN 节点 n
CAN 节点 1
MCU
CAN 控制器
(MSCAN)
TXCAN
RXCAN
收发器
CAN_H
CAN_L
CAN 总线
图 12-3. CAN 系统
12.3 寄存器定义
本节详细描述 MSCAN 模块中的所有寄存器和寄存器位。每个描述都包括带有相关图形编号的
标准寄存器示意图。寄存器位和字段功能的详细说明在寄存器图后面,按位顺序。该模块中所有
寄存器的所有位在寄存器读取过程中都与内部时钟完全同步。
12.3.1 MSCAN 控制寄存器 0 (CANCTL0)
The CANCTL0 寄存器提供了如下所述的 MSCAN 模块的各种位控制。
.
7
6
5
RXFRM
RXACT
CSWAI
R
W
4
SYNCH
3
2
1
0
TIME
WUPE
SLPRQ
INITRQ
复位 :
0
0
0
0
0
0
0
1
= Unimplemented
图 12-4. 控制寄存器 0 (CANCTL0)
注意
当初始化模式处于有效 (INITRQ = 1 and INITAK = 1). 时,除
WUPE、 INITRQ 和 SLPRQ 外的所有 CANCTL0 寄存器位都处于复
位状态。只要退出初始化模式 (INITRQ = 0, INITAK = 0),该寄存
器可以再次写入。
读取:任何时间
写入:退出初始化模式的任何时间;例外是只读 RXACT、 SYNCH、 RXFRM (只由该模块设
置)和 INITRQ (也可以在初始化模式中写入)。 .
飞思卡尔半导体公司
MC9S08DZ60 系列 , 第 3 版
211
第 12 章 飞思卡尔控制器局域网 (S08MSCANV1)
字段
7
RXFRM1
6
RXACT
5
CSWAI2
4
SYNCH
3
TIME
2
WUPE3
表 12-1. CANCTL0 寄存器字段描述
描述
已收到帧标记— 该位是只读和只清除位。当接收器正确收到有效报文 (独立于滤波器配置)时,设置该位。设
置后,该位一直保持设置,直到通过软件或复位将其清除。清除通过写入 1 完成。写 0 被忽略。该位在环回模
式中无效。
0 自上次清除该标记以来未收到有效报文
1 自上次清除该标记以来收到有效报文
接收器使能状态— 该只读标记表示 MSCAN 正在接收报文。该标记由接收器前端控制。该位在环回模式中无
效。
0 MSCAN 正在发送或空闲 2
1 MSCAN 正在接收报文 (包括仲裁丢失时) 2
在等待模式中 CAN 停止— 设置此位,可以在等待模式中通过禁止 MSCAN 模块与 CPU 总线接口的所有时钟而
降低功耗。
0 在等待模式中, CAN 模块不受影 œÏ
1 等待模式中, CAN 模块停止计时
同步状态—该只读标记显示 MSCAN 是否与 CAN 总线同步,是否能够参与通信流程。其设置和清除通过
MSCAN 进行。
0 MSCAN 与 CAN 总线不同步
1 MSCAN 与 CAN 总线同步 s
计时器使能—该位使能内部 16 位字宽自由运行计时器,由位时钟速率计时。如果计时器被使能, 16 位时间标
签将分配给有效 TX/RX 缓冲器内的每条发送 / 接收报文。一旦报文在 CAN 总线上确认,时间标签将被写入适当
缓冲器 (参见 12.4,“报文存储模式”)的最高字节 (0x000E, 0x000F)。禁止时,内部计时器复位 (所有位
都设置为 0)。该位在初始化模式中保持低。
0 禁止内部 MSCAN 计时器 r
1 使能内部 MSCAN 计时器 r
唤醒使能—当检测到 CAN 上有流量时 (参见 12.5.5.4,“MSCAN 睡眠模式”),该配置位能够让 MSCAN 从睡
眠模式中重启。为了让所选功能发挥作用,在该位进入睡眠模式前必须进行配置。
0 唤醒禁止 — MSCAN 忽略 CAN 上的流量
1 唤醒使能 — MSCAN 能够重启
212
MC9S08DZ60 系列 , 第 3 版
飞思卡尔半导体公司
字段
1
SLPRQ4
0
INITRQ5,6
第 12 章 飞思卡尔控制器局域网 (S08MSCANV1)
表 12-1. CANCTL0 寄存器字段描述 (continued)
描述
睡眠模式请求—该位请求 MSCAN 进入睡眠模式,这是一个内部节电模式 (参见 12.5.5.4,“MSCAN 睡眠模
式”)。当 CAN 总线空闲时,也就是说该模块不接收任何报文且所有发送缓冲器空,睡眠模式请求被受理。通
过设置 SLPAK = 1 (参见 12.3.2,“控制寄存器 1 (CANCTL1)”),表示该模块进入睡眠模式。当设置了
WUPIF 标记时 (参见 12.3.4.1,“MSCAN 接收器标志寄存器 (CANRFLG)”),不能设置 SLPRQ。睡眠模式
维持有效,直到 SLPRQ 被 CPU 清除或者根据 WUPE 的设置, MSCAN 检测到 CAN 总线上有有效并自行清
除。
0 运行中 — MSCAN 正常工作
1 睡眠模式请求— 当 CAN 总线空闲时 MSCAN 进入睡眠模式
INITRQ6、 7
初始化模式请求— 当 CPU 设置该位时, MSCAN 切换至初始化模式 (参见 12.5.5.5,“MSCAN I 初始化模
式”)。任何正在进行的发送或接收都将被中止,与 CAN 总线的同步也丢失。通过设置 INITAK = 1 (见 12.3.2
小节 “MSCAN 控制寄存器 1 (CANCTL1)”),表示该模块进入初始化模式。
以下寄存器进入其硬复位状态并恢复它们的默认值:CANCTL08、 CANRFLG9、 CANRIER10、 CANTFLG、
CANTIER、 CANTARQ、 CANTAAK 和 CANTBSEL。
µ 盡 SCAN 处于初始化模式 (INITRQ = 1, INITAK = 1)时,寄存器 CANCTL1、 CANBTR0、 CANBTR1、
CANIDAC、 CANIDAR0-7 和 CANIDMR0-7 只能通过 CPU 写入。错误计数器的值不受初始化模式的影响。
当该位通过 CPU 清除时, MSCAN 重启,然后试图与 CAN 总线同步。如果 MSCAN 未处于总线脱离状态,它
在 CAN 总线上出现 11 个连续隐性位后同步。如果 MSCAN 处于总线脱离状态,它将继续等待 11 个连续隐性
位重复出现 128 次。
只有当退出初始化模式后,才可以在 CANCTL0、CANRFLG、CANRIER、CANTFLG 或 CANTIER 中写入其他
位,这时 INITRQ = 0, INITAK = 0。
0 正常运行
1 MSCAN 处于初始化模式
1 要设置该位, MSCAN 必须处于正常模式。
2 如需了解发送器和接收器状态的详细定义,(参见 12.5.5.2,“等待模式中的操作” ” 和 12.5.5.3,“停止模式中的操作”)。
3 为了防止意外违反 CAN 协议,当 CPU 进入等待 (CSWAI = 1)或停止模式 ( 参见 12.3.5,“MSCAN 接收器中断使能寄存器
(CANRIER)” ) ,立即强制 TXCAN 管脚进入隐性状态。
4 如果需要从停止或等待模式中进行恢复的机制, CPU 必须确保 WUPE 位和 WUPIE 唤醒中断使能位 (参见 12.3.5,
“MSCAN 接收器中断使能寄存器 (CANRIER)”)(CANRIER))被使能。
5 在 MSCAN 进入睡眠模式 (SLPRQ = 1, SLPAK = 1)前, CPU 不能清除 SLPRQ。
6 在 MSCAN 进入初始化模式 (INITRQ = 1, INITAK = 1)前, CPU 不能清除 INITRQ。
飞思卡尔半导体公司
MC9S08DZ60 系列 , 第 3 版
213
第 12 章 飞思卡尔控制器局域网 (S08MSCANV1)
12.3.2 控制寄存器 1 (CANCTL1)
CANCTL1 寄存器如下所述提供了 MSCAN 模块的各种控制位和握手状态报文。
.
7
6
5
4
3
2
1
0
R
W
CANE
CLKSRC
LOOPB
LISTEN
BORM
WUPM
SLPAK
INITAK
复位 :
0
0
0
1
0
0
0
1
= Unimplemented
图 12-5. 控制寄存器 1(CANCTL1)
读取:任何时间
写入:当 INITRQ = 1 和 INITAK = 1 时的任何时间, CANE 例外,可以在正常情况下写入一次,
以及当 MSCAN 处于初始化模式 (INITRQ = 1, NITAK = 1)的特殊系统运行模式时任何时间写
入。
字段
7
CANE
6
CLKSRC
5
LOOPB
4
LISTEN
3
BORM
2
WUPM
214
表 12-2. 寄存器字段描述
描述
MSCAN 使能
0 MSCAN 模块禁止
1 MSCAN 模块使能
MSCAN 时钟源 — 该位定义 MSCAN 模块的时钟源 ( 仅适用于具有时钟发生模块的系统; 12.5.3.3,“时钟系
统”和图 12-42.,“MSCAN 时钟机制” ).
0 MSCAN 时钟源是振荡器时
1 MSCAN 时钟源是总线时钟
环回自测模式 — 当设置了该位时, MSCAN 执行可用于自测操作的内部环回。 T 发送器的位流输出从内部流回
接收器。 12.5.4.6,“环回自测模式” .
0 环回自测禁止
1 环回自测使能
º 监听模式 — 该位把 SCAN 配置为 CAN 总线监控器。当设置了 LISTEN 时,会收到带有匹配 ID 的所有有效
CAN,但不发出确认或错误帧 ( 参见 12.5.4.4,“监听模式” )。此外,错误计数器停止计数。监听模式可以支持
需要 “热插拨”或 “吞吐量分析”的应用。当监听模式处于有效状态时, MSCAN 不能发送任何报文。
0 正常运行
1 监听模式使能 d
总线脱离恢复模式 — 该位配置 MSCAN 的总线关断恢复模式。更多报文总线脱离恢复模式— 该位配置 MSCAN
的总线关断恢复模式。更多报文 12.6.2,“总线脱离恢复”。
0 自动总线脱离恢复 (参见 Bosch CAN 2.0A/B 协议规范)
1 用户请求的总线脱离恢复
唤醒模式 — 如果 CANCTL0 中的 WUPE 被使能,该位决定是否应用集成低通滤波器来防止 MSCAN 出现假唤
醒 ( 参见 12.5.5.4,“MSCAN 睡眠模式” )
0 MSCAN 被 CAN 总线上的任意显性信号唤醒
1 MSCAN 只有在 CAN 总线上的显性脉冲长度为 Twup 时才唤醒。
MC9S08DZ60 系列 , 第 3 版
飞思卡尔半导体公司