车用集成精密电池传感器
ADuC7039
特性
存储器
64 kB Flash/EE存储器选项,4 kB SRAM
Flash/EE耐久性:10,000个周期,数据保持时间:20年
通过JTAG和LIN在线下载
片内外设
SAEJ2602/LIN 2.1兼容从机
SPI
GPIO端口
1个通用定时器
唤醒和看门狗定时器
片内上电复位
电源
12 V电池电源直接供电
功耗:7.5 mA (10 MHz)
低功耗监控模式
封装和温度范围
32引脚6 mm × 6 mm LFCSP封装
额定工作温度范围:−40°C至+115°C
通过汽车应用认证
高精度ADC
双通道、同步采样、16位Σ-Δ型ADC
可编程ADC吞吐量:10 Hz至1 kHz
片内5 ppm/°C基准电压源
电流通道
全差分、缓冲输入
可编程增益
ADC输入范围:−200 mV至+300 mV
数字比较器,内置电流累加器功能
电压通道
缓冲、片内衰减器,适用于12 V电池输入
温度通道
外部和片内温度传感器方案
微控制器
16位/32位RISC架构ARM7TDMI-S内核
20.48 MHz PLL
片内精密振荡器
JTAG端口支持代码下载和调试
应用
汽车系统电池检测/管理
图1.
Rev. D
Document Feedback
Information furnished by Analog Devices is believed to be accurate and reliable. However, no
responsibility is assumed by Analog Devices for its use, nor for any infringements of patents or other
rights of third parties that may result from its use. Specifications subject to change without notice. No
license is granted by implication or otherwise under any patent or patent rights of Analog Devices.
Trademarks and registered trademarks are the property of their respective owners.
One Technology Way, P.O. Box 9106, Norwood, MA 02062-9106, U.S.A.
Tel: 781.329.4700 ©2010–2013 Analog Devices, Inc. All rights reserved.
Technical Support
www.analog.com
ADI中文版数据手册是英文版数据手册的译文,敬请谅解翻译中可能存在的语言组织或翻译错误,ADI不对翻译中存在的差异或由此产生的错误负责。如需确认任何词语的准确性,请参考ADI提供
的最新英文版数据手册。
ADuC7039
目录
特性.................................................................................................. 1
应用.................................................................................................. 1
功能框图 ......................................................................................... 1
修订历史 ......................................................................................... 3
技术规格 ......................................................................................... 4
电气规格.................................................................................... 4
时序规格.................................................................................... 8
绝对最大额定值............................................................................ 9
ESD警告..................................................................................... 9
引脚配置和功能描述 ................................................................. 10
术语................................................................................................ 12
工作原理 ....................................................................................... 13
ARM7TDMI-S内核概览 ....................................................... 13
存储器结构 ............................................................................. 15
复位 .......................................................................................... 16
Flash/EE存储器............................................................................ 17
Flash/EE MMR接口 ............................................................... 17
Flash/EE存储器签名.............................................................. 21
Flash/EE存储器安全性 ......................................................... 22
Flash/EE存储器可靠性 ......................................................... 24
ADuC7039内核....................................................................... 24
存储器映射寄存器(MMR)........................................................ 26
完整MMR列表 ....................................................................... 27
16位Σ-Δ型模数转换器............................................................... 30
ADC接地开关 ........................................................................ 33
ADC噪声性能表 .................................................................... 33
ADC MMR接口...................................................................... 34
ADC Sinc3数字滤波器响应................................................. 43
ADC工作模式 ........................................................................ 44
ADC配置 ................................................................................. 46
I-ADC诊断 .............................................................................. 47
电源支持电路 .............................................................................. 48
系统时钟 ....................................................................................... 49
振荡器校准 ............................................................................. 54
中断系统 ....................................................................................... 59
定时器 ........................................................................................... 61
异步时钟域的定时器同步 ................................................... 61
定时器编程 ............................................................................. 62
定时器0—通用定时器 .......................................................... 63
定时器1—唤醒定时器 .......................................................... 65
定时器2—看门狗定时器...................................................... 67
通用输入/输出............................................................................. 69
串行外设接口(SPI) ..................................................................... 74
主机输入、从机输出(MISO)引脚 ..................................... 74
主机输出、从机输入(MOSI)引脚 ..................................... 74
串行时钟I/O (SCLK)引脚 .................................................... 74
从机选择(SS)引脚.................................................................. 74
SPI MMR接口 ......................................................................... 74
高压外设控制接口 ..................................................................... 78
低压标志(LVF) ....................................................................... 81
处理高压接口中断和高压通信 .......................................... 81
LIN(局域互连网络)接口 ........................................................... 83
LIN物理接口........................................................................... 83
LIN诊断 ................................................................................... 84
LIN通信 ................................................................................... 84
LIN MMR................................................................................. 84
器件标识 ....................................................................................... 88
推荐原理图................................................................................... 90
外形尺寸 ....................................................................................... 91
订购指南.................................................................................. 91
汽车应用级产品..................................................................... 91
Rev. D | Page 2 of 92
ADuC7039
修订历史
2013年3月—修订版C至修订版D
“固定10 MHz频率”改为“默认10 MHz频率”(通篇) ............... 1
更改“特性”部分和图1.................................................................. 1
更改表1 ........................................................................................... 5
更改表4 ......................................................................................... 12
更改“系统内核校验和”部分..................................................... 24
更改图9 ......................................................................................... 25
更改“ADCxOF默认值”................................................................41
更改图20 ....................................................................................... 49
更改“序列示例”部分.................................................................. 50
重新组织“LIN振荡器校准”部分的布局................................. 56
更改图22和表44 .......................................................................... 59
更改表59 ....................................................................................... 80
更改“高压状态寄存器功能描述”.............................................81
更改图31 ....................................................................................... 83
更改“器件标识”部分,增加表64 ............................................ 88
更新外形尺寸 .............................................................................. 91
更改“订购指南”............................................................................91
添加“汽车应用级产品”部分..................................................... 91
2010年6月—修订版0至修订版A
“特性”部分增加SAEJ2602 ........................................................... 1
更改表2 ........................................................................................... 9
更改表34中的位2和位1描述 .................................................... 39
更改“系统时钟”部分.................................................................. 49
增加“异步时钟域的定时器同步”部分、图23和图24 ......... 60
增加“定时器编程”部分.............................................................. 61
更改“推荐原理图”文本.............................................................. 89
2010年3月—修订版0:初始版
2012年1月—修订版B至修订版C
更改“LVF电平测试条件/注释”.................................................. 5
引脚25从GPIO_4改为GPIO_4/IRQ1 ...................................... 10
更改“Flash/EE存储器安全性”部分 ......................................... 22
更改图9 ......................................................................................... 25
更改图22和表44 .......................................................................... 59
更改表49中的GPIO_4端口信号与功能 ................................. 69
更改图33 ....................................................................................... 90
更新外形尺寸 .............................................................................. 91
2010年8月—修订版A至修订版B
更改“快速温度转换模式”部分 ................................................ 46
更改表62中的位4描述(LINCON[6]参考).............................. 86
更改“器件标识”部分.................................................................. 87
Rev. D | Page 3 of 92
ADuC7039
技术规格
电气规格
除非另有说明,VDD = 3.5 V至18 V,VREF = 1.2 V内部基准电压,fCORE = 20.48 MHz(采用片内精密振荡器驱动),且所有规格TA =
−40°C至+115°C。
表1.
参数
ADC技术规格
转换速率1
电流通道
无失码1
积分非线性(INL)1, 2
失调误差1, 2, 3
失调误差1, 3
失调误差1, 3
失调误差1, 3
失调误差漂移1, 2, 4
失调误差漂移1, 4
失调误差漂移1, 4
总增益误差1, 3, 5, 6
增益漂移1, 7
PGA增益不匹配误差
输出噪声1
电压通道8
无失码1
积分非线性(INL)1
失调误差1, 3
失调误差1, 3
失调误差漂移4
总增益误差1, 3, 5, 6
总增益误差1, 3, 5, 6
增益漂移1, 7
输出噪声1, 9
温度通道
无失码1
积分非线性(INL)1
失调误差3, 10
失调误差1, 3
失调误差漂移1
总增益误差1, 3, 10
增益漂移1
输出噪声1
测试条件/注释
最小值
ADC正常工作模式
ADC低功耗模式,斩波开启
10
10
对所有ADC更新速率和ADC模式有效
16
斩波关闭,外部短路,用户系统校准后,
1 LSB = (36.6/增益) μV
斩波开启,外部短路,低功耗模式,MCU关断
斩波开启,外部短路,用户系统校准后
测试条件:CD = 0,VDD = 18 V
斩波开启,外部短路,用户系统校准后
测试条件:CD = 0,VDD = 4 V
斩波关闭,增益为8至64,正常模式
斩波关闭,对于ADC增益512有效
斩波开启
增益为4时工厂校准,正常模式
低功耗模式
−10
+250
0
−0.5
−1
10 Hz更新速率,增益 = 512,斩波使能
1 kHz更新速率,增益 = 512,ADCFLT = 0x0007
1 kHz更新速率,增益 = 32,ADCFLT = 0x0007
1 kHz更新速率,增益 = 8,ADCFLT = 0x8101
1 kHz更新速率,增益 = 8,ADCFLT = 0x0007
1 kHz更新速率,增益 = 4,ADCFLT = 0x0007
ADC低功耗模式,250Hz更新速率,斩波使能,增益 = 512
典型值
最大值
单位
1000
650
Hz
Hz
±10
±3
±60
+10
位
FSR的ppm
LSB
±50
−300
3.0
nV
µV
±0.5
µV
±0.03
±30
±5
±0.1
±0.2
±3
±0.1
100
0.6
0.8
2.1
1.6
2.6
0.6
LSB/°C
nV/°C
nV/°C
%
%
ppm/°C
%
nV rms
µV rms
µV rms
µV rms
µV rms
µV rms
µV rms
+0.5
+1
150
0.9
1.2
4.1
2.4
3.9
0.9
16
在所有ADC更新速率下有效
斩波关闭,1 LSB = 439.5 μV,两点校准后
斩波开启,两点校准后
斩波关闭
包括电阻不匹配
温度范围 = −25°C至+65°C
包括电阻不匹配漂移
10 Hz更新速率,斩波开启
1 kHz更新速率,ADCFLT = 0x0007
−0.25
−0.15
在所有ADC更新速率下有效
16
斩波关闭,1 LSB = 19.84 μV(单极性模式下)
斩波开启
斩波关闭
VREF = (REG_AVDD, GND_SW)/2
1 kHz更新速率
Rev. D | Page 4 of 92
−10
−1
−10
−5
−0.25
±10
±1
±0.3
±0.03
±0.06
±0.03
±3
60
180
±60
+10
+1
±10
±3
+1
0.03
±0.06
3
7.5
±60
+10
+5
+0.25
+0.15
90
270
+0.25
11.25
位
FSR的ppm
LSB
LSB
LSB/°C
%
%
ppm/°C
µV rms
µV rms
位
FSR的ppm
LSB
LSB
LSB/°C
%
ppm/°C
µV rms
ADuC7039
参数
ADC模拟输入规格
电流通道
绝对输入电压范围1
输入电压范围11, 12
测试条件/注释
最小值
同时适用于IIN+和IIN−
−200
增益 = 4
增益 = 8
增益 = 32
增益 = 512
输入漏电流1
输入失调电流1, 13
电压通道
绝对输入电压范围1
输入电压范围1
VBAT输入电流
温度通道
绝对输入电压范围14
输入电压范围1
VTEMP输入电流1
基准电压源
内部VREF
上电时间1
初始精度1
温度系数1, 15
长期稳定性16
ADC诊断
VREF/136精度1
电压衰减器电流源精度1
电阻衰减器1
分频比
电阻不匹配漂移
ADC接地开关
接地电阻
温度传感器17
精度
上电复位(POR)1
POR触发电平
POR迟滞
POR复位超时
低压标志(LVF)
LVF电平
看门狗定时器(WDT)
超时周期1
超时步幅
Flash/EE存储器1
耐久性18
数据保持时间19
数字输入1
输入漏电流
输入上拉电流1
输入电容1
输入漏电流
输入下拉电流
逻辑输入1
输入低电压(VINL)
输入高电压(VINH)
典型值
最大值
单位
+300
mV
+3
1.5
mV
mV
mV
mV
nA
nA
±300
±150
±37.5
±2.3
−3
0.5
电压ADC规格在此范围内有效
VBAT = 18 V
VREF = (REG_AVDD, GND_SW)/2
4
3
18
0 to 28.8
5.5
100
8
1300
0至VREF
2.5
100
1.2
0.5
在TA = 25°C时测定
−0.15
−20
任意增益设置 ,完成选定增益的自校准后
当电流源开启时差分电压在衰减器上递增
8.4
2.3
±5
100
+0.15
+20
9.4
3.6
24
±3
包括在电压通道总增益误差中
V
V
µA
mV
V
nA
V
ms
%
ppm/°C
ppm/1000小时
mV
V
ppm/°C
15
20
30
kΩ
未校准
MCU处于关断或待机模式,TA= −40°C至+85°C
MCU处于关断或待机模式,TA= −20°C至+60°C
−10
−8
±3
±2
+10
+8
°C
ºC
参考VDD引脚的电压
2.85
3.0
300
20
3.15
V
mV
ms
参考REG_DVDD引脚的电压
1.9
2.1
2.3
V
32 kHz时钟,256预分频
0.008
524
秒
ms
7.8
10,000
20
除NTRST外的所有数字输入
输入高电平 = REG_DVDD
输入低电平 = 0 V
10
仅限NTRST:输入低电平 = 0 V
仅限NTRST:输入高电平= REG_DVDD
所有逻辑输入
30
周期
年
±1
20
10
±1
55
±10
80
±10
100
0.4
2.0
Rev. D | Page 5 of 92
µA
µA
pF
µA
µA
V
V
ADuC7039
参数
测试条件/注释
最小值
标称电源电压和室温下进行用户校准后;
包括1000小时寿命测试的漂移数据
−3
运行时校准后
默认设置
−1
典型值
最大值
单位
+3
kHz
%
片内振荡器
低功耗振荡器
精度
精密振荡器
精度
MCU时钟速率1
MCU启动时间1
上电时
复位事件后
从MCU关断起
内部PLL锁定时间
LIN通用I/O
波特率
VDD
输入电容1
LIN比较器响应时间1
LIN直流参数
ILIN DOM MAX
ILIN_PAS_REC1
ILIN_PAS_DOM1
ILIN_NO_GND1, 20
IBUS_NO_BAT1
VLIN_DOM1
VLIN_REC1
VLIN_CNT1
VHYS1
VLIN_DOM_DRV_LOSUP1
RL 500 Ω
RL 1000 Ω
VLIN_DOM_DRV_HISUP1
RL 500 Ω
RL 1000 Ω
VLIN_RECESSIVE1
VBAT偏移20
GND偏移20
RSLAVE
VSERIAL DIODE20
LIN交流参数1
D1
D2
D31, 20
D41, 20
128
128
包括内核上电执行时间
包括内核上电执行时间
振荡器运行
10.24
kHz
%
MHz
25
5
2
1
ms
ms
ms
ms
+1
1000
7
LIN接口工作电压范围
20,000
18
5.5
38
使用22 Ω电阻
LIN总线处于主动状态时驱动器电流限值,
VBAT = VBAT(最大值)
驱动器关闭,7.0 V < VBUS < 18 V, VDD = VLIN − 0.7 V
输入漏电流,VLIN = 0 V
控制单元接地断开,GND = VDD,0 V < VLIN < 18 V,
VBAT = 12 V
VBAT断开,VDD = GND,0 V < VBUS < 18 V
LIN接收器主动状态,VDD > 7.0 V
LIN接收器被动状态,VDD > 7.0 V
LIN接收器中心电压,VDD > 7.0 V
LIN接收器迟滞电压
LIN主动输出电压,VDD = 7.0 V
40
−1
−1
90
位/秒
V
pF
µs
200
mA
20
µA
mA
mA
+1
100
0.4 VDD
0.6 VDD
0.475 VDD
0.5 VDD
0.525 VDD
0.175 VDD
1.2
V
V
2
V
V
V
V
V
kΩ
V
0.6
LIN主动输出电压,VDD = 18 V
LIN被动输出电压
从机端接电阻
串行二极管处的压降,DSer_Int
总线负载条件(CBUS||RBUS):
1 nF||1 kΩ; 6.8 nF||660 Ω; 10 nF||500 Ω
占空比1
THREC(MAX) = 0.744 × VBAT
THDOM(MAX) = 0.581 × VBAT
VSUP = 7.0 V … 18 V; tBIT = 50 µs
D1 = tBUS_REC(MIN)/(2 × tBIT)
占空比2
THREC(MIN) = 0.284 × VBAT
THDOM(MIN) = 0.422 × VBAT
VSUP = 7.0 V … 18 V; tBIT = 50 µs
D2 = tBUS_REC(MAX)/(2 × tBIT)
THREC(MAX) = 0.778 × VBAT
THDOM(MAX) = 0.616 × VBAT
VDD = 7.0 V ... 18 V
tBIT = 96 µs
D3 = tBUS_REC(MIN)/(2 × tBIT)
THREC(min) = 0.389 × VBAT
THDOM(min) = 0.251 × VBAT
Rev. D | Page 6 of 92
0.8
0.8 VDD
0
0
20
0.4
30
0.7
µA
V
V
V
V
0.115 VDD
0.115 VDD
47
1
0.396
0.581
0.417
0.590
ADuC7039
参数
tRX_PDR1, 20
tRX_SYM1, 20
封装热规格
热阻(θJA)21
电源要求1
电源电压
VDD(电池电源)
REG_DVDD, REG_AVDD22
功耗
IDD(MCU正常模式)23
IDD(MCU关断)1
IDD(MCU关断)1
测试条件/注释
VDD = 7.0 V … 18 V
tBIT = 96 µs
D4 = tBUS_REC(MAX)/(2 × tBIT)
接收器传播延迟
接收器传播延迟上升沿相对于下降沿的对称性(tRX_SYM =
tRF_PDR − tRX_PDF)
最小值
典型值
−2
32引脚CSP,堆叠式芯片
最大值
单位
6
+2
µs
µs
32
3.5
2.45
ADC关闭(20.48 MHz)
ADC关闭(10.24 MHz)
ADC低功耗模式,在TA = −10°C至+40°C的环境温度范围内
测定,ADC连续转换
精密振荡器关闭,ADC关闭
平均电流,在唤醒和看门狗定时器从低功耗振荡器获取时
钟信号时测定(−40°C至+85°C)
平均电流,唤醒和看门狗定时器从低功耗振荡器获取时
钟信号时测定,−10°C至+40°C环境温度范围
IDD(电流ADC)
IDD(电压/温度ADC)
IDD(精密振荡器)
2.6
18
2.75
V
V
10
7.5
750
20
16
1000
mA
mA
µA
95
300
µA
95
175
µA
1.7
0.5
400
1
°C/W
mA
mA
µA
未经生产测试,但在产品发布时由设计和/或特性数据保证。
对于电流ADC增益设置PGA 40%的VREF/增益)。
片内Flash/EE存储器可以存储多个校准系数。这些校准系
数可根据系统配置由用户代码直接复制到相关校准寄存器
内。
对于I-ADC,工厂设置或下线校准分两步:
1. 施加0 A电流。根据所需PGA设置等条件配置ADC,并写
入ADCMDE[2:0]以进行系统零电平校准,从而将新失
调校准值写入ADC0DAT内。用户代码必须将此值存储
在ADC0OF或Flash/EE存储器中。
2. 针对所选PGA设置施加满量程电流。写入ADCMDE,
进行系统满量程校准,从而将新增益校准值写入
ADC0DAT内。用户软件必须将此值复制到ADC0GN
MMR或Flash/EE存储器。
Rev. D | Page 45 of 92
ADuC7039
了解失调和增益校准寄存器
ADC配置
ADC信号流中的平均模块输出可视为小数且正负满量程输
入范围约为±0.75。此范围小于±1.0,这是因为调制器有衰
减,使输入信号具有一定的超量程能力。由于工艺容差,
确切的衰减值因器件而略有不同。
快速温度转换模式
I-ADC
SAMPLING
ADC0OF正值表示从滤波器输出中减去失调,负值则相
加。此寄存器的标称值为0x0000,表明要消除零失调。实
际失调可能因器件、PGA增益而异。启用斩波模式(即
ADCFLT[15] = 1)可以将ADC内部失调降到最低。
V
V
T
T
T
V
V
V/T-ADC
SAMPLING
V
I-ADC
INTERRUPT
VALID V/T
CONVERSION
V
T
08463-031
增益系数是一个无单位比例因子,此寄存器的16位值除以
16,384后 再 乘 以 失 调 校 正 值 。 此 寄 存 器 的 标 称 值 为
0x5555,对应于乘法因子1.3333。这将把标称±0.75信号放
大到±1.0的满量程输出信号,在进行上溢/下溢检查后转换
成二进制补码或单极性模式,然后输出到数据寄存器。
V
V
CHANNEL SWITCHING REQUEST
图17. 默认温度模式,斩波关闭
温度通道提供一种快速模式,用于尽可能缩短电压转换和
温度转换之间的切换延迟时间,如图18和表36所示。
实际增益和零增益误差所需的调整系数因器件、PGA设置
而略有差异。上电复位时下载到ADC0GN的值对应PGA增
益为4的比例因子。如果在不同的PGA设置下使用此值,
可能会产生一定的增益误差。用户代码可以运行ADC校准
并覆盖校准系数,以校正当前PGA设置的增益误差。
I-ADC
SAMPLING
V
V
V
V
V
V
V
V
V
V/T-ADC
SAMPLING
V
I-ADC
INTERRUPT
VALID V/T
CONVERSION
总之,简化后的ADC传递函数可描述为
V T
V V
CHANNEL SWITCHING REQUEST
V × PGA
ADCGN
− ADCOF ×
ADCOUT = IN
V
ADCGN
REF
NOM
V
V
V
08463-032
失调系数读取自ADC0OF校准寄存器,此值是一个16位二
进制补码。就信号链而言,此值的有效范围为±1.0。因
此,ADC0OF寄存器的1 LSB和ADC0DAT寄存器的1 LSB不
一样。
电池温度可通过片内温度传感器获得。默认情况下,ADC
输入从电压通道切换到温度通道或从温度通道切换到电压
通道后,获得第一个有效(完全稳定)结果的时间为斩波模
式关闭时的三个ADC转换周期,如图17所示。
图18. 快速温度模式,斩波关闭(ADCFLT = 0x07)
请求进行快速温度转换时,会延迟一个ADC转换周期。温
度测量结果可用之后、请求进行新温度转换之前,必须退
出快速温度转换模式。
此公式对于电压/温度通道ADC有效。
对于电流通道ADC,
V × PGA
ADCGN
− K × ADCOF ×
ADCOUT = IN
V
ADCGN
REF
NOM
表36. 快速温度转换模式
其中K取决于PGA增益设置和ADC模式。
PGA增益为4和32时,系数K为1。PGA增益为512时,系数
K为8。
中断
1
2
3
有效标志
I和V
I和V
I和V
4
I和T
5
6
7
8
I
I
I和V
I和V
Rev. D | Page 46 of 92
用户代码
电压 = ADC1DAT
电压 = ADC1DAT
电压 = ADC1DAT
必须读取此数据,之后下一个温度
通道标志才会有效。
温度 = ADC1DAT
快速温度请求位清0
电压 = ADC1DAT
电压 = ADC1DAT
ADuC7039
快速温度选项不能用在ADC上电后的第一次转换上,至少
必须在第一个ADC中断后才能设置,但不必等待一个有效
的ADC结果出现。使用快速温度模式时,还有一个限制是
SF >=1。此外,在此工作模式下,建议使用1 ms的转换速率,
这是为了确保快速温度结果与当前通道结果同时出现。
I-ADC诊断
ADuC7039具有检测应用电路板开路状态的功能。这是通
过ADC0CON[14:13]控制IIN+和IIN−上的两个电流源来实
现的。
注意,这些电流源的容差为±30%。
写入ADCMDE、ADC0CON或ADCFLT以更改ADC配置
时,快速温度位也必须清0,以确保器件正常工作。这种
情况与ADC上电后的第一次转换相似。
Rev. D | Page 47 of 92
ADuC7039
电源支持电路
ADuC7039集成两个片内低压差(LDO)调节器,它们通过电
池电压直接驱动来产生一个2.6 V内部电源。然后,该2.6 V
电源用作ARM7 MCU和外设的电源,包括那些片内精密模
拟电路。
数字LDO利用REG_DVDD上并联的两个外部电容工作,模
拟LDO则利用REG_AVDD上的一个外部电容(0.47 μF)工作。
输出电容的ESR会影响LDO控制环路的稳定性。频率大于
32 kHz时,建议使用ESR为5 Ω或以下的电容以确保调节器
的稳定性。
如图19所示,当VDD上的电源电压达到最小工作电压3 V时,
POR信号将ARM内核保持在复位状态下20 ms。这样可以确
保 施 加 到 ARM内 核 及 相 关 外 设 的 调 节 电 源 电 压 (REG_
DVDD)大于最小工作电压,由此保证功能完整。RSTSTA
MMR中的POR标志位置1,指示发生了POR复位事件。
电压低于POR电平时,可使能另一个低压标志(HVCFG
[2])。它可用来指示SRAM的内容在复位事件后仍然有效。
低压标志的示例如图19所示。使能后,可通过HVSTA[2]监
控该位的状态。如果该位置1,则SRAM内容有效。如果该
位清0,则SRAM内容可能遭到破坏。
此外还集成了上电复位(POR)及低压标志(LVF)功能,以确
保MCU安全运行以及连续监控电池电源。POR电路的设计
VDD(0 V至12 V)上电时间大于100 μs。因此,选择外部电
源去耦元件时务必小心,确保VDD电源上电时间始终大于
100 μs。VDD上的串联电阻和去耦电容组合应确保RC时间常
数至少为100 μs,例如10 Ω和10 μF,如图33所示。
12V
VDD
3V TYP
POR TRIP 3.0V TYP
LVF TRIP 2.1V TYP
2.6V
REG_DVDD
20ms TYP
POR_TRIP
08463-018
RESET (INTERNAL
ACTIVE LOW RESET
SIGNAL)
ENABLE_LVF
图19. 典型上电周期
Rev. D | Page 48 of 92
ADuC7039
系统时钟
ADuC7039集成一个灵活的时钟系统,其时钟源可以是下
面两个集成的片内振荡器之一:精密振荡器和低功耗振
荡器。
ADC由PLL输出驱动,PLL输出经分频后提供512 kHz的ADC
时钟源。在低功耗模式下,ADC时钟源会从标准512 kHz
切换到低功耗128 kHz振荡器。
每个内部振荡器除以4即可产生32 kHz的时钟频率。两个内
部振荡器之一提供32 kHz,然后PLL锁定在它的倍数(640)上,
为系统提供稳定的20.48 MHz时钟。默认情况下,PLL由低
功耗振荡器驱动。
注意,低功耗振荡器通过一个4分频电路来同时驱动看门
狗和内核唤醒定时器。ADuC7039时钟系统的详细框图如
图20所示。
两个集成的振荡器可以按照“振荡器校准”部分所述进行
校准。
内核默认以10.24 MHz的固定频率工作。
128kHz
128kHz
LOW POWER
OSCILLATOR
PRECISION
OSCILLATOR
32kHz
LOW POWER
OSCILLATOR
CORE
CLOCK
32kHz
DIV 4
DIV 4
LOW POWER
OSCILLATOR
PLLCON
PLL
1
8
CORE
CLOCK
PLL OUTPUT
20.48MHz
LOW POWER
OSCILLATOR
CORE
CLOCK
CLOCK
DIVIDER
CORE
CLOCK
PLL LOCK
ADCMDE
TIMER0
TIMER1
WAKE-UP
TIMER2
WATCHDOG
LIN
INTERFACE
SPI
PLL
OUTPUT
FLASH
CONTROLLER
1
2CD
HIGH ACCURACY
CALIBRATION
COUNTER
LOW POWER
OSCILLATOR
LOW POWER
CALIBRATION
COUNTER
ADC
CLOCK
MCU
ADC
图20. ADuC7039系统时钟发生
Rev. D | Page 49 of 92
08463-019
CORE
CLOCK
PRECISION
OSCILLATOR
ADuC7039
工 作 模 式 和 时 钟 模 式 由 两 个 MMR控 制 (PLLC ON和
POWCON),PLL状态(PLL锁定和PLL中断)由PLLSTA指示。
如果用户代码需要精确的PLL输出,用户代码必须在唤醒
后、恢复正常代码执行前轮询锁定位(PLLSTA[1])。
关断ADuC7039之前,建议将PLL时钟源切换到低功耗振荡
器以缩短唤醒时间。低功耗振荡器始终有效。
PLL在唤醒后2 ms内锁定。
当 ADuC7039从 关 断 模 式 中 唤 醒 时 , PLL一 开 始 振 荡 ,
MCU内核就会执行代码。这发生在PLL锁定到20.48 MHz的
频率之前。为了确保Flash/EE存储器控制器获得有效的时
钟,当PLL正在锁定时,该控制器通过PLL输出8分频时钟
源来驱动。PLL锁定后,PLL输出才从这个8分频切换到锁
定的输出。
PLLCON为采用两个32位密钥保护的MMR:PLLKEY0(预
写密钥)和PLLKEY1(写后密钥)。
PLLKEY0 = 0x000000AA
PLLKEY1 = 0x00000055
PLLCON为采用两个32位密钥保护的MMR:POWKEY0(预
写密钥)和POWKEY1(写后密钥)。
POWKEY0 = 0x00000001
POWKEY1 = 0x000000F4
序列示例
写入两个MMR的示例如下:
写入POWCON MMR:
//Function Prototype
Void PowerDown (void)
PowerDown PROC
LDR
LDR
LDR
MOVS
STR
r2, = 0x98765432
r3, = 0x12345678
r0, = 0xffff0400
r1,#0x1
r1,[r0,#4]
MOVS
r1,#0x01
STR
r1,[r0,#8]
MOVS
STR
UMLAL
BX
ENDP
; Load random number for multiplication
;Base address
;POWKEY0 = 1
;Set POWKEY0
;Set POWCON value to recommended value of 0x01 to ensure a
10 MHz core clock
r1,#0xf4
r1,[r0,#0xc]
r1,r3,r2,r0
lr
;Set POWKEY1
;longest possible assembly multiplication instruction
;Flush ARM7 pipeline
写入PLLCON MMR:
PLLKEY0
PLLCON
PLLKEY1
iA1*iA2
change
=
=
=
0xAA
0x1
0x55
//PLLCON key
//Switch to precision oscillator.
//PLLCON key
//PSEUDOCODE-dummy cycle to prevent Flash/EE access during clock
Rev. D | Page 50 of 92
ADuC7039
PLLSTA寄存器
名称:
PLLSTA
地址:
0xFFFF0400
默认值:
0xXX
访问类型:
只读
功能:
该8位寄存器允许用户代码监控PLL的锁定状态。
表37. PLLSTA MMR位分配
位
7至2
1
描述
保留。
PLL锁定状态位,只读。
PLL锁定并输出20.48 MHz时,该位自动置1。
PLL未锁定并输出fCORE 8分频时钟源时,该位自动清0。
0
PLL中断。
PLL锁定状态位信号变为低电平时,该位置1。
用户代码写入1到该位可清0。
PLLCON预写密钥PLLKEY0
名称:
PLLKEY0
地址:
0xFFFF0410
访问类型:
只写
密钥:
0x000000AA
功能:
PLLCON是一个加密寄存器,PLLCON前后需写入32位密钥值。PLLKEY0为预写密钥。
PLLCON写后密钥PLLKEY1
名称:
PLLKEY1
地址:
0xFFFF0418
访问类型:
只写
密钥:
0x00000055
功能:
PLLCON是一个加密寄存器,PLLCON前后需写入32位密钥值。PLLKEY1为写后密钥。
PLLCON寄存器
名称:
PLLCON
地址:
0xFFFF0414
默认值:
0x00
访问类型:
读/写
功能:
该8位寄存器允许用户代码从两种不同振荡器源中动态选择PLL时钟源。
Rev. D | Page 51 of 92
ADuC7039
表38. PLLCON MMR位分配
位
7至1
0
1
描述
保留。应由用户代码置0。
PLL时钟源。1
0 = 低功耗振荡器。
1 = 精密振荡器。
如果用户代码切换MCU时钟源,在将时钟切换写入PLLCON后应插入一个MCU空周期。
POWCON预写密钥POWKEY0
名称:
POWKEY0
地址:
0xFFFF0404
访问类型:
只写
密钥:
0x00000001
功能:
POWCON是一个加密寄存器,POWCON前后需写入32位密钥值。POWKEY0为预写密钥。
POWCON写后密钥POWKEY1
名称:
POWKEY1
地址:
0xFFFF040C
访问类型:
只写
密钥:
0x000000F4
功能:
POWCON是一个加密寄存器,POWCON前后需写入32位密钥值。POWKEY1为写后密钥。
POWCON寄存器
名称:
POWCON
地址:
0xFFFF0408
默认值:
0x079
访问类型:
读/写
功能:
该12位寄存器允许用户代码动态进入各种低功耗模式。
Rev. D | Page 52 of 92
ADuC7039
表39. POWCON MMR位分配
位
11至9
8
7至6
5
4
3
2至0
描述
保留。这些位应该写入0。
精密振荡器使能。
该位由用户置1时,使能精密振荡器。
该位由用户清0时,关断精密振荡器。
保留。这些位应该写入0。
PLL关断。如果定时器外设由PLL输出时钟驱动,则关断。如果由有效时钟源驱动,则保持有效。
该位默认置1,并在唤醒事件时由硬件置1。
该位清0将关断PLL。内核或外设使能时不得关断PLL:位3、4及5必须同时清0。
外设关断。由此位关断的外设有:SRAM、Flash/EE存储器、GPIO接口以及SPI端口。
该位默认置1,并且/或者在唤醒事件时由硬件置1。即使该位置1,由低功耗振荡器驱动时,唤醒定时器(定时
器2)仍可继续工作。
该位清0将关断外设。内核使能时,外设无法关断:位3和位4必须同时清0。即使该位清0,LIN仍能对唤醒事
件作出响应。
内核关断。用户代码关断MCU时,在将关断命令写入POWCON后插入一个MCU空周期。
该位默认置1,并在唤醒事件时由硬件置1。
该位清0将关断ARM内核。
内核时钟分频器(CD)位。
000 = 20.48 MHz, 48.83 ns.
001 = 10.24 MHz,97.66 ns(上电默认设置)
010 = 5.12 MHz, 195.31 ns.
011 = 2.56 MHz, 390.63 ns.
100 = 1.28 MHz, 781.25 ns.
101 = 640 kHz, 1.56 μs.
110 = 320 kHz, 3.125 μs.
111 = 160 kHz, 6.25 μs.
Rev. D | Page 53 of 92
ADuC7039
振荡器校准
ADuC7039具有两个振荡器和两种校准方案:
器为10位,由低功耗振荡器提供时钟。时钟校准模式由下
列MMR控制:
• 低功耗振荡器可以利用精密振荡器或LIN通信校准。时
间值也可以由用户代码修改。
• 精密振荡器可以利用LIN通信校准。时间值也可以由用
户代码修改。
•
•
•
•
每个振荡器都有专用校准MMR:
校准程序示例如图21所示。用户代码利用OSCCON配置并
使能校准序列。当精密功耗振荡器校准计数器OSCVAL0达
到0x1FF时,两个计数器禁用。
• LOCUSR0是低功耗振荡器用户调整寄存器。它是一个8位
寄存器。提高LOCUSR0的值会降低低功耗振荡器的频
率;降低该值则会提高其频率。根据标称频率128 kHz,典
型调整范围在103 kHz到156 kHz之间。此MMR可以由用
户代码直接写入,或者由硬件相对于LIN波特率自动
更改。
• LOCUSR1是精密振荡器用户调整寄存器。它是一个10位
MMR。提高LOCUSR1的值会降低精密振荡器的频率;
降低该值则会提高其频率。根据标称频率128 kHz,典型
调整范围在94 kHz到178 kHz之间。此MMR可以由用户代
码直接写入,或者由硬件相对于LIN波特率自动更改。
• LOCVAL0是一个8位只读MMR,显示低功耗振荡器的当
前调整值。
• LOCVAL1是一个10位只读MMR,显示精密振荡器的当
前调整值。注意,从该寄存器可以读出11位,但只有10
位用于校准。
OSCCON—校准控制位。
OSCSTA—校准状态寄存器。
OSCVAL0—9位计数器0。
OSCVAL1—10位计数器1。
然后,用户代码回读低功耗振荡器校准计数器的值。有三
种可能情形:
• OSCVAL0 = OSCVAL1。无需进一步操作。
• OSCVAL0 > OSCVAL1。低功耗振荡器缓慢运行中。必须
降低LOCUSR0。
• OSCVAL0 < OSCVAL1。低功耗振荡器快速运行中。必须
提高LOCUSR0。
更改LOCUSR0后,应再次执行校准程序,同时检查新频
率。注意,LOCUSR0 MMR受密钥保护。写入LOCUSR0之
前,应将值0x1324写入LOCKEY。
利用内部精密振荡器执行校准程序耗时约4 ms。
BEGIN
CALIBRATION
ROUTINE
低功耗振荡器初始校准
复位后,低功耗振荡器以128 kHz的频率运行,最大误差为
中心频率128 kHz的−10%到+3%。客户生产线上的下线校准
必须在25°C ± 5°C的温度范围内执行,使低功耗振荡器和精
密振荡器的中心频率一致。校准后,低功耗振荡器的误差
为中心频率的±3%。
WAIT FOR
INTERRUPT
OSC0VAL0 < OSC0VAL1
OSC0VAL0 > OSC0VAL1
OSC0VAL0 = OSC0VAL1
该初始校准只需在下线时执行一次。进一步的校准可通过
用户代码执行,以补偿低功耗振荡器的温度漂移。
INCREASE
LOCUSR0
DECREASE
LOCUSR0
低功耗振荡器校准序列
128 kHz低功耗振荡器可以利用128 kHz精密振荡器校准。实
现这一功能需要用到两个专用校准计数器。
NO
IS ERROR WITHIN
DESIRED LEVEL?
一个计数器为9位,由精密振荡器提供时钟。另一个计数
END
CALIBRATION
ROUTINE
08463-020
YES
图21. OSCTRM校准程序
开始时钟校准程序前,用户必须将PLL时钟源切换到精密
振荡器。否则,每次修改LOCUSR0时,PLL可能失锁,从
而导致低功耗振荡器校准时间延长。
Rev. D | Page 54 of 92
ADuC7039
OSCCON寄存器
名称:
OSCCON
地址:
0xFFFF0440
默认值:
0x00
访问类型:
读/写
功能:
该8位寄存器控制低功耗振荡器校准程序。
表40. OSCCON MMR位分配
位
7 to 4
3
2
1
0
描述
保留。应写入0。
校准复位。
该位由用户代码置1时,复位校准计数器并禁用校准逻辑。
校准复位后,该位由用户代码清0。
OSCVAL1复位。
该位由用户代码置1时,清除OSCVAL1。
清除OSCVAL1后,该位由用户代码清0。
OSCVAL0复位。
该位由用户代码置1时,清除OSCVAL0。
清除OSCVAL0后,该位由用户代码清0。
校准使能。
该位由用户代码置1时,开始校准。
该位由用户代码清0时,中止校准。
OSCSTA寄存器
名称:
OSCSTA
地址:
0xFFFF0444
默认值:
0x00
访问类型:
只读
功能:
该8位寄存器指示低功耗振荡器校准程序的状态。
表41. OSCSTA MMR位分配
位
7至3
2
1
0
描述
保留。
振荡器校准结束。
校准周期完全结束时,该位由硬件置1。
读取OSCVAL1时,该位清0。
繁忙位。
校准正在进行时,该位由硬件置1。
校准结束时,该位由硬件清0。
校准完成中断。
位1解除置位时,该位由硬件置1。
读取OSCSTA MMR时,该位清0。
Rev. D | Page 55 of 92
ADuC7039
OSCVAL0寄存器
名称:
OSCVAL0
地址:
0xFFFF0448
默认值:
0x00
访问类型:
只读
功能:
该9位计数器由128 kHz精密振荡器提供时钟。
OSCVAL1寄存器
名称:
OSCVAL1
地址:
0xFFFF044C
默认值:
0x0000
访问类型:
只读
功能:
该10位计数器由128 kHz低功耗振荡器提供时钟。注意,可以读出11位,但只使用10位。
LIN振荡器校准
有9个MMR可用:
ADuC7039提供了第二种振荡器校准机制,这一新特性允
许根据LIN数据包中的同步元素校准时钟。它基于一个固
定且预定义的LIN波特率。新调整值从LIN通信获得。这种
方法需要足够数量的LIN处理,温度每变化10度,大约需
要1次。
LOCCON寄存器
如果LIN外设测得的波特率(位于LINBR MMR中)不在用户
代码定义的限值(位于LOCMIN和LOCMAX MMR中)范围内,
则所选振荡器调整位根据LIN振荡器校准控制寄存器选择
的选项进行修改,幅度为LOCCON中定义的步进数。
两个只读调整寄存器指示当前针对每个振荡器使用的调整
值。LIN振荡器校准模块修改这两个只读寄存器,但不修
改用户寄存器LOCUSRx。校准完成后,可以禁用LIN振荡
器校准,但禁用之前,须将LOCVALx的值复制到相应的
LOCUSRx寄存器。下一部分给出了一个例子。状态寄存器
指示所选振荡器的调整寄存器是否发生了改变。
名称:
LOCCON
地址:
0xFFFF0480
默认值:
0x00
访问类型:
读/写(密钥保护)
功能:
通过LIN控制寄存器执行振荡器校准。
表42. LOCCON MMR位分配
位
7至3
2至1
0
Rev. D | Page 56 of 92
描述
保留。读取0。
振荡器校准步进大小。
0x00 = 默认值,步进1。
0x01 = 步进2。
0x10 = 步进3。
0x11 = 步进4。
使能通过LIN执行振荡器校准。
该位由用户置1时,使能根据LIN波特率对选定的
振荡器进行自动校准。
该位由用户清0时,禁用自动校准。
ADuC7039
LOCUSR0寄存器
名称:
LOCUSR0
地址:
0xFFFF0484
默认值:
由内核更新
访问类型:
读/写(密钥保护)
功能:
低功耗振荡器的用户调整寄存器。
表43. LOCSTA MMR位分配
位
7至3
2
1
0
LOCUSR1寄存器
名称:
LOCUSR1
地址:
0xFFFF0488
默认值:
Updated by kernel
访问类型:
读/写(密钥保护)
功能:
精密振荡器的用户调整寄存器。
LOCVAL0寄存器
LOCMAX寄存器
名称:
LOCMAX
地址:
0xFFFF048C
默认值:
描述
保留。读取0。
低功耗振荡器调整值已修改。
精密振荡器调整值发生改变时,该位由硬件置1。
读取LOCSTA MMR时,该位由硬件清0。
精密振荡器调整值已修改。
精密振荡器调整值发生改变时,该位由硬件置1。
读取LOCSTA MMR时,该位由硬件清0。
选定的振荡器。
选择低功耗振荡器进行校准时,该位由硬件置1。
选择精密振荡器进行校准时,该位由硬件清0。
名称:
LOCVAL0
地址:
0xFFFF0498
默认值:
由内核更新
访问类型:
只读
功能:
低功耗振荡器当前调整值,只读。
LOCVAL1寄存器
名称:
LOCVAL1
0x00000
地址:
0xFFFF049C
访问类型:
读/写
默认值:
由内核更新
功能:
对于预定的波特率,LINBR中预期的上限。
访问类型:
只读
功能:
精密振荡器当前调整值,只读。
LOCMIN寄存器
名称:
LOCMIN
地址:
0xFFFF0490
默认值:
0x00000
访问类型:
读/写
功能:
对于预定的波特率,LINBR中预期的下限。
LOCKEY寄存器
名称:
LOCKEY
地址:
0xFFFF04A0
访问类型:
只写
功能:
必须写入才能解锁任何可写的校准寄存
器。写入此MMR的值为0x1324。
LOCSTA寄存器
名称:
LOCSTA
地址:
0xFFFF0494
默认值:
0x01
访问类型:
只读
功能:
校准状态寄存器。
Rev. D | Page 57 of 92
ADuC7039
开始LIN校准的典型序列如下:
LOCMIN
LOCMAX
LOCKEY
LOCCON
=
=
=
=
EXPECTED_LINBR_VALUE-0x20;
EXPECTED_LINBR_VALUE+0x20;
0x1324;
0x1;
//Define
//Define
//Unlock
//Enable
tolerance
tolerance
key protection
calibration with step size = 1
序列示例
利用LIN通信校准低功耗振荡器的示例如下:
LINCON = 0x800;
expected_baudrate = 0x10AB;
LOCMIN = EXPECTED_LINBR_VALUE-0x20;
LOCMAX = EXPECTED_LINBR_VALUE+0x20;
LOCKEY = 0x1324;
LOCCON = 0x1;
while ((LOCSTA & 0x05)!= 0x05){}
while ((LINBRLOCMAX)){}
temp_trim = LOCVAL0;
LOCKEY = 0x1324;
LOCUSR0 = temp_trim;
LOCKEY = 0x1324;
LOCCON = 0;
//Enable LIN
//Correspond to 19200 bps
//Define tolerance
//Define tolerance
//Unlock key protection
//Enable calibration with step size = 1
//Wait for the trim value to be modified
//Wait for the correct baud rate
//Store the trim value given
//Unlock key protection
//Write the trim value into the user MMR
//Unlock key protection
//Turn off the LIN calibration block
Rev. D | Page 58 of 92
ADuC7039
中断系统
ADuC7039拥有由中断控制器控制的10个中断源。大多数
中 断 都 是 由 片 内 外 设 产 生 的 , 例 如 ADC和 定 时 器 。
ARM7TDMI-S CPU内核只能识别以下两类中断:正常中断
请求(IRQ)和快速中断请求(FIQ)。所有中断都可以被单独
屏蔽。
TIMER0
TIMER1
FLASH/EE
PLL LOCK
IRQSIG
FIQSIG
TIMER2
LIN H/W
ADC
SPI
中断系统的控制和配置由9个中断相关的寄存器管理:4个
专用于IRQ,4个专用于FIQ,还有一个MMR用于选择编程
中断源。每一个IRQ和FIQ寄存器中的控制位都代表相同的
中断源,如表44所示。
IRQSTA
FIQSTA
HV
IRQ1
TIMER0
TIMER1
内核开始执行中断服务程序(ISR)后,应立即保存IRQSTA/
FIQSTA,以确保能够响应所有有效中断源。
FLASH/EE
PLL LOCK
IRQSIG
FIQEN
TIMER2
LIN H/W
ADC
08463-021
SPI
ARM7TDMI-S内核中断产生程序如图22所示。
HV
例如,设置定时器0每隔5 ms产生一次超时。第一次5 ms超
时后,FIQSIG[2]或IRQSIG[2]置1,只能通过写入T0CLRI
清 0。 如 果 在 IRQEN或 FIQEN内 没 有 使 能 定 时 器 0, 则
FIQSTA/IRQSTA[2]不会置1,也不会产生中断。如果在
IRQEN或FIQEN内使能定时器0,则FIQSTA[2]或IRQSTA
[2]置1或产生中断(FIQ或IRQ)。
IRQ1
图22. 中断结构
注意,CPSR的IRQ和FIQ中断位定义仅通过ARM内核来控
制中断识别,而非外设。例如,如果配置定时器2通过
IRQEN产生一个IRQ,则CPSR内的IRQ中断位置1(禁用)并
关断ADuC7039。中断发生后,外设唤醒,但ARM内核仍
处于关断状态。这相当于POWCON = 0x71。发生这种情况
时,ARM内核只能通过复位事件来上电。
表44. IRQ/FIQ MMR位分配
位
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14至31
描述
所有中断的逻辑或
SWI
定时器0
定时器1或唤醒定时器
定时器2或看门狗定时器
LIN
Flash/EE中断
PLL锁定
ADC
SPI
高压
低功耗振荡器校准完成
保留
IRQ1 ( GPIO IRQ1)
保留
IRQ
FIQ
注释
仅限FIQ MMR
不用于IRQEN/CLR和FIQEN/CLR。
GPIO4处的外部中断
Rev. D | Page 59 of 92
ADuC7039
IRQ
快速中断请求(FIQ)
IRQ是进入处理器IRQ模式的一个异常信号。它用于内、
外部事件的通用中断处理。
快速中断请求(FIQ)是进入处理器FIQ模式的一个异常信
号。它用于数据传输或低延迟通信通道任务处理。FIQ接
口与IRQ接口相同;此外,它还会提供二级中断(拥有最高
优先级)。器件内有4个32位寄存器专门用于FIQ,包括:
FIQSIG、FIQEN、FIQCLR和FIQSTA。
所有32位经逻辑“或”运算后,形成要发送给ARM7TDMI-S
内 核 的 IRQ信 号 。 器 件 有 如 下 4个 32位 寄 存 器 专 门 用 于
IRQ。
IRQSIG
IRQSIG是一个只读寄存器,反映不同IRQ源的状态。如果
一个外设产生了一个IRQ信号,IRQSIG中相应的位就会被
置1;否则就清0。当特定外设的中断被清除时,IRQSIG位
就会被清0。通过设置IRQEN MMR,可屏蔽所有IRQ中断源。
IRQEN
IRQEN提供当前使能屏蔽的值。将该寄存器的某一位置1时,
可使能相应的中断请求,此时将产生IRQ异常。将某一位
清0时,可禁用或屏蔽相应的中断请求,此时将无法产生
IRQ异常。IRQEN寄存器无法用来禁用中断。
IRQCLR
IRQCLR是一个只写寄存器,可清除IRQEN寄存器的相应
位,从而屏蔽相应的中断源。将该寄存器的某一位置1时,
会清除IRQEN寄存器的相应位,但不影响其他位。寄存器
IRQEN和IRQCLR配对使用,可以实现独立的使能屏蔽功
能,而无需执行原子性读-改-写操作。
IRQSTA
IRQSTA是一个只读寄存器,提供当前使能的IRQ源的状态
(IRQSIG和IRQEN对应位进行逻辑“与”操作)。置1时,这个
源将向ARM7TDMI-S内核发出一个有效的IRQ中断请求。
没有优先级编码器和中断矢量产生。该功能可以在软件中
通过一个普通的中断处理程序实现。
FIQSTA的位31至位1经逻辑“或”运算产生FIQ信号,传送到
内核以及FIQ和IRQ寄存器的位0(FIQ源)。
逻辑上FIQEN和FIQCLR不允许一个中断源同时使能IRQ和
FIQ屏蔽。FIQEN中的某一位被置1会导致IRQEN中的同一
位被清0。同样,IRQEN中的某一位被置1会导致FIQEN中
的同一位被清0。一个中断源可以被IRQEN屏蔽和FIQEN
屏蔽禁用。
可编程中断
因为可编程中断是无法屏蔽的,所以它们由另一个寄存器
SWICFG控制,通过这个寄存器可以同时写入IRQSTA和
IRQSIG寄存器和/或FIQSTA和FIQSIG寄存器。
专用于设置软件中断的32位寄存器为SWICFG,见表45。
该寄存器允许控制可编程源中断。
表45. SWICFG MMR位分配
位
31至3
2
1
0
描述
保留。
可编程中断FIQ。
通过将该位置1或清0,可将FIQSTA和FIQSIG寄存器
的位1置1或清0。
可编程中断IRQ。
通过将该位置1或清0,可将IRQSTA和IRQSIG寄存器
的位1置1或清0。
保留。
注意,任何中断信号的有效时间不得少于中断延迟时间,
这样才能保证中断信号能够被中断控制器检测到,或者被
用户在IRQSTA或FIQSTA寄存器中检测到。
Rev. D | Page 60 of 92
ADuC7039
定时器
ADuC7039具有3个通用定时器/计数器:
• 定时器0或通用定时器
• 定时器1或唤醒定时器
• 定时器2或看门狗定时器
在周期模式下,计数器以加载寄存器(TxLD寄存器)中的值
为起始值,递减/递增计数至0或满量程,然后再以该值为
起始值,重新开始计数。这意味着,当相关中断位置1时,
TxVAL会重新加载TxLD,计数再次从该值开始。
通过写入数据到某一定时器的控制寄存器(TxCON),可以
启动相应的定时器。计数模式和速度取决于TxCON中选择
的配置。
建议不要将0加载到TxLD寄存器中。通过访问计数器的值
寄存器(TxVAL),可以随时读出计数器的值。
在正常模式下,每当计数器的值达到0(递减计数)或满量程
(递增计数)时,都会产生一个IRQ中断。向某一定时器
(TxCLRI)的清除寄存器内写入任一数据,可以清除IRQ
中断。
图23显示了用户定时器MMR与内核定时器模块之间的接
口 。 用 户 代 码 可 以 直 接 访 问 所 有 定 时 器 MMR, 包 括
TxLD、TxVAL、TxCON和TxCLRI。数据必须从这些MMR
传输到定时器子系统内的内核定时器(T0、T1和T2)。这些
内核定时器由同步(SYNC)模块通过用户的MMR接口缓
冲。SYNC模块的主要作用是提供一种方法来确保数据和
所需的其它控制信号能够正确穿过异步时钟域。异步时钟
域的一个例子是:MCU以10 MHz内核时钟运行,定时器1以
32 KHz的低功耗振荡器频率运行。
这3个定时器可以在自由模式或周期模式下工作。
在自由模式下,利用TxLD寄存器中的值,计数器从最大值/
最小值开始递减/递增至0/满量程,然后再次从最大值/最
小值开始。这意味着,在自由模式下,当相关中断位置1时,
TxVAL不会重新加载;当计数器下溢或上溢时,计数值
翻转。
异步时钟域的定时器同步
USEER
MMR
INERFACE
ARM7TDMI
AMBA
AMBA
T0 REG
T0
SYNC
T0
T1 REG
T1
SYNC
T1
T2 REG
T2
SYNC
CORE
CLOCK
T0IRQ
T1IRQ
T2IRQ
T2
WDRST
0
1
2
08463-033
LOW
POWER
OSCILLATOR
图23. 定时器功能框图
Rev. D | Page 61 of 92
ADuC7039
SYNCHRONIZER FLIP-FLOPS
UNSYNCHRONIZED
SIGNAL
TIMER 2 LOW POWER
CLOCK DOMAIN
TARGET CLOCK
08463-034
CORE CLOCK (FCORE) DOMAIN
SYNCHRONIZED SIGNAL
图24. 跨时钟域信号的同步器
从图23可以看出,MMR逻辑和内核定时器逻辑位于不同且
异步的时钟域内。来自MMR内核时钟域并且传送到内部
定时器域的任何数据必须与内部定时器时钟域同步,确保
正确锁存到内核定时器时钟域。这是通过两个正反器实现
的,如图24所示,数据不仅同步,而且经过双缓冲,从而
确保数据在定时器时钟域中的完整性。
由于同步模块的存在,虽然MMR时钟域几乎是立即锁存
(利用快速内核时钟)定时器控制数据,但此数据不会立即
到达内核定时器逻辑,而是在所选内部定时器域时钟的至
少2个周期之后。
定时器编程
不同定时器域的同步还要求用户代码对定时器进行仔细编
程,决定何时停止或启动定时器。建议使用的代码控制定
时器模块何时停止和启动定时器,以及何时使用不同的时
钟域。如果使能定时器产生IRQ或FIQ异常,这种控制特别
重要。下面以定时器1为例进行说明。
暂停定时器1
暂 停 定 时 器 1时 , 建 议 屏 蔽 定 时 器 1的 IRQEN位 (使 用
IRQCLR),这可以防止不需要的IRQ在定时器1内部逻辑锁
存T1CON控制位之前产生MCU中断。
IRQCLR = WAKEUP_TIMER_BIT;
T1CON = 0x00;
// Masking interrupts
// halting the timer,
启动定时器1
启动定时器1时,建议首先将所需的TxLD值加载到定时器1。
然后,根据需要设置T1CON位以启动定时器。这将使能定
时器,但前提是定时器1时钟域已内部锁存T1CON位。因
此,建议插入3个时钟周期(对于32 kHz定时器时钟源,则
为100 μs)以上的延迟,使得T1LD值和T1CON值均可通过同
步逻辑锁存并到达定时器1域。延迟之后,建议使用T1CLRI =
0x00清 除 所 有 (意 外 的 )定 时 器 1中 断 。 最 后 , 将 IRQEN
MMR中的相应位置1可以解除屏蔽定时器1系统中断。示例
代码如下。
序列示例
假设定时器1按照上文所述中止。
T1LD = 0x1;
T1CON = 0x001F;
Delay(100us);
T1CLRI = 0 ;
IRQEN = WAKEUP_TIMER_BIT;
// Reload timer
// Enable timer, Low power oscillator, 32768 prescaler, periodic
// Include delay to ensure T1CON bits take effect
//* Clear Timer IRQ
// Unmask Timer1
Rev. D | Page 62 of 92
ADuC7039
定时器0值寄存器
定时器0—通用定时器
定时器0是一个16位通用定时器,可递增计数或递减计数。
定时器0采用内核时钟工作,预分频器为1或16,384。当预
分频器为16,384时,产生1.6 ms的最低分辨率,定时器可以
计数1分钟以上。
定时器0可以递增计数,也可以递减计数。16位值可通过
写入T0LD以载入到计数器内。当前计数器值可从T0VAL读
取。当定时器0上溢时,定时器0从T0LD寄存器中重新载入
数值。
名称:
T0VAL
地址:
0xFFFF0304
默认值:
0x0000
访问类型:
只读
功能:
T0VAL为16位寄存器,用于保存定时器0
的当前值。
定时器0控制寄存器
定时器0接口包括4个寄存器:
• T0LD是一个16位寄存器,用于保存载入计数器的16位值。
• T0VAL是一个16位寄存器,用于保存定时器0的当前16
位值。
• T0CLRI是一个8位寄存器。向其中写入任意值,可以清
除定时器0中断。
• T0CON是一个16位配置寄存器,如表46所示。
定时器0载入寄存器
名称:
T0CON
地址:
0xFFFF0308
默认值:
0x0000
访问类型:
读/写
功能:
该16位寄存器用于设置定时器0的工作
模式。
定时器0清除寄存器
名称:
T0LD
地址:
0xFFFF0300
默认值:
0x0000
访问类型:
读/写
功能:
T0LD为16位寄存器,用于保存载入计数
器的16位值。
名称:
T0CLRI
地址:
0xFFFF030C
访问类型:
只写
功能:
通过用户代码向该8位只写寄存器写入任
意值,可以清除中断。
Rev. D | Page 63 of 92
ADuC7039
16-BIT LOAD
PRESCALER
1 OR 16,384
16-BIT UP/DOWN COUNTER
TIMER0
VALUE
图25. 定时器0框图
表46. T0CON MMR位分配
位
15至6
5
4
3
2
1至0
描述
保留。
定时器0模式。
该位由用户代码置1时,选择周期模式。
该位由用户代码清0时,选择自由模式(默认)。
递增计数。
该位由用户代码置1时,定时器0递增计数。
该位由用户代码清0时,定时器0递减计数(默认)。
定时器0使能位。
该位由用户代码置1时,使能定时器0。
该位由用户代码清0时,禁用定时器0(默认)。
保留。
预分频器。
00 = 时钟源/1(默认)。
01 = 时钟源/1。
10 = 时钟源/16,384。
11 = 时钟源/16,384。
Rev. D | Page 64 of 92
TIMER0 IRQ
08463-022
CORE CLOCK
FREQUENCY
ADuC7039
定时器1值寄存器
定时器1—唤醒定时器
定时器1是一个带有可编程预分频器的32位唤醒定时器,
可递增计数或递减计数。所选时钟源(内核时钟或低功耗振
荡器)的分频系数共有1、16、256或32,768四种。如果从低
功耗振荡器获得时钟,当内核时钟被禁用时,唤醒定时器
仍继续运行。
名称:
T1VAL
地址:
0xFFFF0324
默认值:
0xFFFFFFFF
访问类型:
只读
定时器1在溢出时从T1LD重新载入值。
功能:
T1VAL是一个32位寄存器,用于保存定
时器1的当前值。
定时器1接口有4个寄存器:
• T1LD和T1VAL均为32位寄存器,用于保存32位无符号
整数。T1VAL为只读寄存器。
• T1CLRI是一个8位寄存器。向其中写入任意值,可以清
除定时器1中断。
• T1CON是一个16位配置寄存器,如表47所示。
定时器1载入寄存器
定时器1清除寄存器
名称:
T1CLRI
地址:
0xFFFF032C
默认值:
只写
功能:
通过用户代码向该8位只写寄存器写入任意
值,可以清除中断。
名称:
T1LD
地址:
0xFFFF0320
定时器1控制寄存器
默认值:
0x00000000
名称:
T1CON
访问类型:
读/写
地址:
0xFFFF0328
功能:
T1LD是一个32位寄存器,用于保存载入
计数器的32位值。
默认值:
0x0000
访问类型:
读/写
功能:
T1CON是一个16位寄存器,用于设置定
时器1的工作模式。
Rev. D | Page 65 of 92
ADuC7039
32-BIT LOAD
LOW POWER
OSCILLATOR
PRESCALER
1, 16, 256, OR 32,768
32-BIT UP/DOWN
COUNTER
TIMER1 IRQ
TIMER1
VALUE
图26. 定时器1框图
表47. T1CON MMR位分配
位
15至6
5
4
3
2
1至0
描述
保留。这些位应该写入0。
定时器1模式。
该位由用户代码置1时,选择周期模式。
该位由用户代码清0时,选择自由模式(默认)。
递增计数。
该位由用户代码置1时,定时器1递增计数。
该位由用户代码清0时,定时器1递减计数(默认)。
定时器1使能位。
该位由用户代码置1时,使能定时器1。
该位由用户代码清0时,禁用定时器1(默认)。
时钟选择。
0 = 内核时钟(默认)。
1 = 低功耗(32.768 kHz)振荡器。
预分频器。
00 = 时钟源/1(默认)。
01 = 时钟源/16。
10 = 时钟源/256。
11 = 时钟源/32,768。
Rev. D | Page 66 of 92
08463-100
CORE CLOCK
FREQUENCY
ADuC7039
定时器2—看门狗定时器
定时器2接口有4个寄存器:
定时器2共有两种工作模式:正常模式和看门狗模式。看
门狗定时器用于强制处理器从非法软件状态恢复到正常工
作状态。一旦看门狗定时器被使能,它需要周期性服务来
阻止自身强制处理器执行复位操作。
• T2LD是一个16位寄存器,用于保存载入计数器的16位
值。
• T2VAL是一个16位寄存器,用于保存定时器2的当前16
位值。
• T2CLRI是一个8位寄存器。在正常模式下向这个寄存器
写入任意值,将清除定时器2中断;在看门狗模式下向
这个寄存器写入任意值,则重新开始一个超时周期。
• T2CON是一个16位配置寄存器,如表48所示。
当定时器2在正常模式下溢出时,或者在看门狗模式下写
入T2CLRI时,定时器2将重新载入T2LD中的值。
正常模式
正常模式下的定时器2与16位工作模式下的定时器0相同(时
钟源和预分频器除外)。时钟源采用低功耗振荡器,分频系
数共有1、16和256三种。
定时器2载入寄存器
名称:
T2LD
看门狗模式
地址:
0xFFFF0340
将T2CON[5]置1可进入看门狗模式。定时器2从T2LD寄存
器中的超时值开始递减计数,直至计数值为0。当使用
1/256的最大预分频和T2LD的满量程值时,最长超时时间
为524秒。
默认值:
0x0050
访问类型:
读/写
功能:
T2LD是一个16位寄存器,用于保存载入
计数器的16位值。
Flash/EE存储器完成一次页擦除操作需要20 ms,为避免与此
发生任何冲突,用户软件不得将超时周期设为小于30 ms。
定时器2清除寄存器
当T2VAL到达0时,系统产生复位或中断,具体取决于
T2CON[1]的值。要避免出现复位或中断事件,必须在
T2VAL达到0之前将任意值写入T2CLRI。此操作可将T2LD
的值重新载入计数器内,且重新开始一个新的超时周期。
名称:
T2CLRI
地址:
0xFFFF034C
访问类型:
Write only
一旦进入看门狗模式,T2LD和T2CON就会被写保护。
功能:
除非通过上电复位将看门狗定时器复位,否则,无法修改
这两个寄存器内的数据。其它任何复位事件产生后,看门
狗定时器仍会继续计数。看门狗定时器应在用户代码的最
初行内配置以免陷入看门狗复位的无限循环内。
在正常模式下,通过用户代码向该8位只
写寄存器写入任意值,可清除中断;在
看门狗模式下则可复位超时。
名称:
T2VAL
地址:
0xFFFF0344
默认值:
0x0050
访问类型:
只写
功能:
T2VAL为16位寄存器,用于保存定时器2
的当前值。
定时器2在JTAG调试访问期间自动暂停,并且只在JTAG放
弃ARM7内核控制权后才会重新开始计数。默认情况下,
定时器2可在关断期间继续计数。这可通过将T2CON[0]置1
来禁用。建议采用默认值,即在关断期间仍允许看门狗定
时器继续计数。
定时器2值寄存器
定时器2控制寄存器
名称:
T2CON
地址:
0xFFFF0348
默认值:
0x0000
访问类型:
读/写
功能:
该16位寄存器用于设置定时器2的工作
模式。
Rev. D | Page 67 of 92
ADuC7039
16-BIT LOAD
PRESCALER
1, 16, 256
16-BIT
UP/DOWN COUNTER
WATCHDOG RESET
TIMER2 IRQ
TIMER2
VALUE
图27. 定时器2框图
表48. T2CON MMR位分配
位
15至9
8
7
6
5
4
3至2
1
0
描述
保留。这些位保留,应由用户代码写入0。
递增/递减计数使能。
该位由用户代码置1时,定时器2递增计数。
该位由用户代码清0时,定时器2递减计数。
定时器2使能。
该位由用户代码置1时,使能定时器2。
该位由用户代码清0时,禁用定时器2。
定时器2工作模式。
该位由用户代码置1时,选择周期模式。
该位由用户代码清0时,选择自由模式。
看门狗定时器模式使能。
该位由用户代码置1时,使能看门狗模式。
该位由用户代码清0时,禁用看门狗模式。
保留。这些位保留,应由用户代码写入0。
定时器2时钟预分频器。
00 = 时钟源/1(默认)。
01 = 时钟源/16。
10 = 时钟源/256。
11 = 保留。
看门狗定时器IRQ使能。
该位由用户代码置1时,可在看门狗计数值为0时产生IRQ中断而非复位。
该位由用户代码清0时,禁用IRQ选项。
PD_OFF.
该位由用户代码置1时,则利用POWCON MMR位4关断外设时停止定时器2。
该位由用户代码清0时,则利用POWCON MMR位4关断外设时使能定时器2。
Rev. D | Page 68 of 92
08463-024
LOW POWER
OSCILLATOR
ADuC7039
通用输入/输出
ADuC7039共有6个通用双向输入/输出(GPIO)引脚。一般
情况下,通过用户代码设置,GPIO引脚可以实现多种功能。
默认情况下,GPIO引脚在GPIO模式下工作。所有GPIO引
脚都具有一个内部上拉电阻,吸电流能力为0.8 mA,源电流
能力为0.1 mA。典型GPIO结构如图28所示。
REG_DVDD
OUTPUT DATA
GPDAT[23:16]
INPUT DATA
GPDAT[7:0]
GPIO
引脚
GPIO_0
GPIO_1
GPIO_2
GPIO
GPIO_3
08463-025
OUTPUT DRIVE ENABLE
GPDAT[31:24]
表49. 外部GPIO引脚到内部端口信号分配
GPIO_4
图28. ADuC7039 GPIO
这6个GPIO归属于一个6位宽端口。该端口的GPIO分配详
见表49。
在正常操作期间,用户代码可利用这些通用寄存器来控制
外 部 GPIO引 脚 的 功 能 和 状 态 。 所 有 GPIO引 脚 在 关 断
(POWCON)模式期间保持其外部电平(高或低)。
GPIO_5
端口
信号
P0.0
SS
P0.1
SCLK
P0.2
MISO
P0.3
MOSI
P0.4
LINRx
IRQ1
P0.5
LINTx
功能(由GPCON定义)
通用I/O。
SPI从机选择I/O。
通用I/O。
SPI串行时钟I/O。
通用I/O。
SPI主机输入、从机输出。
通用I/O。
SPI主机输出、从机输入。
通用I/O。
LIN一致性测试的LIN输入。
外部中断请求1。
通用I/O。
LIN一致性测试的LIN输出。
端口引脚由以下4个MMR配置和控制:
•
•
•
•
GPCON:控制寄存器
GPDAT:配置和数据寄存器
GPSET:数据设置
GPCLR:数据清零
Rev. D | Page 69 of 92
ADuC7039
GPIO端口控制寄存器
名称:
GPCON
地址:
0xFFFF0D00
默认值:
0x00000000
访问类型:
读/写
功能:
该32位MMR选择每个端口引脚的功能。
表50. GPCON MMR位分配
位
31至21
20
19至17
16
15至13
12
11至9
8
7至5
4
3至1
0
描述
保留。这些位保留,应由用户代码写入0。
GPIO_5功能选择位。
该位由用户代码清0时,GPIO_5引脚配置为通用I/O (GPIO)引脚。
该位由用户代码置1时,GPIO_5引脚配置为LIN一致性测试的LIN输出。
保留。这些位保留,应由用户代码写入0。
GPIO_4功能选择位。
该位由用户代码清0时,GPIO_4引脚配置为通用I/O (GPIO)引脚。
该位由用户代码置1时,GPIO_4引脚配置为LIN一致性测试的LIN输入。
保留。这些位保留,应由用户代码写入0。
GPIO_3功能选择位。
该位由用户代码清0时,GPIO_3引脚配置为通用I/O (GPIO)引脚。
该位由用户代码置1时,GPIO_3引脚配置为SPI端口的MOSI(主机输出从机输入)。
保留。这些位保留,应由用户代码写入0。
GPIO_2功能选择位。
该位由用户代码清0时,GPIO_2引脚配置为通用I/O (GPIO)引脚。
该位由用户代码置1时,GPIO_2引脚配置为SPI端口的MISO(主机输入从机输出)。
保留。这些位保留,应由用户代码写入0。
GPIO_1功能选择位。
该位由用户代码清0时,GPIO_1引脚配置为通用I/O (GPIO)引脚。
该位由用户代码置1时,GPIO_1引脚配置为SPI端口的SCLK(串行时钟I/O)。
保留。这些位保留,应由用户代码写入0。
GPIO_0功能选择位。
该位由用户代码清0时,GPIO_0引脚配置为通用I/O (GPIO)引脚。
该位由用户代码置1时,GPIO_0引脚配置为SPI端口的SS(从机选择输入)。
Rev. D | Page 70 of 92
ADuC7039
GPIO端口数据寄存器
名称:
GPDAT
地址:
0xFFFF0D10
默认值:
0x000000FF
访问类型:
读/写
功能:
该32位寄存器用于配置GPIO引脚的方向,还设置用作输出端的GPIO引脚的输出值并读取用作输入端的
GPIO引脚的状态。
表51. GPDAT MMR位分配
位
31至30
29
23至22
21
20
19
18
17
16
15至6
5
4
描述
保留。这些位保留,应由用户代码写入0。
端口0.5方向选择位。
该位由用户代码清0时,将分配给端口0.5的GPIO引脚配置为输入端。
该位由用户代码置1时,将分配给端口0.5的GPIO引脚配置为输出端。
端口0.4方向选择位。
该位由用户代码清0时,将分配给端口0.4的GPIO引脚配置为输入端。
该位由用户代码置1时,将分配给端口0.4的GPIO引脚配置为输出端。
端口0.3方向选择位。
该位由用户代码清0时,将分配给端口0.3的GPIO引脚配置为输入端。
该位由用户代码置1时,将分配给端口0.3的GPIO引脚配置为输出端。
端口0.2方向选择位。
该位由用户代码清0时,将分配给端口0.2的GPIO引脚配置为输入端。
该位由用户代码置1时,将分配给端口0.2的GPIO引脚配置为输出端。
端口0.1方向选择位。
该位由用户代码清0时,将分配给端口0.1的GPIO引脚配置为输入端。
该位由用户代码置1时,将分配给端口0.1的GPIO引脚配置为输出端。
端口0.0方向选择位。
该位由用户代码清0时,将分配给端口0.0的GPIO引脚配置为输入端。
该位由用户代码置1时,将分配给端口0.0的GPIO引脚配置为输出端。
保留。这些位保留,应由用户代码写入0。
端口0.5数据输出。写入到该位的值直接出现在分配给端口0.5的GPIO引脚上。
端口0.4数据输出。写入到该位的值直接出现在分配给端口0.4的GPIO引脚上。
端口0.3数据输出。写入到该位的值直接出现在分配给端口0.3的GPIO引脚上。
端口0.2数据输出。写入到该位的值直接出现在分配给端口0.2的GPIO引脚上。
端口0.1数据输出。写入到该位的值直接出现在分配给端口0.1的GPIO引脚上。
端口0.0数据输出。写入到该位的值直接出现在分配给端口0.0的GPIO引脚上。
保留。这些位保留,应由用户代码写入0。
端口0.5数据输入。只读,反映分配给端口0.5的GPIO引脚的当前状态。应由用户代码写入0。
端口0.4数据输入。只读,反映分配给端口0.4的GPIO引脚的当前状态。应由用户代码写入0。
3
2
端口0.3数据输入。只读,反映分配给端口0.3的GPIO引脚的当前状态。应由用户代码写入0。
端口0.2数据输入。只读,反映分配给端口0.2的GPIO引脚的当前状态。应由用户代码写入0。
1
端口0.1数据输入。只读,反映分配给端口0.1的GPIO引脚的当前状态。应由用户代码写入0。
0
端口0.0数据输入。只读,反映分配给端口0.0的GPIO引脚的当前状态。应由用户代码写入0。
28
27
26
25
24
Rev. D | Page 71 of 92
ADuC7039
GPIO端口设置寄存器
名称:
GPSET
地址:
0xFFFF0D14
默认值:
N/A
访问类型:
只写
功能:
该32位MMR允许用户代码对外部GPIO引脚分别进行位寻址以仅将其单独拉高。用户代码可利用GPSET
MMR来实现此操作,而不必修改或维持任何其它GPIO引脚的状态(使用GPDAT时用户代码要求)。
表52. GPSET MMR位分配
位
31至22
21
20
19
18
17
16
15至0
描述
保留。这些位保留,应由用户代码写入0。
端口0.5设置位。
该位由用户代码置1时,将外部GPIO_5引脚拉高。
该位由用户软件清0时,不影响外部GPIO_5引脚。
端口0.4设置位。
该位由用户代码置1时,将外部GPIO_4引脚拉高。
该位由用户软件清0时,不影响外部GPIO_4引脚。
端口0.3设置位。
该位由用户代码置1时,将外部GPIO_3引脚拉高。
该位由用户软件清0时,不影响外部GPIO_3引脚。
端口0.2设置位。
该位由用户代码置1时,将外部GPIO_2引脚拉高。
该位由用户软件清0时,不影响外部GPIO_2引脚。
端口0.1设置位。
该位由用户代码置1时,将外部GPIO_1引脚拉高。
该位由用户软件清0时,不影响外部GPIO_1引脚。
端口0.0设置位。
该位由用户代码置1时,将外部GPIO_0引脚拉高。
该位由用户软件清0时,不影响外部GPIO_0引脚。
保留。这些位保留,应由用户代码写入0。
Rev. D | Page 72 of 92
ADuC7039
GPIO端口清零寄存器
名称:
GPCLR
地址:
0xFFFF0D18
默认值:
N/A
访问类型:
只写
功能:
该32位MMR允许用户代码对外部GPIO引脚分别进行位寻址以仅将其单独拉低。用户代码可利用GPCLR
MMR来实现此操作,而不必修改或维持任何其它GPIO引脚的状态(使用GPDAT时用户代码要求)。
表53. GPCLR MMR位分配
位
31至22
21
20
19
18
17
16
15至0
描述
保留。这些位保留,应由用户代码写入0。
端口0.5清除位。
该位由用户代码置1时,将外部GPIO_5引脚拉低。
该位由用户软件清0时,不影响外部GPIO_5引脚。
端口0.4清除位。
该位由用户代码置1时,将外部GPIO_4引脚拉低。
该位由用户软件清0时,不影响外部GPIO_4引脚。
端口0.3清除位。
该位由用户代码置1时,将外部GPIO_3引脚拉低。
该位由用户软件清0时,不影响外部GPIO_3引脚。
端口0.2清除位。
该位由用户代码置1时,将外部GPIO_2引脚拉低。
该位由用户软件清0时,不影响外部GPIO_2引脚。
端口0.1清除位。
该位由用户代码置1时,将外部GPIO_1引脚拉低。
该位由用户软件清0时,不影响外部GPIO_1引脚。
端口0.0清除位。
该位由用户代码置1时,将外部GPIO_0引脚拉低。
该位由用户软件清0时,不影响外部GPIO_0引脚。
保留。这些位保留,应由用户代码写入0。
Rev. D | Page 73 of 92
ADuC7039
串行外设接口(SPI)
ADuC7039片内集成一个完整的硬件串行外设接口(SPI)。
SPI是一种工业标准同步串行接口,允许同时双向传输8位
数据(即全双工),最大比特率可达5.12 Mb。
该SPI端口可配置为主机或从机操作,一般由4个引脚组
成:MISO、MOSI、SCLK和SS。
主机输入、从机输出(MISO)引脚
在主机模式下,MISO引脚被配置为输入线路;在从机模
式下,配置为输出线路。主机上的MISO线路(数据输入)应
与从机内的MISO线路(数据输出)相连。传送的数据是以字
节(8位)为单位的串行数据,MSB优先。
从机选择(SS)引脚
在SPI从机模式时,置位SS引脚将启动数据传输,该引脚为
一个低电平有效输入信号。然后,SPI端口开始发送和接收
8位数据,直到SS解除置位,传输结束。在从机模式下,
SS总是为输入。
在SPI主机模式下,SS是低电平有效输出信号。传输开始
后,它自动置位;传输完成后,它自动解除置位。
SPI MMR接口
下列MMR寄存器用来控制SPI接口:SPISTA、SPIRX、
SPITX、SPIDIV和SPICON。
主机输出、从机输入(MOSI)引脚
SPIRX寄存器
在主机模式下,MOSI引脚被配置为输出线路;在从机模
式下,配置为输入线路。主机上的MOSI线路(数据输出)应
与从机内的MOSI线路(数据输入)相连。传送的数据是以字
节(8位)为单位的串行数据,MSB优先。
名称:
SPIRX
地址:
0xFFFF0A04
默认值:
0x00
串行时钟I/O (SCLK)引脚
访问类型:
只读
功能:
该8位寄存器是SPI接收寄存器。
主机串行时钟(SCLK)用于同步MOSI SCLK周期中发送和接
收的数据。所以,发送/接收一个字节需要8个SCLK周期。
在主机模式下,SCLK引脚配置成输出端,而在从机模式
下,配置成输入端。
在主机模式下,时钟的极性和相位由SPICON寄存器控
制,SPIDIV寄存器的值决定了比特率。比特率的计算公式
如下:
f SERIALCLOCK =
20.48 MHz
2 × (1 + SPIDIV )
主机模式支持的最大比特率为10.24 Mb。在从机模式下,可
对SPICON寄存器进行设置,以配置预期输入时钟的相位
和极性。从机可以从外部主机接收数据(速率可达5.12 Mb)。
在主机模式和从机模式下,数据都在SCLK信号的一个沿发
送,并在另一个沿采样。所以,从机时钟的极性和相位必
须与主机配置一致。
SPITX寄存器
名称:
SPITX
地址:
0xFFFF0A08
默认值:
N/A
访问类型:
只写
功能:
该8位寄存器是SPI发送寄存器。
SPIDIV寄存器
名称:
SPIDIV
地址:
0xFFFF0A0C
默认值:
0x00
访问类型:
读/写
功能:
该6位寄存器是SPI波特率选择寄存器。
Rev. D | Page 74 of 92
ADuC7039
SPI状态寄存器
名称:
SPISTA
地址:
0xFFFF0A00
默认值:
0x0000
访问类型:
只读
功能:
该16位寄存器用于存储主机、从机模式下SPI接口的状态。
表54. SPISTA MMR位分配
位
15至12
11
10至8
7
6
5
描述
保留位。
SPI接收FIFO存在过剩字节。
接收FIFO的字节数超过由SPICON寄存器中SPIRXMDE位规定的字节数后,该位置1。
FIFO中的字节数不超过由SPIRXMDE位规定的字节数时,该位清0。
SPI接收FIFO状态位。
[000] = 接收FIFO为空。
[001] = 该FIFO内有1个有效字节。
[010] = 该FIFO内有2个有效字节。
[011] = 该FIFO内有3个有效字节。
[100] = 该FIFO内有4个有效字节。
SPI接收FIFO溢出状态位。
当接收FIFO已满时,如果向该FIFO内加载新数据,该位置1。除非SPICON[12]置1,否则该位置1将产生一个中断。
读取SPISTA寄存器的内容后,该位清0。
SPI接收IRQ状态位。
产生接收中断时,该位置1。当SPICON[6]清0,并且接收到所需字节数后,该位置1。
读取SPISTA寄存器的内容后,该位清0。
SPI发送IRQ状态位。
产生发送中断时,该位置1。当SPICON[6]置1,并且已发送所需字节数后,该位置1。
读取SPISTA寄存器的内容后,该位清0。
4
SPI发送FIFO下溢。
当启动一次发送操作且发送FIFO内没有有效数据时,该位置1。除非SPICON[13]置1,否则该位置1将产生一个中断。
读取SPISTA寄存器的内容后,该位清0。
3至1
SPI发送FIFO状态位。
000 = 发送FIFO为空。
001 = 该FIFO内有1个有效字节。
010 = 该FIFO内有2个有效字节。
011 = 该FIFO内有3个有效字节。
100 = 该FIFO内有4个有效字节。
SPI中断状态位。
SPI中断发生时,该位置1。
读取SPISTA寄存器的内容后,该位清0。
0
Rev. D | Page 75 of 92
ADuC7039
SPI控制寄存器
名称:
SPICON
地址:
0xFFFF0A10
默认值:
0x0000
访问类型:
读/写
功能:
该16位寄存器用于在主机和从机模式下配置SPI外设。
表55. SPICON MMR位分配
位
15至14
13
描述
SPI IRQ模式位。这些位用于配置在传输过程中何时发生发送/接收中断。
00 = 传输完1个字节后,产生发送中断。FIFO接收到1个或以上字节时,产生接收中断。
01 = 传输完2个字节后,产生发送中断。FIFO接收到1个或以上字节时,产生接收中断。
10 = 传输完3个字节后,产生发送中断。FIFO接收到3个或以上字节时,产生接收中断。
11 = 传输完4个字节后,产生发送中断。接收FIFO空间已满或有4个字节数据时,产生接收中断。
SPI发送FIFO清空使能位。
该位置1时,清空发送FIFO。该位无法自清0;需要一个单次清空操作时,应将该位置1。如果该位的值总保持为1,
那么将发送0x00或上次发送的值,具体取决于SPICON[7]的设置。该位为1时,无法对发送FIFO进行写操作。
该位清0时,禁用发送FIFO清空。
12
SPI接收FIFO清除使能位。
该位置1时,清空接收FIFO。该位无法自清0;需要一个单次清空操作时,应将该位置1。该位置1后,所有向接收
FIFO写数据的操作将被忽略,且系统不产生中断。如果置1并且SPICON[6] = 0,读取接收FIFO将启动一次数据传输。
该位清0时,禁用接收FIFO清空。
11
连续传输使能。
通过将该位置1,用户可使能连续传输。在主机模式下,数据传输连续进行,直到SPITX寄存器内无有效数据为止。
SS置位,并在每一次8位串行传输期间保持置位,直到发送寄存器为空。
通过将该位清0,用户可禁用连续传输。每一次传输都是单独的8位串行传输。如果SPITX寄存器中存在有效数据,
那么经过1个串行时钟周期的停转时间后,重新开始传输数据。
10
回送使能位。
通过将该位置1,用户可将MISO连接到MOSI并测试软件。
通过将该位清0,可返回正常模式。
从机MISO输出使能位。
将该位置1时,可禁用MISO引脚上的输出驱动器。该位置1后,MISO引脚变为开漏极。
将该位清0时,MISO正常工作。
SPIRX上溢覆盖使能。
用户将该位置1后,新接收到的串行数据将覆盖SPIRX寄存器中的有效数据。
用户将该位清0后,新接收到的串行数据会被丢弃。
发送FIFO为空时SPI发送0使能位。
若将该位置1,则在发送FIFO无有效数据时,SPI发送0x00。
若将该位清0,则在发送FIFO无有效数据时,SPI发送上次发送的值。
SPI传输和中断模式。
通过将该位置1,用户可在向SPITX寄存器写入数据时开始传输。只有当SPITX为空时产生中断。
通过将该位清0,用户可在从SPITX寄存器读取数据时开始传输。只有当SPIRX已满时产生中断。
LSB优先传输使能位。
用户将该位置1后,优先发送LSB。
用户将该位清0后,优先发送MSB。
9
8
7
6
5
Rev. D | Page 76 of 92
ADuC7039
位
4
3
2
1
0
描述
SPI线或模式使能位。
通过将该位置1,可使能开漏数据输出。数据输出引脚需要外部上拉电阻。
将该位清0时,启动正常输出模式。
串行时钟极性模式位。
用户将该位置1后,串行时钟高电平空闲。
用户将该位清0后,串行时钟低电平空闲。
串行时钟相位模式位。
用户将该位置1后,串行时钟脉冲出现在每一次串行位传输的起始位置。
用户将该位清0后,串行时钟脉冲出现在每一次串行位传输的末尾。
主机模式使能位。
通过将该位置1,用户可使能主机模式。
通过将该位清0,用户可使能从机模式。
SPI使能位。
通过将该位置1,用户可使能SPI。
通过将该位清0,用户可禁用SPI。
Rev. D | Page 77 of 92
ADuC7039
高压外设控制接口
ADuC7039集成了多个高压电路功能,它们通过一个包括
两个MMR(HVCON和HVDAT)的寄存器接口来加以监控。
HVCON寄存器充当命令字节解释器,允许微控制器间接
地对两个高压状态/配置寄存器中的一个进行8位数据读写
操作(值存放在HVDAT内)。这些高压寄存器不是MMR,
但通常被称为间接寄存器,即只能通过HVCON和HVDAT
MMR间接访问。
高压接口包括两个MMR和两个间接寄存器:
• HVCON是一个8位寄存器,用作高压控制接口的命令字
节解释器。写入此寄存器的字节被解释为对高压电路相
关的两个间接寄存器的读或写命令。命令代码如表56所
示。回读HVCON MMR可知操作是否成功。
• HVDAT是一个12位寄存器,用于保存高压接口寄存器
的间接读写数据。
• HVCFG是一个8位寄存器,用于控制高压电路的功能,
利用HVCON和HVDAT访问。
• HVSTA是一个8位只读寄存器,反映高压电路的状态。
此寄存器不是MMR,因而不会出现在MMR存储器映射
内 。 它 通 过 HVCON寄 存 器 接 口 访 问 , 其 数 据 通 过
HVDAT回读。高压中断控制器响应高压中断事件,将
高 压 状 态 寄 存 器 (HVSTA)的 当 前 值 同 时 自 动 载 入
HVDAT寄存器内。
HVCON寄存器和间接高压寄存器之间的物理接口采用基
于2.56 MHz串行时钟的两线(数据和时钟)式串行接口。因
此,从MCU内核将命令写入HVCON到该命令或数据到达
间接高压寄存器内需要一定的延时(最长10 μs)。从MCU内核
将命令写入HVCON到间接寄存器数据被回读到HVDAT寄
存器内也需要10 μs延时。MCU可轮询繁忙位(MCU读取时
为HVCON位0)以确认读/写命令何时结束。
图29显示高压接口和相关电路的顶层架构。LIN物理接口
通过此接口控制和监控。
HIGH VOLTAGE
INTERFACE
MMRs
HVDAT
SERIAL
DATA
SERIAL
CLOCK
HVCFG
SERIAL
INTERFACE
CONTROLLER
HVSTA
ARM7
MCU
AND
PERIPHERALS
IRQ
HVCFG[4]
LVF
HVCFG[2:0]
LIN
HIGH VOLTAGE
INTERRUPT
CONTROLLER
图29. 高压接口顶层框图
Rev. D | Page 78 of 92
LIN S/C—HVSTA[0]
08463-026
HVCON
(INDIRECT)
HIGH VOLTAGE
REGISTERS
ADuC7039
高压接口控制接口
名称:
HVCON
地址:
0xFFFF0804
默认值:
由内核更新
访问类型:
读/写
读/写
该8位寄存器用作高压控制接口的命令字节解释器。写入此寄存器的字节被解释为对高压电路相关的两
个间接寄存器的读或写命令。HVDAT寄存器用来存放间接寄存器的写入或回读数据。
表56. HVCON MMR写入位分配
位
7至0
描述
命令字节。含义为
0x00 = 将高压寄存器HVCFG回读到HVDAT。
0x02 = 将高压状态寄存器HVSTA回读到HVDAT。
0x08 = 将HVDAT内的值写入高压寄存器HVCFG。
其它 = 保留。
表57. HVCON MMR读取位分配
位
7至3
2
描述
保留。
发送到高压芯片命令状态。
1 = 命令成功。
0 = 命令失败。
高压芯片读取命令状态。
1 = 命令成功。
0 = 命令失败。
繁忙(只读)位。当用户代码读取此寄存器时,位0应视为高压接口的繁忙位。可用来决定读取请求是否已完成。
除非繁忙= 0,否则此表中所述高压(读/写)命令不能写入HVCON。
繁忙 = 1,高压接口繁忙且未完成前一个HVCON写入命令。位1、2无效。
繁忙 = 0,高压接口空闲且已完成HVCON写入命令。位1、2有效。
1
0
高压数据寄存器
名称:
HVDAT
地址:
0xFFFF080C
默认值:
由内核更新
访问类型:
读/写
读/写
HVDAT是一个12位寄存器,用于保存高压接口寄存器HVDAT、HVSTA、HVCFG的间接读写数据。
表58. HVDAT MMR位分配
位
11至8
7至0
描述
高压数据HVDAT[7:0]相关的命令。这些位为只读且应写入0
0x00 = 将高压寄存器HVCFG回读到HVDAT。
0x02 = 将高压状态寄存器HVSTA回读到HVDAT。
0x08 = 将HVDAT内的值写入高压寄存器HVCFG。
欲读/写的高压数据
Rev. D | Page 79 of 92
ADuC7039
高压配置寄存器
名称:
HVCFG
地址:
通过HVCON高压接口间接寻址
默认值:
0x00
访问类型:
读/写
功能:
该8位寄存器控制ADuC7039上的高压电路功能。此寄存器不是MMR,因而不会出现在MMR存储器映
射内。通过HVCON寄存器接口访问。欲写入该寄存器的数据通过HVDAT MMR加载,从该寄存器回读
数据也是通过HVDAT MMR。
表59. HVCFG位分配
位
7至5
4
3
2
1
0
描述
保留。
低压标志(LVF)使能位。
该位清0时,禁用LVF功能。
该位置1时,使能LVF功能。上电后可通过HVSTA[2] 查询低压标志,以决定REG_DVDD电压先前是否下降到2.1 V
以下。
电压衰减器诊断使能位。
该位置1时,接通电流源,将一个差分电压加到电压通道测量上。
该位清0时,禁用电压衰减器诊断功能。
LIN驱动器重新使能位。
该位置1时,重新使能因为短路电流事件而禁用的LIN驱动器。
该位自动清0。
使能/禁用LIN短路保护。
该位置1时,使能LIN引脚被动短路保护。此时LIN引脚上的短路事件会产生高压中断(前提是IRQEN[10]使能),
并置位HVSTA内的相应状态位,但不会禁用短路引脚。
该位清0时,使能LIN引脚主动短路保护。此时在短路事件期间,LIN引脚产生高压中断(IRQSTA[10]),
置位HVSTA[0],并自动禁用短路引脚。禁用后,I/O引脚只能通过写入HVCFG[2]来重新使能。
只有持续时间长于20 μs的LIN短路事件才能被检测到。
LIN工作模式。
0 = LIN禁用。
1 = LIN使能。
Rev. D | Page 80 of 92
ADuC7039
高压状态寄存器
名称:
HVSTA
地址:
通过HVCON高压接口间接寻址
默认值:
0x00
访问类型:
只读,只应在高压中断时读取。
功能:
此8位只读寄存器反映低压标志和LIN短路中断状态。此寄存器不是MMR,因而不会出现在MMR存储器映
射内。它通过HVCON寄存器接口访问,其数据通过HVDAT回读。高压中断控制器响应高压中断事件,将
高压状态寄存器(HVSTA)的当前值同时自动载入HVDAT寄存器内。
表60. HVSTA位分配
位
7至3
2
1
0
描述
保留。这些位不能使用,保留供未来使用。
低压标志状态位。只在通过HVCFG[4]使能时有效。
上电时,如果REG_DVDD已下降至2.1 V以下,则该位为0。此时,RAM内容视为已被破坏。
上电时,如果REG_DVDD未下降至2.1 V以下,则该位为1。此时RAM内容视为有效。只能通过重新使能HVCFG0[4]
内的低压标志来清0。
保留。该位不能使用,保留供未来使用。
LIN短路状态中断。
LIN正常工作时,该位为0;读取HVSTA寄存器后自动清0。
检测到LIN短路时,该位为1。此时LIN驱动器自动禁用。
低压标志(LVF)
ADuC7039有一个低压标志(LVF),使能时,用户可以监控
REG_DVDD(参见“低压标志(LVF)”部分)。通过HVCFG[4]
使能后,可通过HVSTA[2]监控LVF的状态。如果REG_
DVDD降至2.1 V以下,则HVSTA[2]清0且RAM内容已被破坏。
使能低压标志后,只有REG_DVDD降至2.1 V以下或利用
HVCFG[4]禁用LVF功能才能使其复位。
尽管正常情况下MCU通过跳转到IRQ或FIQ矢量地址来响
应此中断事件,但高压中断控制器仍同时自动地将高压状
态寄存器(HVSTA)的当前值载入HVDAT寄存器内。此时
HVCON[0]内的繁忙位被置1,指示传输正在进行中,并在
10 μs后清0,指示可从HVDAT获取HVSTA内容。
高压中断
该接口应由中断驱动。因此,中断处理程序可一直轮询
HVCON内的繁忙位,直到其解除置位。在繁忙位清0后,
必须检查HVCON[1]以确保正确读取数据。接下来,可读
取HVDAT寄存器。此时,HVDAT保存着HVSTA寄存器
的值。
高压电路还集成了一个中断控制器。如果通过IRQEN[10]
使能,LIN短路事件将能置位高压中断信号并中断MCU
内核。
读取HVSTA寄存器将清除中断,因此,不建议随时读取
HVSTA。
处理高压接口中断和高压通信
Rev. D | Page 81 of 92
ADuC7039
ISR
IRQ/FIQSTA =
HV IRQ
NO
OTHER
INTERRUPT
YES
HVCON[0] = 0
NO
YES
HVCON[1] = 1
NO
HVCON = 0x1
(MANUAL READ)
YES
READ HVDAT
HVDAT[11:8] =
0x1
NO
HVDAT[7:0] =
HVSTA
08463-027
YES
图30. 高压接口中断流程图
高压配置
下面是使能LIN的示例代码。
char HVstatus;
do{
HVDAT = 0x01;
HVCON = 0x08;
do{
HVstatus = HVCON;
}
while(HVstatus & 0x1);
}
while (!(HVstatus & 0x4));
// Enable LIN
// Enable LIN physical layer mode
// Write to HVCFG
// Wait until command is finished
// Transmit command is correct
最好使用一个函数实现高压通信例程,然后在代码中调用此函数。
Rev. D | Page 82 of 92
ADuC7039
LIN(局域互连网络)接口
LIN物理接口
如图31所示,LIN协议利用IRQ/FIQ、专用LIN定时器和同
样片内集成的高压收发器来仿真。当器件处于休眠模式
下,LIN时钟从低功耗振荡器获得;正常模式下则从内核
时钟获得。
ADuC7039在ARM7 MCU内核和外部LIN总线之间具有一个
高压物理接口。该LIN接口只能用作从机接口,支持1 kB至
20 kB的工作速率并兼容LIN 2.1标准。低于1 kB的频率视为
1 kB。片内集成从节点所需的上拉电阻,从而省去了外部电
路。为获得最佳的EMC和故障保护性能,LIN引脚上建议
使用一些外部元件(见图33)。
LIN
INTERRUPT
LOGIC
VDD
MASTER ECU
PROTECTION
DIODE
MASK
LINBR
CORE CLOCK
LINDAT
EXTERNAL
LIN PIN
LIN MODE
HVCFG[0]
LINBK
LOW POWER
OSCILLATOR
INPUT
VOLTAGE
THRESHOLD
REFERENCE
RxD
CLOAD
TxD
OUTPUT
DISABLE
OVER
VOLTAGE
PROTECTION
BPF
SCR
INTERNAL
SHORT-CIRCUIT
SENSE RESISTOR
INTERNAL
SHORT-CIRCUIT
TRIP REFERENCE
HV IRQ
IRQEN[10]
SHORT-CIRCUIT
CONTROL
HVCFG[1]
IO_VSS
图31. LIN物理接口
> = 14TBIT
13TBIT
>1TBIT
2TBIT
STA S0
BREAK
MASTER ECU
PULL-UP
08463-028
LINCS
VDD
8TBIT
2TBIT
S1
S2
2TBIT
S3
S4
2TBIT
S5
SYNC
图32. LIN帧
Rev. D | Page 83 of 92
S6
S7 STO
PROTECTED ID
08463-029
LIN INTERRUPT
IRQEN[5]
LIN收发器通过2线式接口HVCFG[0]使能。LIN协议由LIN
MMR部分所述的8个MMR控制。
ADuC7039
LIN诊断
ADuC7039的LIN引脚上具有短路保护功能。如果在LIN引
脚 上 检 测 到 短 路 状 况 , HVSTA[0]就 会 置 1。 如 果 通 过
IRQEN[10]使能了中断,上述状况将产生一个高压中断。
利用HVCFG1[2]重新使能LIN驱动器可将该位清0。可通过
HVCFG[1]来禁用此功能。
LIN通信
LIN使用帧进行数据通信。帧包括报头、断开码、同步码、
主机发送的PID、数据字节以及从机产生的校验和,如图32
所示。在LIN通信中,PID决定从机的行为:接收、发送或
忽略。
断开码
ADuC7039的LIN接口自动检测断开码,接收到有效的断开
码后,就会在LINSTA寄存器中设置一个标志。断开码的最
短长度为11个标称从机时钟周期(20 kB速率)。有效断开码
的最长长度是可编程的,可以在LINBK MMR中配置。LIN
接口在LIN通信期间的任何时候都能识别有效的断开码,
如果现有通信期间出现断开码,就会置位冲突标志位
(LINSTA的位4)。
同步码
LIN接口自动检测同步字节,并且为当前LIN帧的后续数据
设置波特率。该操作对用户是透明的。
PID
LIN外设将PID视作一个数据字节。它在LINDAT MMR中提
供。软件必须解码PID。接收到PID停止位后,产生一个中
断以便读取LINDAT寄存器的内容,然后该内容将被下一
个数据字节覆盖。
数据字节
同样,后续数据字节也会设置中断位,指示已接收到数据
字节。
在发送模式下,一次最多可以发送8个数据字节,后跟一
个校验和。
校验和
若要在LIN 1.3模式下工作,用户代码LIN初始化例程必须将
LINCON[7]置1,迫使硬件采用传统校验和计算。在接收
模式下的LIN通信期间,不得更改此寄存器。
LIN MMR
LIN模块接口包括8个MMR:
• LINCON是一个16位控制寄存器。该寄存器如表61所
示。数据接收期间不应访问该寄存器。
• LINDAT是一个8位用户可访问数据寄存器。此MMR为
双缓冲型寄存器:一个阴影寄存器用于接收和发送数据,
用户代码则读写LINDAT。LINSTA MMR指示数据的状态。
• LINSTA是一个16位状态寄存器。该寄存器如表62所示。
• LINBR是一个19位波特率寄存器。波特率由LIN外设自
动设置,用户代码不应更改此寄存器。它表示8位传输
期间内核时钟的周期数。
• LINBK是一个19位断开码定时器寄存器,控制断开码被
LIN从机接口视为有效的最大长度。默认值为5500个内
核时钟周期,代表11位数据以20 kHz的速率发送所需的
时间。
• LINCS是一个8位校验和寄存器。它包含当前校验和计
算的倒数结果。校验和在接收或发送每个字节时计算,
具体取决于LINCON MMR的位4设置。发送模式下,最
后要发送的数据被写入外设后,用户将该位置1。校验
和自动发送。接收模式下,校验和在接收到每个字节时
计算,无论此字节是数据字节还是帧校验和。例如,接
收一个含4个数据字节的帧时,一旦接收到第四个数据
字节,LINCS MMR就会包含预期的帧校验和。接收到
正确的校验和之后,LINCS应包含0x00。
• LINLOW是一个19位计数器,以10 MHz的时钟速率工作,
用于唤醒总线上的LIN节点。只要LINLOW MMR大于0,
就会强制LIN总线变为低电平。例如,如果LINLOW =
0x234,则会以20 kB的速率产生一个11位断开码。
• LINWU是一个19位计数器,从低功耗振荡器获得时钟。
它用在休眠模式下,以指定通过LIN唤醒器件的低电平
信号的长度。例如,如果LINWU = 0x13,则会忽略任何
短于150 μs的断开码,ADuC7039保持休眠状态。
每接收或发送一个字节时都会自动计算校验和,结果的倒
数值存储在LINCS MMR中。默认情况下,校验和计算采用
LIN 2.1规范:诊断帧和保留帧使用传统校验和计算,其余
帧则使用增强校验和计算。硬件自动识别PID并相应地计
算校验和。用户代码无需写入LINCON寄存器以更改校验
和计算。
Rev. D | Page 84 of 92
ADuC7039
LINCON寄存器
LINDAT寄存器
名称:
LINCON
名称:
LINDAT
地址:
0xFFFF0700
地址:
0xFFFF0714
默认值:
0x0000
默认值:
0x00
访问类型:
读/写
访问类型:
读/写
功能:
该16位MMR控制LIN外设。
功能:
8位数据寄存器。
LINCS寄存器
名称:
LINCS
地址:
LINLOW寄存器
名称:
LINLOW
0xFFFF0704
地址:
0xFFFF0718
默认值:
0xFF
默认值:
0x00000
访问类型:
读/写
访问类型:
读/写
功能:
8位校验和寄存器。
功能:
19位寄存器,产生一个LIN断开码
以唤醒总线上的其它LIN外设。
名称:
LINBR
LINWU寄存器
地址:
0xFFFF0708
名称:
LINWU
默认值:
0x00FA0
地址:
0xFFFF071C
访问类型:
读/写
默认值:
0x00013
功能:
19位波特率寄存器。
访问类型:
读/写
功能:
19位寄存器,指定唤醒器件的断
开码长度。
LINBR寄存器
LINBK寄存器
名称:
LINBK
地址:
0xFFFF070C
默认值:
0x0000157C
访问类型:
读/写
功能:
19位断开码定时器寄存器。
LINSTA寄存器
名称:
LINSTA
地址:
0xFFFF0710
默认值:
0x0100
访问类型:
只读
功能:
16位状态寄存器。
共有7个中断源,其中5个可以在LINCON MMR中予以屏蔽:
•
•
•
•
•
•
•
LIN唤醒
接收到数据
发送就绪—可屏蔽
发送完成—可屏蔽
检测到冲突—可屏蔽
断开码—可屏蔽
帧错误范围内的最大负边沿数—可屏蔽
Rev. D | Page 85 of 92
ADuC7039
表61. LINCON MMR位分配
位
15至13
12
11
10
9
8
7
6
5
4
3
2
1
0
描述
保留。
LIN旁路位。
该位由用户代码置1时,仅控制LIN收发器,用于LIN一致性测试。
该位由用户代码清0时,在正常模式下工作。
LIN使能位。
该位由用户代码置1时,使能LIN接口。
该位由用户代码清0时,禁用LIN接口或复位接口。
UART使能位。
该位由用户代码置1时,允许不接收帧报头的传输,用于测试目的。
该位由用户代码清0时,在正常模式下工作。
同步码的定时,位0(单从机系统不需要)。
确保发送第二个断开码时,它能被识别为断开码,而不是作为同步码的一部分加以定时。如果起始码超过该位规
定的时钟周期数,器件将认为它现在接收的是断开码,并继续计数低周期,以确定该断开码是否满足LINBK MMR
中定义的最短时间要求。
由用户置1。同步码的第一位必须短于750个内核时钟周期(73 μs)。
通过将该位清0,用户可禁用此功能。
发送校验和。
该位由用户置1时,自动发送校验和。该位必须在发送完LINDAT中写入的最后一个数据字节以及设置好发送就绪
位之后设置。
当校验和发送完毕时,该位由硬件自动清0。
校验和计算。
该位由用户置1时,自动计算传统校验和(不包括PID)。
该位由用户清0时,计算增强校验和(包括PID)。
通信期间,如果收到PID后修改该位的值,则复位校验和。
冲突检测和发送完成中断屏蔽。
通过将该位置1,用户可禁用冲突检测和发送完成中断。
通过将该位清0时,用户可使能冲突检测和发送完成中断。
使能中断时,无论发送完成位是何状态,所有检测到的冲突事件都会引起中断,且冲突状态位置位。使能屏蔽时,
一旦发送完成,置位的冲突事件就会被屏蔽,不引起中断,且检测到冲突状态位也不会置1。即使用户已将该屏
蔽位置1,但如果器件尚未置位发送完成状态位,则冲突仍会引起中断,并且检测到冲突状态位置1。
负边沿最大误差中断屏蔽。
通过将该位置1,用户可禁用负边沿最大误差中断。
通过将该位清0,用户可使能负边沿最大误差中断。如果负边沿计数器计数到一个帧含57个以上的边沿,就会产
生中断。
冲突检测中断屏蔽。
通过将该位置1,用户可禁用冲突检测中断。
通过将该位清0,用户可使能冲突检测中断。
接收到断开码中断屏蔽。
通过将该位置1,用户可禁用断开码接收中断。
通过将该位清0,用户可使能断开码接收中断。
发送完成中断屏蔽。
通过将该位置1,用户可禁用发送完成中断。
通过将该位清0,用户可使能发送完成中断。
发送就绪中断屏蔽。
通过将该位置1,用户可禁用发送就绪中断。当LINCON[8]置1时,该位自动置1。
通过将该位清0,用户可使能发送就绪中断。
接收/发送模式。
该位由用户代码置1时,则在解码PID后发送数据字节。
接收到断开码时,该位自动清0。
Rev. D | Page 86 of 92
ADuC7039
表62. LINSTA MMR位分配
位
15至11
10
9
8
7
6
5
4
3
2
1
0
描述
保留。
LIN唤醒中断。
如果LIN唤醒ADuC7039,该位置1。唤醒功能(LINWU MMR)只能在POWCON[3] = 0时使用。
读取LINSTA MMR时,该位自动清0。
断开码时间最大值。
如果使能LIN接口后的第一个断开码在达到最大计数值之前结束,则该位为0。
如果使能LIN接口后的第一个断开码在达到最大计数值之后结束,则该位为1。
读取LINSTA MMR时,该位由硬件自动清0。
该位仅对通过LINCON[11]使能LIN外设后的第一个断开码有效。
PID奇偶校验错误。
如果LINDAT寄存器中的当前字节不能与LIN 2.1规范所述PID奇偶校验方案正确匹配,则该位由硬件自动置1。
如果LINDAT寄存器中的当前字节与PID奇偶校验方案正确匹配,则该位由硬件清0。
数据寄存器中何时真正有PID,须由用户判断。无论LINDAT MMR中是否有PID或数据字节,都会进行奇偶校验。
校验和匹配。
该位仅当LINSTA[0] = 1时有效。
如果LINCS中的值与LINDAT中的已接收数据不匹配,则该位自动置1。
读取LINSTA MMR时,或者LINDAT与LINCS匹配时(同时LINSTA[0] = 1),该位清0。
帧错误。
如果没有帧错误,该位为0。读取LINSTA时,该位自动清0。
如果在接收数据字节期间发生帧错误,即未检测到有效停止,则该位置1。
负边沿最大误差中断(可屏蔽)。
如果负边沿数没有超过帧允许的数量,则该位为0。
如果负边沿数为57或更大,则该位置1。
读取LINSTA MMR时,该位由硬件自动清0。
LIN冲突检测中断(可屏蔽)。
如果器件由于总线冲突而停止传输,该位将由硬件自动置1。如果冲突检测和发送完成中断使能(LINCON[6] = 0),并且
发送完成中断位置1 (LINSTA[2] = 1),则该位不会置1。
读取LINSTA MMR时,该位由硬件自动清0。
断开码接收中断(可屏蔽)。
如果未接收到有效断开码,该位为0。
如果在LIN总线上检测到11个标称位的低电平时间,则该位置1。读LINSTA MMR时,该位自动清0。
发送完成中断(可屏蔽)。
如果数据仍在LINDAT寄存器中,该位为0。
发送完所有数据后,该位置1。然后它将保持1值,直至LIN接收到一个断开码。接收模式下,它自动清0。
发送就绪中断(可屏蔽)。
如果先前写入LINDAT MMR中的数据仍然在LINDAT中,而尚未移送到发送寄存器,则该位为0。当发送就绪位为0时,
写入数据到LINDAT MMR会覆盖先前要发送的字节。
如果先前写入LINDAT MMR中的数据现已处于发送寄存器中,则该位为1。
接收就绪中断。
如果LINDAT MMR中没有要读取的新数据,该位为0。
如果LINDAT MMR中有要读取的新数据,该位为1。读取LINDAT MMR时,该位清0。
Rev. D | Page 87 of 92
ADuC7039
器件标识
为便于追溯,器件上电时提供标识信息。上电时,ARM内
部寄存器(R4至R6)提供制造批次ID、硅片掩模版本和内核
版本等信息,如表65和表66所示。
为获得全面的追溯信息,需要记录R4、R5、R6和产品型
号。R6中存储的组装批次ID是封装标识的一部分,如表63
所示。
例如,对于2528206.1的组装批次ID,R6包含0x002693CE。
上电时,产品型号包含在MMR FEEADR中。
表63. 标识实例 ADuC7039BCP6Z
行
行1
行2
行3
行4
LFCSP
ADuC7039
BCP6Z
B60 #日期代码
2528206.1
表64. 标识实例 ADuC7039WBCPZ
行
行1
行2
行3
行4
行5
LFCSP
ADuC7039
WBCPZ
B60 #日期代码
2528206.1
MALAYSIA
表65. 上电时的R4位分配
位
31至27
26至22
21至16
15至0
描述
晶圆号。从此位置读取的5位值提供晶圆制造批次ID(此器件出处)中的晶圆号(1至24)。配合R4[26:0]使用时,它
提供个别晶圆可追溯性。
晶圆批次制造厂。从此位置读取的5位值反映与此晶圆批次相关的制造厂。配合R4[21:0]使用时,它提供晶圆批
次可追溯性。
晶圆批次制造ID。从此位置读取的6位值是晶圆批次制造ID的一部分,配合R4[26:22]和R4[15:0]使用时,提供晶
圆批次可追溯性。
晶圆批次制造ID。这16位LSB被解读为晶圆制造批次ID号。配合R5值(即制造批次ID)使用时,此编号是器件的唯
一标识。
表66. 上电时的R5位分配
位
31至28
27至20
19至16
15至0
描述
硅片掩膜版本ID。此4位反映硅片掩膜ID号。具体来说,这半字节的16进制值应被解码成表示ASCII字符A至O的
16进制数的低位半字节。例如:
位[19:16] = 0001 = 0x1,因此该值应解释为41,对应ASCII字符A,表示硅片掩膜版本A。
位[19:16] = 1011 = 0xB,因此该值应解释为4B,对应ASCII字符K,表示硅片掩膜版本K。
这个值的范围为1至15,解释为41至4F或ASCII字符A至O。
内核版本ID。此字节的16进制数应解释为一个ASCII字符,表示片内Flash/EE存储器的嵌入内核固件版本。例
如,如果从此字节读取0x41,则解释为A,表示片上内核版本A。
保留。对于预发行样片,这些位表示器件内核的局部修订版本号。
器件ID。这16位LSB被解释为器件ID号。配合R4值(即制造批次ID)使用时,此编号是器件的唯一标识。
Rev. D | Page 88 of 92
ADuC7039
系统标识FEEADR
名称:
FEEADR
地址:
0xFFFF0E10
默认值:
0xF009
访问类型:
读/写
功能:
该16位寄存器决定通过FEECON执行任何Flash/EE命令的操作地址。
注意:
该MMR还用以识别ADuC703x系列产品和预发布芯片版本。
表67. FEEADR系统标识MMR位分配
位
15至4
3至0
描述
保留
ADuC703x系列ID
0x0 = ADuC7030
0x2 = ADuC7032
0x3 = ADuC7033
0x4 = ADuC7034
0x6 = ADuC7036
0x9 = ADuC7039
其它 = 保留供将来使用
Rev. D | Page 89 of 92
ADuC7039
推荐原理图
本原理图包含为使ADuC7039正常工作而推荐使用的外部器件。
JTAG ADAPTOR
10Ω
10µF
VBAT
27
VDD
3
4
5
6
7
TDO TCK TMS TDI NTRST RTCK
RESET
0.1µF
IIN+
12
REG_DVDD
1
LIN 29
IIN+
220pF
ADuC7039
SHUNT
13
20Ω
ECU MASTER
0.1µF
2
29
PESD1LIN
VBAT
IIN–
REG_DVDD 19
REG_DVDD 18
REG_AVDD
0.1µF
REG_AVDD 17
9
VTEMP
REG_AVDD 16
0.47µF
AGND AGND AGND DGND IO_VSS VSS
11
14
15
20
30
31
08463-030
10
GND_SW
2.2µF
图33. 推荐原理图
Rev. D | Page 90 of 92
ADuC7039
外形尺寸
0.30
0.25
0.18
32
25
1
24
0.50
BSC
3.90
3.80 SQ
3.70
EXPOSED
PAD
17
TOP VIEW
1.00
0.95
0.85
0.70
0.60
0.50
8
16
9
BOTTOM VIEW
0.05 MAX
0.02 NOM
COPLANARITY
0.08
0.15 REF
SEATING
PLANE
PIN 1
INDICATOR
0.20 MIN
FOR PROPER CONNECTION OF
THE EXPOSED PAD, REFER TO
THE PIN CONFIGURATION AND
FUNCTION DESCRIPTIONS
SECTION OF THIS DATA SHEET.
COMPLIANT TO JEDEC STANDARDS MO-220-VJJD.
01-25-2013-C
PIN 1
INDICATOR
6.10
6.00 SQ
5.90
图34. 32引脚引脚架构芯片级封装[LFCSP_VQ]
6 mm x 6 mm超薄四方体(CP-32-15)
图示尺寸单位:mm
订购指南
型号1,2
ADuC7039BCP6Z
ADuC7039BCP6Z-RL
ADuC7039WBCPZ
ADuC7039WBCPZ-RL
EVAL-ADUC7039QSPZ
1
2
3
NOTE
3
3
温度范围
−40°C至115°C
−40°C至115°C
−40°C至115°C
−40°C至115°C
Flash/Ram
64K/4K
64K/4K
64K/4K
64K/4K
封装描述
32引脚引脚架构芯片级封装[LFCSP_VQ]
32引脚引脚架构芯片级封装[LFCSP_VQ]
32引脚引脚架构芯片级封装[LFCSP_VQ]
32引脚引脚架构芯片级封装[LFCSP_VQ]
评估板
封装选项
CP-32-15
CP-32-15
CP-32-15
CP-32-15
Z = 符合RoHS标准的器件。
通过汽车应用认证。
推荐新设计使用。
汽车应用产品
ADuC7039W生产工艺受到严格控制,以满足汽车应用的质量和可靠性要求。请注意,车用型号的技术规格可能不同于商
用型号;因此,设计人员应仔细阅读本数据手册的技术规格部分。只有显示为汽车应用级的产品才能用于汽车应用。欲了
解特定产品的订购信息并获得这些型号的汽车可靠性报告,请联系当地ADI客户代表。
Rev. D | Page 91 of 92
ADuC7039
注释
©2010–2013 Analog Devices, Inc. All rights reserved. Trademarks and
registered trademarks are the property of their respective owners.
D08463sc -0-3/13(D)
Rev. D | Page 92 of 92