
广
广
广
州
州
州
周
周
周
立
立
立
功
功
功
单
单
单
片
片
片
机
机
机
发
发
发
展
展
展
有
有
有
限
限
限
公
公
公
司
司
司
地址:广州市天河北路 689 号光大银行大厦 12 楼 F4
网址:http://www.zlgmcu.com
第
第
第
1
1
1
6
6
6
章
章
章
C
C
C
A
A
A
N
N
N
1
1
1
/
/
/
2
2
2
用
用
用
户
户
户
手
手
手
册
册
册
R
R
R
e
e
e
v
v
v
0
0
0
0
0
0
.
.
.
0
0
0
4
4
4
L
L
P
P
C
C
1
1
7
7
0
0
0
0
系
系
列
列
微
微
控
控
制
制
器
器

广州周立功单片机发展有限公司
销售与服务网络
广州周立功单片机发展有限公司
地址:广州市天河北路 689 号光大银行大厦 12 楼 F4 邮编:510630
电话:(020)38730972 38730976 38730916 38730917 38730977
传真:(020)38730925
网址:http://www.zlgmcu.com
广州专卖店
地址:广州市天河区新赛格电子城 203-204 室
电话:(020)87578634 87569917
传真:(020)87578842
南京周立功
地址:南京市珠江路 280 号珠江大厦 2006 室
电话:(025)83613221 83613271 83603500
传真:(025)83613271
北京周立功
地址:北京市海淀区知春路 113 号银网中心 A 座
1207-1208 室(中发电子市场斜对面)
电话:(010)62536178 62536179 82628073
传真:(010)82614433
重庆周立功
地址:重庆市石桥铺科园一路二号大西洋国际大厦
(赛格电子市场)1611 室
电话:(023)68796438 68796439
传真:(023)68796439
杭州周立功
地址:杭州市天目山路 217 号江南电子大厦 502 室
电话:(0571)89719480 89719481 89719482
89719483 89719448 89719485
传真:(0571)
89719494
成都周立功
地址:成都市一环路南二段 1 号数码同人港 401 室(磨
子桥立交西北角)
电话:(028) 85439836 85437446
传真:(028) 85437896
深圳周立功
地址:深圳市深南中路 2070 号电子科技大厦 C 座 4
楼 D 室
电话:(0755)83781788(5 线)
传真:(0755)83793285
武汉周立功
地址:武汉市洪山区广埠屯珞瑜路 158 号 12128 室(华
中电脑数码市场)
电话:(027)87168497 87168297 87168397
传真:(027)87163755
上海周立功
地址:上海市北京东路 668 号科技京城东座 7E 室
电话:(021)53083452 53083453 53083496
传真:(021)53083491
西安办事处
地址:西安市长安北路 54 号太平洋大厦 1201 室
电话:(029)87881296 83063000 87881295
传真:(029)87880865

广州周立功单片机发展有限公司 第 16 章
目录
第 16 章 CAN1/2·············································································································· 1
16.1 基本配置 ························································································································1
16.2 CAN 控制器 ···················································································································1
16.3 特性 ································································································································1
16.3.1 通用 CAN 特性 ······································································································1
16.3.2 CAN 控制器特性 ···································································································1
16.3.3 验收滤波器特性·····································································································2
16.
4 引脚描述 ························································································································2
16.5 CAN 控制器结构 ···········································································································2
16.5.1 APB 接口模块(AIB) ·························································································2
16.5.2 接口管理逻辑(IML)··························································································3
16.5.3 发送缓冲器(TXB) ·····························································································3
16.5.4 接收缓冲器(RXB)·····························································································3
16.5.5 错误管理逻辑(EML)·························································································4
16.5.6 位时序逻辑(BTL) ·····························································································4
16.5.7 位流处理器(BSP)······························································································4
16.5.8 CAN 控制器自测试································································································4
16.6 CAN 模块的内存映像 ···································································································5
16.7 CAN 控制器寄存器 ·······································································································6
16.7.1 CAN 模式寄存器 ···································································································8
16.7.2 CAN 命令寄存器 ···································································································9
16.7.3 CAN 全局状态寄存器··························································································11
16.7.4 CAN 中断和捕获寄存器······················································································14
16.7.5 CAN 中断使能寄存器··························································································17
16.7.6 CAN 总线时序寄存器··························································································18
16.7.7 CAN 错误报警界限寄存器··················································································18
16.7.8 CAN 状态寄存器 ·································································································19
16.7.9 CAN 接收帧状态寄存器······················································································21
16.7.10 CAN 接收标识符寄存器······················································································22
16.
7.11 CAN 接收数据寄存器 A······················································································22
16.7.12 CAN 接收数据寄存器 B······················································································22
16.7.13 CAN 发送帧信息寄存器······················································································23
16.7.14 CAN 发送标识符寄存器······················································································24
16.7.15 CAN 发送数据寄存器 A······················································································25
16.7.16 CAN 发送数据寄存器 B······················································································25
16.7.17 CAN 睡眠清零寄存器··························································································25
16.7.18 CAN 唤醒标志寄存器··························································································26
16.8 CAN 控制器操作 ·········································································································26
16.8.1 错误处理 ··············································································································26
16.8.2 睡眠模式 ··············································································································27
16.8.3 中断 ······················································································································27
16.8.4 发送优先级···········································································································27
I

广州周立功单片机发展有限公司 第 16 章
II
16.9 集中 CAN 寄存器 ········································································································27
16.9.1 集中发送状态寄存器 ···························································································28
16.9.2 集中接收状态寄存器 ···························································································28
16.9.3 集中其它状态寄存器 ···························································································29
16.10 全局验收滤波器···········································································································29
16.11 验收滤波器模式···········································································································29
16.11.1 验收滤波器关闭模式 ···························································································30
16.11.2 验收滤波器旁路模式 ···························································································30
16.11.3 验收滤波器操作模式 ···························································································30
16.11.4 FullCAN 模式·······································································································30
16.12 ID 查找表 RAM 的各个区···························································································30
16.13 ID 查找表 RAM ···········································································································30
16.14 验收滤波器寄存器·······································································································32
16.14.1 验收滤波器模式寄存器 ·······················································································32
16.14.2 区配置寄存器·······································································································33
16.14.3 标准帧单个起始地址寄存器 ···············································································33
16.14.4 标准帧组起始地址寄存器 ···················································································33
16.14.5 扩展帧起始地址寄存器 ·······················································································34
16.14.6 扩展帧组起始地址寄存器 ···················································································34
16.14.7 AF 表结束寄存器·································································································35
16.14.8 状态寄存器···········································································································35
16.14.9 LUT 错误地址寄存器 ··························································································35
16.14.10 LUT 错误寄存器 ··································································································35
16.14.11 全局 FullCANInterrupt 使能寄存器·····································································35
16.14.12 FullCAN 中断和捕获寄存器 ···············································································36
16.15 配置和搜索算法···········································································································36
16.15.1 验收滤波器搜索算法 ···························································································36
16.16 FullCAN 模式···············································································································37
16.16.1 FullCAN 中断·······································································································39
16.16.2 FullCAN 中断的置位和清零机制········································································41
16.17 验收了滤波器表格和 ID 索引值举例 ·········································································44
16.17.1 示例 1:只使
用一个区 ························································································44
16.17.2 示例 2:所有的区都被使用 ················································································44
16.17.3 示例 3:多个区(但并非所有区)被使用 ·························································45
16.17.4 配置示例 4············································································································45
16.17.5 配置示例 5············································································································45
16.17.6 配置示例 6············································································································46
16.17.7 配置示例 7············································································································48
16.17.8 查找表编程规则···································································································49

广州周立功单片机发展有限公司 第 16 章
第16章 CAN1/2
16.1 基本配置
CAN1/2 使用以下寄存器进行设置:
a)功率:在 PCONP 寄存器中,设置 PCAN1/2 位。
注:复位时,CAN1/2 会被使能(PCAN1/2=0)。
b)外设时钟:在 PCLK_SEL0 寄存器中(选择 PCLK_CAN1/2 和验收滤波器的 PCLK_ACF。
注:如果所需使用的 CAN 波特率必须高于 100kbit/s(参见),那么就不能选择 IRC 作为时钟源。
c)唤醒:CAN 控制器能够将微控制器从掉电模式唤醒。
d)引脚:通过 PINSEL 寄存器选择 CAN1/2 引脚,并通过 PINMODE 寄存器选择引脚模式。
e)中断:CAN 中断是通过 CAN1/2 寄存器来使能的。中断的使能是通过在 NIVC 中使用
相应的中断设置使能寄存器(Interrupt Set Enable register)来实现的。
f)CAN 控制器初始化:参见 CANNOD 寄存器。
16.2 CAN控制器
控制局域网(CAN)是串行数据通信的一种高性能通信协议。CAN 控制器提供了一个完整
的 CAN 协议(遵循 CAN 规范 V2.0B)实现方案。微控制器包含了该片内 CAN 控制器,用来
构建功能强大的局域网,支持极高安全级别的分布式实时控制,可以在汽车、工业环境、高速
网络以及低价位多路联机的应用中发挥很大的作用。因此,能大大精简线缆(wiring harness),
且具有强大的诊断监控功能。
CAN 模块可以同时支持多个 CAN 总线,允许器件在各种多个 CAN 总线应用中用作网关、
交换机或路由器。
CAN 模块由两部分组成:控制器和验收滤波器。所有的寄存器和 RAM 都以 32 位的字宽
度来访问。
16.3 特性
16.3.1 通用CAN特性
兼容 CAN 规范 2.0B、ISO11898-1;
多主机结构,带有无破坏性的位仲裁;
为高优先级报文确保了等待时间;
传输速率可编程(高达 1Mbit/s);
多播和广播报文功能;
数据长度:0~8 字节;
强大的错误处理能力;
非归零(NRZ)编码/译码,带有位填充。
16.3.2 CAN控制器特性
2 个 CAN 控
制器和总线;
支持 11 位和 29 位的标识符;
双重接收缓冲器和三态发送缓冲器;
可编程的错误报警界限和可读/写的错误计数器;
仲裁丢失捕获和错误代码捕获(带有详细的位位置);
1