寄存器代码签名

代码签名  时间:2021-04-30  阅读:()
OneTechnologyWay,P.
O.
Box9106,Norwood,MA02062-9106,U.
S.
A.
Tel:781.
329.
47002010–2013AnalogDevices,Inc.
Allrightsreserved.
TechnicalSupportwww.
analog.
comADI中文版数据手册是英文版数据手册的译文,敬请谅解翻译中可能存在的语言组织或翻译错误,ADI不对翻译中存在的差异或由此产生的错误负责.
如需确认任何词语的准确性,请参考ADI提供的最新英文版数据手册.
Rev.
DDocumentFeedbackInformationfurnishedbyAnalogDevicesisbelievedtobeaccurateandreliable.
However,noresponsibilityisassumedbyAnalogDevicesforitsuse,norforanyinfringementsofpatentsorotherrightsofthirdpartiesthatmayresultfromitsuse.
Specicationssubjecttochangewithoutnotice.
NolicenseisgrantedbyimplicationorotherwiseunderanypatentorpatentrightsofAnalogDevices.
Trademarksandregisteredtrademarksarethepropertyoftheirrespectiveowners.
图1.
车用集成精密电池传感器ADuC7039特性高精度ADC双通道、同步采样、16位Σ-Δ型ADC可编程ADC吞吐量:10Hz至1kHz片内5ppm/°C基准电压源电流通道全差分、缓冲输入可编程增益ADC输入范围:200mV至+300mV数字比较器,内置电流累加器功能电压通道缓冲、片内衰减器,适用于12V电池输入温度通道外部和片内温度传感器方案微控制器16位/32位RISC架构ARM7TDMI-S内核20.
48MHzPLL片内精密振荡器JTAG端口支持代码下载和调试存储器64kBFlash/EE存储器选项,4kBSRAMFlash/EE耐久性:10,000个周期,数据保持时间:20年通过JTAG和LIN在线下载片内外设SAEJ2602/LIN2.
1兼容从机SPIGPIO端口1个通用定时器唤醒和看门狗定时器片内上电复位电源12V电池电源直接供电功耗:7.
5mA(10MHz)低功耗监控模式封装和温度范围32引脚6mm*6mmLFCSP封装额定工作温度范围:40°C至+115°C通过汽车应用认证应用汽车系统电池检测/管理Rev.
D|Page2of92目录特性.
1应用.
1功能框图.
1修订历史.
3技术规格.
4电气规格.
4时序规格.
8绝对最大额定值.
9ESD警告.
9引脚配置和功能描述.
10术语.
12工作原理.
13ARM7TDMI-S内核概览.
13存储器结构15复位16Flash/EE存储器.
17Flash/EEMMR接口17Flash/EE存储器签名.
21Flash/EE存储器安全性22Flash/EE存储器可靠性24ADuC7039内核.
24存储器映射寄存器(MMR)26完整MMR列表2716位Σ-Δ型模数转换器.
30ADC接地开关33ADC噪声性能表.
33ADCMMR接口.
34ADCSinc3数字滤波器响应.
43ADC工作模式44ADC配置46I-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)引脚.
74SPIMMR接口.
74高压外设控制接口78低压标志(LVF)81处理高压接口中断和高压通信81LIN(局域互连网络)接口83LIN物理接口.
83LIN诊断84LIN通信84LINMMR.
84器件标识.
88推荐原理图.
90外形尺寸.
91订购指南.
91汽车应用级产品.
91ADuC7039Rev.
D|Page3of92ADuC7039修订历史2013年3月—修订版C至修订版D"固定10MHz频率"改为"默认10MHz频率"(通篇)1更改"特性"部分和图1.
1更改表15更改表412更改"系统内核校验和"部分.
24更改图925更改"ADCxOF默认值"41更改图20.
49更改"序列示例"部分.
50重新组织"LIN振荡器校准"部分的布局.
56更改图22和表44.
59更改表59.
80更改"高压状态寄存器功能描述"81更改图31.
83更改"器件标识"部分,增加表64.
88更新外形尺寸91更改"订购指南"91添加"汽车应用级产品"部分.
912012年1月—修订版B至修订版C更改"LVF电平测试条件/注释"5引脚25从GPIO_4改为GPIO_4/IRQ1.
10更改"Flash/EE存储器安全性"部分22更改图925更改图22和表44.
59更改表49中的GPIO_4端口信号与功能.
69更改图33.
90更新外形尺寸912010年8月—修订版A至修订版B更改"快速温度转换模式"部分46更改表62中的位4描述(LINCON[6]参考)86更改"器件标识"部分.
872010年6月—修订版0至修订版A"特性"部分增加SAEJ26021更改表29更改表34中的位2和位1描述39更改"系统时钟"部分.
49增加"异步时钟域的定时器同步"部分、图23和图2460增加"定时器编程"部分.
61更改"推荐原理图"文本.
892010年3月—修订版0:初始版Rev.
D|Page4of92表1.
参数测试条件/注释最小值典型值最大值单位ADC技术规格转换速率1ADC正常工作模式101000HzADC低功耗模式,斩波开启10650Hz电流通道无失码1对所有ADC更新速率和ADC模式有效16位积分非线性(INL)1,2±10±60FSR的ppm失调误差1,2,3斩波关闭,外部短路,用户系统校准后,1LSB=(36.
6/增益)μV10±3+10LSB失调误差1,3斩波开启,外部短路,低功耗模式,MCU关断+250±50300nV失调误差1,3斩波开启,外部短路,用户系统校准后测试条件:CD=0,VDD=18V03.
0V失调误差1,3斩波开启,外部短路,用户系统校准后测试条件:CD=0,VDD=4V±0.
5V失调误差漂移1,2,4斩波关闭,增益为8至64,正常模式±0.
03LSB/°C失调误差漂移1,4斩波关闭,对于ADC增益512有效±30nV/°C失调误差漂移1,4斩波开启±5nV/°C总增益误差1,3,5,6增益为4时工厂校准,正常模式0.
5±0.
1+0.
5%低功耗模式1±0.
2+1%增益漂移1,7±3ppm/°CPGA增益不匹配误差±0.
1%输出噪声110Hz更新速率,增益=512,斩波使能100150nVrms1kHz更新速率,增益=512,ADCFLT=0x00070.
60.
9Vrms1kHz更新速率,增益=32,ADCFLT=0x00070.
81.
2Vrms1kHz更新速率,增益=8,ADCFLT=0x81012.
14.
1Vrms1kHz更新速率,增益=8,ADCFLT=0x00071.
62.
4Vrms1kHz更新速率,增益=4,ADCFLT=0x00072.
63.
9VrmsADC低功耗模式,250Hz更新速率,斩波使能,增益=5120.
60.
9Vrms电压通道8无失码1在所有ADC更新速率下有效16位积分非线性(INL)1±10±60FSR的ppm失调误差1,3斩波关闭,1LSB=439.
5μV,两点校准后10±1+10LSB失调误差1,3斩波开启,两点校准后1±0.
3+1LSB失调误差漂移4斩波关闭±0.
03LSB/°C总增益误差1,3,5,6包括电阻不匹配0.
25±0.
06+0.
25%总增益误差1,3,5,6温度范围=25°C至+65°C0.
15±0.
03+0.
15%增益漂移1,7包括电阻不匹配漂移±3ppm/°C输出噪声1,910Hz更新速率,斩波开启6090Vrms1kHz更新速率,ADCFLT=0x0007180270Vrms温度通道无失码1在所有ADC更新速率下有效斩波关闭,1LSB=19.
84μV(单极性模式下)16位积分非线性(INL)1±10±60FSR的ppm失调误差3,1010±3+10LSB失调误差1,3斩波开启5+1+5LSB失调误差漂移1斩波关闭0.
03LSB/°C总增益误差1,3,10VREF=(REG_AVDD,GND_SW)/20.
25±0.
06+0.
25%增益漂移13ppm/°C输出噪声11kHz更新速率7.
511.
25Vrms技术规格电气规格除非另有说明,VDD=3.
5V至18V,VREF=1.
2V内部基准电压,fCORE=20.
48MHz(采用片内精密振荡器驱动),且所有规格TA=40°C至+115°C.
ADuC7039Rev.
D|Page5of92ADC模拟输入规格电流通道绝对输入电压范围1同时适用于IIN+和IIN200+300mV输入电压范围11,12增益=4±300mV增益=8±150mV增益=32±37.
5mV增益=512±2.
3mV输入漏电流13+3nA输入失调电流1,130.
51.
5nA电压通道绝对输入电压范围1电压ADC规格在此范围内有效418V输入电压范围10to28.
8VVBAT输入电流VBAT=18V35.
58A温度通道VREF=(REG_AVDD,GND_SW)/2绝对输入电压范围141001300mV输入电压范围10至VREFVVTEMP输入电流12.
5100nA基准电压源内部VREF1.
2V上电时间10.
5ms初始精度1在TA=25°C时测定0.
15+0.
15%温度系数1,1520±5+20ppm/°C长期稳定性16100ppm/1000小时ADC诊断VREF/136精度1任意增益设置,完成选定增益的自校准后8.
49.
4mV电压衰减器电流源精度1当电流源开启时差分电压在衰减器上递增2.
33.
6V电阻衰减器1分频比24电阻不匹配漂移包括在电压通道总增益误差中±3ppm/°CADC接地开关接地电阻152030k温度传感器17未校准精度MCU处于关断或待机模式,TA=40°C至+85°C10±3+10°CMCU处于关断或待机模式,TA=20°C至+60°C8±2+8C上电复位(POR)1POR触发电平参考VDD引脚的电压2.
853.
03.
15VPOR迟滞300mVPOR复位超时20ms低压标志(LVF)LVF电平参考REG_DVDD引脚的电压1.
92.
12.
3V看门狗定时器(WDT)超时周期132kHz时钟,256预分频0.
008524秒超时步幅7.
8msFlash/EE存储器1耐久性1810,000周期数据保持时间1920年数字输入1除NTRST外的所有数字输入输入漏电流输入高电平=REG_DVDD±1±10A输入上拉电流1输入低电平=0V102080A输入电容110pF输入漏电流仅限NTRST:输入低电平=0V±1±10A输入下拉电流仅限NTRST:输入高电平=REG_DVDD3055100A逻辑输入1所有逻辑输入输入低电压(VINL)0.
4V输入高电压(VINH)2.
0V参数测试条件/注释最小值典型值最大值单位ADuC7039Rev.
D|Page6of92片内振荡器低功耗振荡器128kHz精度标称电源电压和室温下进行用户校准后;包括1000小时寿命测试的漂移数据3+3%精密振荡器128kHz精度运行时校准后1+1%MCU时钟速率1默认设置10.
24MHzMCU启动时间1上电时包括内核上电执行时间25ms复位事件后包括内核上电执行时间5ms从MCU关断起振荡器运行2ms内部PLL锁定时间1msLIN通用I/O波特率100020,000位/秒VDDLIN接口工作电压范围718V输入电容15.
5pFLIN比较器响应时间1使用22Ω电阻3890sLIN直流参数ILINDOMMAXLIN总线处于主动状态时驱动器电流限值,VBAT=VBAT(最大值)40200mAILIN_PAS_REC1驱动器关闭,7.
0V7.
0V0.
4VDDVVLIN_REC1LIN接收器被动状态,VDD>7.
0V0.
6VDDVVLIN_CNT1LIN接收器中心电压,VDD>7.
0V0.
475VDD0.
5VDD0.
525VDDVVHYS1LIN接收器迟滞电压0.
175VDDVVLIN_DOM_DRV_LOSUP1LIN主动输出电压,VDD=7.
0VRL5001.
2VRL10000.
6VVLIN_DOM_DRV_HISUP1LIN主动输出电压,VDD=18VRL5002VRL10000.
8VVLIN_RECESSIVE1LIN被动输出电压0.
8VDDVVBAT偏移2000.
115VDDVGND偏移2000.
115VDDVRSLAVE从机端接电阻203047kVSERIALDIODE20串行二极管处的压降,DSer_Int0.
40.
71VLIN交流参数1总线负载条件(CBUS||RBUS):1nF||1kΩ;6.
8nF||660Ω;10nF||500ΩD1占空比10.
396THREC(MAX)=0.
744*VBATTHDOM(MAX)=0.
581*VBATVSUP=7.
0V…18V;tBIT=50sD1=tBUS_REC(MIN)/(2*tBIT)D2占空比20.
581THREC(MIN)=0.
284*VBATTHDOM(MIN)=0.
422*VBATVSUP=7.
0V…18V;tBIT=50sD2=tBUS_REC(MAX)/(2*tBIT)D31,20THREC(MAX)=0.
778*VBAT0.
417THDOM(MAX)=0.
616*VBATVDD=7.
0V.
.
.
18VtBIT=96sD3=tBUS_REC(MIN)/(2*tBIT)D41,20THREC(min)=0.
389*VBAT0.
590THDOM(min)=0.
251*VBAT参数测试条件/注释最小值典型值最大值单位ADuC7039Rev.
D|Page7of92VDD=7.
0V…18VtBIT=96sD4=tBUS_REC(MAX)/(2*tBIT)tRX_PDR1,20接收器传播延迟6stRX_SYM1,20接收器传播延迟上升沿相对于下降沿的对称性(tRX_SYM=tRF_PDRtRX_PDF)2+2s封装热规格热阻(θJA)2132引脚CSP,堆叠式芯片32°C/W电源要求1电源电压VDD(电池电源)3.
518VREG_DVDD,REG_AVDD222.
452.
62.
75V功耗IDD(MCU正常模式)23ADC关闭(20.
48MHz)ADC关闭(10.
24MHz)1020mA7.
516mAIDD(MCU关断)1ADC低功耗模式,在TA=10°C至+40°C的环境温度范围内测定,ADC连续转换7501000AIDD(MCU关断)1精密振荡器关闭,ADC关闭平均电流,在唤醒和看门狗定时器从低功耗振荡器获取时钟信号时测定(40°C至+85°C)平均电流,唤醒和看门狗定时器从低功耗振荡器获取时钟信号时测定,10°C至+40°C环境温度范围95300A95175AIDD(电流ADC)1.
7mAIDD(电压/温度ADC)0.
5mAIDD(精密振荡器)400A参数测试条件/注释最小值典型值最大值单位1未经生产测试,但在产品发布时由设计和/或特性数据保证.
2对于电流ADC增益设置PGA代码签名.
FEEHID:MMR保护.
Flash/EE存储器代码空间的读写保护控制.
如果先前是通过FEEPRO寄存器配置,FEEHID可能要求软件密钥来使能访问.
FEEPRO:FEEHID寄存器的缓冲器,存储FEEHID值,以便它在随后的复位和上电事件时自动下载到FEEHID寄存器.
下面详细说明各Flash/EE控制MMR的位分配.
ADuC7039Rev.
D|Page18of92FEECON寄存器名称:FEECON地址:0xFFFF0E08默认值:0x07访问类型:读/写功能:此8位寄存器由用户代码写入,以控制Flash/EE存储器控制器的工作模式.
表10.
FEECON中的命令代码代码命令描述0x001保留保留;此命令不能由用户代码写入.
0x011单次读取将FEEADR索引的16位数据载入FEEDAT.
0x021单次写入将FEEDAT中的数据写入FEEADR索引的地址.
此操作耗时50μs.
0x031擦除写入擦除由FEEADR索引的存储页,并且把FEEDAT中的数据写入FEEADR所指的存储区域.
此操作耗时20ms.
0x041单次验证0x051单次擦除擦除由FEEADR索引的页面.
0x061批量擦除0x07空闲默认命令.
0x08保留保留;此命令不能由用户代码写入.
0x09保留保留;此命令不能由用户代码写入.
0x0A保留保留;此命令不能由用户代码写入.
0x0B签名0x0C保护0x0D保留保留;此命令不能由用户代码写入.
0x0E保留保留;此命令不能由用户代码写入.
0x0FPing无操作;产生中断.
1当上述任一命令执行完毕,FEECON就会立即读取0x07.
将FEEADR索引的地址中的数据与FEEDAT中的数据进行比较,比较的结果由FEESTA的第1位显示.
擦除62kB的用户空间.
2kB内核被保护.
此操作耗时2.
48s.
为防止意外执行,执行此指令要求一个命令序列;详见"批量擦除命令执行序列"部分.
处理器运行该命令后,会产生一个基于LFSR(线性反馈移位寄存器)的24位签名,该签名被写入FEESIG.
参见"Flash/EE存储器签名"部分.
此命令仅可运行一次.
FEEPRO的值会被保存,只能利用批量擦除(0x06)或软件保护密钥加以清除.
ADuC7039Rev.
D|Page19of92inta=FEESTA;//EnsureFEESTAisclearedFEEMOD=0x08FEEADR=0xFFC3FEEDAT=0x3CFFFEECON=0x06;//Masserasecommandwhile(FEESTA&0x04){}//WaitforcommandtofinishFEESTA寄存器名称:FEESTA地址:0xFFFF0E00DefaultValue:0xXXX0访问类型:只读功能:此16位只读寄存器可由用户代码读取,反映Flash/EE存储器控制器的当前状态.
ADuC7039表11.
FEESTAMMR位分配位描述15至4保留.
3Flash/EE中断状态位.
中断发生后,即当一条命令执行完毕且FEEMOD寄存器中的Flash/EE中断使能位被置1时,该位自动置1.
当用户代码读取FEESTA寄存器时,该位自动清0.
2Flash/EE控制器繁忙.
Flash/EE控制器繁忙时,该位自动置1.
控制器空闲时,该位自动清0.
1命令失败.
当命令写入FEECON不成功时,该位自动置1.
当用户代码读取FEESTA寄存器时,该位自动清0.
0命令成功.
命令成功执行时,MCU自动将该位置1.
当用户代码读取FEESTA寄存器时,该位自动清0.
批量擦除命令执行序列考虑到批量擦除命令的后果严重,启动此操作前必须执行特定代码序列.
1.
确保FEESTA已清0.
2.
FEEMOD的位3置1.
3.
将0xFFC3写入FEEADR.
4.
将0x3CFF写入FEEDAT.
5.
运行FEECON中的批量擦除命令(0x06).
命令序列示例执行批量擦除的命令序列见以下示例:Rev.
D|Page20of92FEEMOD寄存器名称:FEEMOD地址:0xFFFF0E04默认值:0x0000访问类型:读/写功能:此寄存器由用户代码写入,以配置Flash/EE存储器控制器的工作模式.
表12.
FEEMODMMR位分配位描述15至7未用.
全部保留供日后使用并应由用户代码写入0.
6至5Flash/EE安全锁定位.
这些位必须写入[6:5]=1、0,以完成Flash/EE安全保护序列.
4Flash/EE控制器命令完成中断使能.
该位由用户代码置1时,使能Flash/EE控制器在Flash/EE命令完成时产生中断.
该位由用户代码清0时,禁止在Flash/EE命令完成时产生Flash/EE中断.
3Flash/EE擦除/写入使能.
该位由用户代码置1时,通过FEECON使能Flash/EE擦除和写入访问.
该位由用户代码清0时,通过FEECON禁用Flash/EE擦除和写入访问.
2保留.
1Flash/EE控制器中止使能.
该位由用户代码置1时,使能Flash/EE控制器中止功能.
该位由用户代码清0时,禁用Flash/EE控制器中止功能.
0保留.
FEEADR寄存器名称:FEEADR地址:0xFFFF0E10默认值:由内核更新访问类型:读/写功能:该16位寄存器决定通过FEECON执行任何Flash/EE命令的操作地址.
FEEDAT寄存器名称:FEEDAT地址:0xFFFF0E0C默认值:0x0000访问类型:读/写功能:此16位寄存器存放Flash/EE存储器的读写数据.
ADuC7039Rev.
D|Page21of92图7.
签名命令索引Flash/EE存储器签名寄存器ADuC7039名称:FEESIG地址:0xFFFF0E18默认值:由内核更新访问类型:只读功能:该MMR包含Flash/EE存储器的24位签名.
用户代码签名示例Inta=FEESTA;//EnsureFEESTAisclearedFEEADR=0x0000;//StartpageaddressFEEDAT=0x0600;//Stop(page+1)addressFEECON=0x0B;//SignsPage0toPage2excluding//Address0x805FCwhile(FEESTA&0x04){}//Waitforcommandtofinish0x80000PAGE00x80200PAGE10x80400FEEDAT=0x04XXFEEADR=0x00XX08463-008Flash/EE存储器签名Flash/EE存储器中可供用户使用的空间(62kB或其中一部分)可利用FEESIG寄存器和签名命令进行签名.
此功能自动读取FEEADR和FEEDATMMR指定的存储器部分中的代码:FEEADR包含一个位于要签名部分的前半页的地址.
FEEDAT包含一个位于要签名部分的最后一页之上的前半页的地址.
如本例中的图7所示,页0和页1被签名.
如果FEEADR和FEEDAT的8个MSB相同,即这些MMR指向同一页面,则不会给任何页签名.
签名不包括最后两个16位位置,这些位置保留用于用户编程的签名.
可以给半页签名,方法是在FEEADR和FEEDAT中指定半页地址.
例如,要给页0的后半页和页1的前半页签名,则应设置FEEADR=0x0100且FEEDAT=0x0300.
上电时,在转入用户代码之前,片上内核也会利用此功能来检查页0的有效性.
给器件编程时,应将页0的签名存储在地址0x801FC.
详情参见"ADuC7039内核"部分.
用户代码可以将FEESIG的内容与地址0x805FC的内容相比较.
多项式ADI公司提供了一个软件例程来计算唯一的24位签名.
Rev.
D|Page22of92Flash/EE存储器保护寄存器名称:FEEHID和FEEPRO地址:0xFFFF0E20(用于FEEHID)和0xFFFF0E1C(用于FEEPRO)默认值:0xFFFFFFFF(用于FEEHID)和0x00000000(用于FEEPRO)访问类型:读/写功能:这些寄存器由用户代码写入以配置Flash/EE存储器保护.
表13.
FEEHID和FEEPROMMR位分配位描述31读保护位.
该位由用户代码清0时,可为62kBFlash/EE模块代码提供读保护功能.
该位由用户代码置1时,允许通过JTAG对62kBFlash/EE模块进行读取访问.
30至0写保护位.
由用户代码置1时,这些位解除对62kBFlash/EE代码存储器的页0至页123的保护.
每位写保护4页,每页包括512字节.
由用户代码清0时,这些位为62kBFlash/EE代码存储器的页0至页123提供写保护.
每位写保护4页,每页包括512字节.
Flash/EE存储器安全性用户可用的62kBFlash/EE存储器可以利用FEEHID寄存器提供读写保护.
FEEHID的MSB(位31)保护整个Flash/EE不被JTAG读取.
FEEHID的位[30:0]保护页123至页0不被写入.
每位保护4页,即2kB.
FEEPRO寄存器镜像复制FEEHIDMMR的位定义.
FEEPROMMR允许用户代码锁定Flash/EE存储器的保护或安全配置,这样在以后上电或复位事件时可自动载入保护配置.
这种灵活性允许用户利用FEEHIDMMR临时设置并测试保护设置,随后在将保护系统运送到现场时锁定所需保护配置(利用FEEPRO).
ADuC7039Rev.
D|Page23of92序列示例Inta=FEESTA;//EnsureFEESTAisclearedFEEPRO=0xFFFFFFFB;//ProtectPage8toPage11FEEADR=0x66BB;//32-bitkeyvalue(Bits[31:16])FEEDAT=0xAA55;//32-bitkeyvalue(Bits15:0])FEEMOD=0x0048//LocksecuritysequenceFEECON=0x0C;//Writekeycommandwhile(FEESTA&0x04){}//Waitforcommandtofinish总之,有如下三种保护级别.
临时保护临时保护可通过直接写入FEEHIDMMR来设置和取消.
此寄存器为易失性,因此保护只在器件上电时才能维持.
此保护在周期供电后便不再重新载入.
加密永久性保护加密永久性保护可通过FEEPRO设置以锁定保护配置.
所需FEEPRO写入序列开头使用的软件密钥仅保存一次,必须在以后的任何FEEHID或FEEPROMMR访问中使用.
批量擦除可将软件保护密钥设回到0xFFFF,但同时也擦除了整个用户代码空间.
永久性保护永久性保护可通过FEEPRO设置,设置方式类似于加密永久性保护,唯一不同在于所用软件密钥为0xDEADDEAD.
FEEPRO写入序列保存后,只有批量擦除可将软件保护密钥设回到0xFFFFFFFF.
这也会擦除整个用户代码空间.
写入软件保护密钥和设置永久性保护的序列1.
写入和欲保护页相对应的FEEPRO.
2.
将新的(用户定义)32位软件保护密钥写入FEEADR的位[31:16]和FEEDAT的位[15:0].
3.
将1、0写入FEEMOD的位[6:5],并将FEEMOD的位3置1.
4.
执行FEECON中的写入密钥命令(0x0C).
要取消或修改保护,可使用相同的序列,同时修改FEEPRO值.
上述写入密钥并设置永久性保护的序列示例如下,此示例为Flash/EE的页8至页11提供写保护.
ADuC7039Rev.
D|Page24of92图8.
Flash/EE存储器数据保持期限系统内核校验和名称:SYSCHK地址:0xFFFF0244默认值:0x00000000(上电时由内核更新)访问类型:读/写功能:上电时,该32位寄存器保存内核校验和.
01503004506003040557085100125135150RETENTION(Years)JUNCTIONTEMPERATURE(°C)08463-009Flash/EE存储器可靠性此器件的Flash/EE存储器阵列完全满足两大Flash/EE存储器关键特性要求:周期耐久性和数据保持期限.
耐久性用于衡量Flash/EE存储器重复多个编程、读取及擦除周期的能力.
一个耐久性周期包括4个独立、连续的事件,定义如下:初始页面擦除序列读取/验证序列字节编程序列第二个读取/验证序列在进行可靠性验证时,Flash/EE存储器中三页(顶、中和底)的每半个字(16位宽)可循环存取10000次(从0x0000至0xFFFF).
如表1所示,此器件的Flash/EE存储器耐久性指标是根据JEDEC保存期限规格A117测试的.
结果表明,随电源和温度变化,最小耐久性参数规格达10,000周期.
保持期限衡量Flash/EE存储器长时间保持编程数据的能力.
该器件在特定结温(TJ=85°C)下根据标准JEDEC保持期限规格A117进行测试,如表1所示.
这表明每次对Flash/EE存储器进行重新编程时,都保证Flash/EE存储器在完全指定的保持期限内保持数据.
此外应注意,保持期限(基于0.
6eV的激活能)随TJ递减,如图8所示.
ADuC7039内核ADuC7039在顶部2kBFlash/EE代码空间内常驻有一个片上内核.
发生任何复位事件后,此内核计算自己的校验和,并将其与生产测试期间编程的校验和进行比较,以确保内核不含任何错误.
如果有错误,SYSCHK寄存器恢复其默认值,且器件进入用户模式.
在正常情况下,校验和写入SYSCHKMMR.
然后,内核将工厂校准数据从制造数据空间复制到不同片内外设中.
内核校准的外设如下:精密振荡器低功耗振荡器REG_AVDD/REG_DVDD基准电压源电流ADC(失调和增益)电压/温度ADC(失调和增益)可被内核修改且不同于POR默认值的处理器寄存器和用户寄存器如下:R0至R15GP0CONSYSCHKFEEADR/FEEDAT/FEECON/FEESIGHVDAT/HVCONHVCFGT2LDADuC7039还有一个片内LIN下载器.
内核执行流程图如图9所示.
如表66所述,当前内核版本可从R5获得.
复位后,一旦内核代码激活,便会禁用看门狗定时器.
在内核执行期间,看门狗定时器有效,超时周期为500ms.
这确保内核发生错误时,ADuC7039会自动复位.
进入LIN下载模式后,会定期刷新看门狗.
ADuC7039Rev.
D|Page25of92图9.
ADuC7039内核流程图ADuC7039POWERDOWNKICKWDTTRYTOSWITCHOFFWDTINITIALIZEWDTINITIALIZEHVCHIPCOPYMANIDTOMMRsRESET(EXT,POR,ORWDT)RUNUSERCODESOFTWARERESETKERNELCRCERRORYESYESNTRST=1YESYESNONOYESYESNTRST=1MULTIPLECRCERRORNONONO0x801FC=0xFFFFFFFFLINRECEIVEDYESNO0x801FC=0x16400000YESNONO0x801FC=PAGE0CRCKICKWDTHANDLELINCOMMANDUSERRESETNOYESRESETCOMMANDYESNO08463-010正常内核执行时间(不包括LIN下载)少于5ms.
LIN下载模式的进出只能通过复位完成.
正常内核执行期间会修改SRAM地址0至地址0x2B,LIN下载期间还会修改SRAM地址0xFF至地址0x110.
注意,即使NTRST=0,也不会执行用户代码,除非地址0x801FC包含0x16400000或页0的CRC.
如果地址0x801FC不包含这些信息,就会无法执行用户代码而转入LIN下载模式.
内核执行期间会禁止JTAG访问.
ADuC7039交货时,Flash用户空间被完全擦除,如果初次上电时NTRST=0,则进入LIN下载模式.
当NTRST=1时,则始终执行用户代码,并使能JTAG.
Rev.
D|Page26of92图10.
顶层MMR映射INTERRUPTCONTROLLER0xFFFF01100xFFFF0000REMAPANDSYSTEMCONTROL0xFFFF02480xFFFF0220TIMER00xFFFF03100xFFFF0300WAKE-UPTIMER10xFFFF03340xFFFF0320WATCHDOGTIMER20xFFFF03500xFFFF0340PLLANDOSCILLATORCONTROL0xFFFF04A40xFFFF0400ADC0xFFFF05600xFFFF0500LINHARDWARE0xFFFF08000xFFFF0700HVINTERFACE0xFFFF08100xFFFF0804SPI0xFFFF0A140xFFFF0A00GPIO0xFFFF0D200xFFFF0D00FLASHCONTROLINTERFACE0xFFFF0E240xFFFFFFFF0xFFFF0E0008463-011存储器映射寄存器(MMR)存储器映射寄存器(MMR)空间映射到顶部4kB的MCU存储器空间,并且可以通过ARM7寄存器组的间接寻址、载入和存储命令来加以访问.
ADuC7039寄存器映射图如图10所示.
MMR空间为CPU和所有片内外设提供接口.
除ARM7内核寄存器(参见"ARM寄存器"部分)外,所有寄存器都常驻于MMR区域内.
如"完整MMR列表"部分中的MMR详细映射(表14至表23)所示,MMR数据宽度为1个字节(8位)到4个字节(32位)不等.
ARM7内核可32位读写访问任何MMR(单字节或多字节宽度寄存器).
例如,如上文所述,读取结果采用从小到大顺序格式排列.
但如果ARM7内核试图以16位访问形式访问4字节(32位)MMR,就会导致错误.
在16位写入32位MMR的情况下,16个最高有效位(高16位)全部被写入0.
更明显的是,在16位读取32位MMR的情况下,只能读取MMR位中的16位.
ADuC7039Rev.
D|Page27of92表14.
IRQ基地址=0xFFFF0000地址名称字节访问类型默认值描述0x0000IRQSTA4R0x00000000活动IRQ源.
0x0004IRQSIG4R0x00003080所有IRQ源的当前状态(使能和禁用).
0x0008IRQEN4RW0x00000000使能的IRQ源.
0x000CIRQCLR4WN/AMMR禁用IRQ源.
0x0010SWICFG4WN/A软件中断配置MMR.
0x0100FIQSTA4R0x00000000活动IRQ源.
0x0104FIQSIG4R0x00003081所有IRQ源的当前状态(使能和禁用).
0x0108FIQEN4RW0x00000000使能的IRQ源.
0x010CFIQCLR4WN/AMMR禁用IRQ源.
表15.
系统控制基地址=0xFFFF0200地址名称字节访问类型默认值描述0x0220SYSMAP1RWN/AREMAP控制寄存器.
0x0230RSTSTA1RWN/A复位状态MMR.
0x0234RSTCLR1WN/ARSTSTA清零MMR.
0x0244SYSCHK14RWN/A内核校验和.
参见"系统内核校验和"部分.
表16.
定时器基地址=0xFFFF0300地址名称字节访问类型默认值描述0x0300T0LD2RW0x0000定时器0载入寄存器.
0x0304T0VAL2R0x0000定时器0值寄存器0.
0x0308T0CON4RW0x0000定时器0控制MMR.
0x030CT0CLRI1WN/A定时器0中断清除寄存器.
0x0320T1LD4RW0x00000000定时器1载入寄存器.
0x0324T1VAL4R0xFFFFFFFF定时器1值寄存器.
0x0328T1CON4RW0x0000定时器1控制MMR.
0x032CT1CLRI1WN/A定时器1中断清除寄存器.
0x0340T2LD14RW0x0050定时器2载入寄存器.
0x0344T2VAL4R0x00000050定时器2值寄存器.
0x0348T2CON2RW0x0000定时器2控制MMR.
0x034CT2CLRI1WN/A定时器2中断清除寄存器.
完整MMR列表在下列MMR列表中,地址用16进制码表示.
访问类型:R表示读取,W表示写入,RW表示读写.
1由内核更新.
1由内核更新.
ADuC7039Rev.
D|Page28of92表17.
PLL基地址=0xFFFF0400地址名称字节访问类型默认值描述表18.
ADC基地址=0xFFFF0500地址名称字节访问类型默认值描述PLL状态MMR.
POWCON预写密钥.
电源控制寄存器.
POWCON写后密钥.
PLLCON预写密钥.
PLL时钟源选择MMR.
PLLCON写后密钥.
低功耗振荡器校准控制MMR.
低功耗振荡器校准状态MMR.
低功耗振荡器校准计数器0MMR.
低功耗振荡器校准计数器1MMR.
LIN振荡器校准控制寄存器.
低功耗振荡器用户调整寄存器.
精密振荡器用户调整寄存器.
LIN振荡器校准,最大波特率容差(LINBR+x).
LIN振荡器校准,最小波特率容差(LINBR-x).
LIN振荡器校准状态寄存器.
低功耗振荡器当前调整值寄存器.
精密振荡器当前调整值寄存器.
LIN振荡器校准锁定寄存器.
N/AN/A0x079N/AN/A0x00N/A0x000x000x00000x00000x00N/AN/A0x000000x000000x01N/AN/AN/APLLSTAPOWKEY0POWCONPOWKEY1PLLKEY0PLLCONPLLKEY1OSCCONOSCSTA0SCVAL0OSCVAL1LOCCONLOCUSR0LOCUSR1LOCMAXLOCMINLOCSTALOCVAL0LOCVAL1LOCKEY0x04000x04040x04080x040C0x04100x04140x04180x04400x04440x04480x044C0x04800x04840x04880x048C0x04900x04940x04980x049C0x04A0RWRWWWRWWRWRRRRWRWRWRWRWRRRW44244141122112331122ADC状态MMR.
ADC中断源使能MMR.
ADC模式寄存器.
电流ADC控制MMR.
V/TADC控制MMR.
ADC滤波器控制MMR.
ADC配置MMR.
电流ADC结果MMR.
V/TADC结果MMR.
电流ADC失调MMR.
电压ADC失调MMR.
温度ADC失调MMR.
电流ADC增益MMR.
电压ADC增益MMR.
温度ADC增益MMR.
电流ADC结果计数限值.
电流ADC结果计数值.
电流ADC结果阈值.
电流ADC结果累加器.
0x00000x000x000x00020x00000x00070x000x00000x0000N/AN/AN/AN/AN/AN/A0x00010x00000x00000x00000000RRWRWRWRWRWRWRRRWRWRWRWRWRWRWRRWR2112221222222222224ADCSTAADCMSKIADCMDEADC0CONADC1CONADCFLTADCCFGADC0DATADC1DATADC0OF1ADC1OF1ADC2OF1ADC0GN1ADC1GN1ADC2GN1ADC0RCLADC0RCVADC0THADC0ACC0x05000x05040x05080x050C0x05100x05180x051C0x05200x05240x05300x05340x05380x053C0x05400x05440x05480x054C0x05500x055C1由内核更新.
ADuC7039Rev.
D|Page29of92表19.
LIN基地址=0xFFFF0700地址名称字节访问1类型默认值描述0x0700LINCON2RW0x0000LIN控制MMR.
0x0704LINCS1RW0xFFLIN校验和MMR.
0x0708LINBR3RW0x00FA019位LIN波特率MMR.
0x070CLINBK3RW0x0157C19位LIN断开MMR.
0x0710LINSTA2R0x0100LIN状态MMR.
0x0714LINDAT1RW0x00LIN数据MMR.
0x0718LINLOW3RW0x00000强制拉低总线的LIN计数器.
0x071CLINWU3RW0x00013LIN唤醒断开长度.
表20.
高压接口基地址=0xFFFF0804地址名称字节访问类型默认值描述0x0804HVCON1RWN/A高压接口控制MMR.
0x080CHVDAT1RWN/A高压接口数据MMR.
表21.
SPI基地址=0xFFFF0A00地址名称字节访问类型默认值描述0x0A00SPISTA2R0x0000SPI状态MMR.
0x0A04SPIRX1R0x00SPI接收MMR.
0x0A08SPITX1WN/ASPI发送MMR.
0x0A0CSPIDIV1R/W0x00SPI波特率选择MMR.
0x0A10SPICON2R/W0x0000SPI控制MMR.
表22.
GPIO基地址=0xFFFF0D00ADuC7039地址名称字节访问类型默认值描述0x0D00GPCON4RW0x00000000GPIO端口控制MMR.
0x0D10GPDAT14RW0x000000FFGPIO端口数据控制MMR.
0x0D14GPSET4WN/AGPIO端口数据设置MMR.
0x0D18GPCLR4WN/AGPIO端口数据清零MMR.
表23.
Flash/EE基地址=0xFFFF0E00地址名称字节访问类型默认值描述0x0E00FEESTA2R0xXXX0Flash/EE状态MMR0x0E04FEEMOD2RW0x0000Flash/EE控制MMR.
0x0E08FEECON1RW0x07Flash/EE控制MMR.
0x0E0CFEEDAT2RW0x0000Flash/EE数据MMR.
0x0E10FEEADR12RW0xF009Flash/EE地址MMR.
0x0E18FEESIG3RN/AFlash/EELFSRMMR.
0x0E1CFEEPRO4RW0x00000000Flash/EE保护MMR.
0x0E20FEEHID4RW0xFFFFFFFFFlash/EE保护MMR.
1由内核更新.
1取决于外部GPIO引脚上的电平.
Rev.
D|Page30of9216位Σ-Δ型模数转换器ADuC7039内置两个独立的Σ-Δ型模数转换器(ADC):电流通道ADC(I-ADC)和电压/温度通道ADC(V/T-ADC).
这些精确测量通道集成了衰减器、片内缓冲、可编程增益放大器、16位Σ-Δ调制器和数字滤波,以便在12V汽车电池系统中精确测量电流、电压和温度变量.
电流通道ADC(I-ADC)I-ADC转换外部100μΩ分流电阻检测的电池电流.
片内可编程增益意味着I-ADC可处理高达±1500A的电池电流.
如图11所示,I-ADC采用Σ-Δ转换技术来实现16位无失码性能.
Σ-Δ调制器将采样输入信号转换成占空比包含数字信息的数字脉冲序列,然后使用一个修改的Sinc3可编程、低通滤波器来抽取调制器输出数据流以提供有效的16位数据转换结果.
在正常和低功耗模式下,输出速率可在10Hz至1kHz范围内编程.
I-ADC还内置了计数器、比较器和累加器逻辑,从而允许I-ADC结果在预定转换数目或I-ADC结果超过可编程阈值后产生中断.
使能此功能后,32位累加器会自动对16位I-ADC结果求和.
在电流通道上获得第一个有效(完全稳定)结果的时间为斩波模式关闭时的三个ADC转换周期或斩波模式开启时的两个ADC转换周期.
使能ADC连续中断选项后,即使ADC采样未建立,也能产生中断.
ADuC7039Rev.
D|Page31of92图11.
电流ADC顶层概览ADuC7039PGAADCTHRESHOLDADCRESULTOUTPUTFORMATCHOPCHOPANALOGINPUTDIAGNOSTICCURRENTSOURCESTWO50AIIN+ANDIIN–CURRENTSOURCES.
ANALOGINPUTDIAGNOSTICVOLTAGESOURCEVREF/136VOLTAGEINPUT.
ANALOGINPUTPROGRAMMABLECHOPPINGTHEINPUTSAREALTERNATELYREVERSEDTHROUGHTHECONVERSIONCYCLE.
Σ-ΔADCTHEΣ-ΔARCHITECTUREENSURES16BITSNOMISSINGCODES.
OUTPUTAVERAGEASPARTOFTHECHOPPINGIMPLEMENTATION,EACHDATA-WORDOUTPUTFROMTHEFILTERISSUMMEDANDAVERAGEDWITHITSPREDECESSOR.
ADCACCUMULATORACCMULATESTHEADCRESULT.
PROGRAMMABLEGAINAMPLIFIERTHEPROGRAMMABLEGAINAMPLIFIERALLOWSEIGHTBIPOLARINPUTRANGESFROM±2.
3mVTO±1.
2V(INTVREF=+1.
2V).
Σ-ΔMODULATORTHEMODULATORPROVIDESAHIGHFREQUENCY1-BITDATASTREAM(THEOUTPUTOFWHICHISALSOCHOPPED)TOTHEDIGITALFILTER,THEDUTYCYCLEOFWHICHREPRESENTSTHESAMPLEDANALOGINPUTVOLTAGE.
IIN+IIN–VREF/136GNDREG_AVDDREG_AVDDΣ-ΔADCΣ-ΔMODULATORPROGRAMMABLEDIGITALFILTEROUTPUTAVERAGEOFFSETCOEFFICIENTGAINCOEFFICIENTADCINTERRUPTADCRESULTACCUMULATORADCRESULTADCRESULTCOUNTERADCCONTINUOUSINTERRUPTADCRESULTCOUNTERCOUNTSADCRESULTS,GENERATESANINTERRUPTONCOUNTEROVERFLOW.
ADCINTERRUPTGENERATORGENERATESANADCRESULTFROMANYONEOFFOURSOURCES.
PRECISIONREFERENCETHEINTERNAL5ppm/°CREFERENCEISROUTEDTOTHEADCBYDEFAULT.
INTERNALREFERENCEPROGRAMMABLEDIGITALFILTERTHESINC3FILTERREMOVESQUANTIZATIONNOISEINTRODUCEDBYTHEMODULATOR.
THEUPDATERATEANDBANDWIDTHOFTHISFILTERAREPROGRAMMABLEVIATHEADCFLTMMR.
DIGITALCOMPARATORTHEADCRESULTISCOMPAREDTOAPRESETTHRESHOLD.
OUTPUTSCALINGTHEOUTPUTWORDFROMTHEDIGITALFILTERISSCALEDBYTHECALIBRATIONCOEFFICIENTSBEFOREBEINGPROVIDEDASTHECONVERSIONRESULT.
08463-012Rev.
D|Page32of92图12.
电压/温度ADC顶层概览*R=66kADCRESULTOUTPUTFORMATCHOPΣ-ΔADCTHEΣ-ΔARCHITECTUREENSURES16BITSNOMISSINGCODES.
OUTPUTAVERAGEASPARTOFTHECHOPPINGIMPLEMENTATION,EACHDATA-WORDOUTPUTFROMTHEFILTERISSUMMEDANDAVERAGEDWITHITSPREDECESSOR.
Σ-ΔMODULATORTHEMODULATORPROVIDESAHIGHFREQUENCY1-BITDATASTREAM(THEOUTPUTOFWHICHISALSOCHOPPED)TOTHEDIGITALFILTER,THEDUTYCYCLEOFWHICHREPRESENTSTHESAMPLEDANALOGINPUTVOLTAGE.
Σ-ΔADCΣ-ΔMODULATORPROGRAMMABLEDIGITALFILTEROUTPUTAVERAGEOFFSETCOEFFICIENTGAINCOEFFICIENTPRECISIONREFERENCETHEINTERNAL5ppm/°CREFERENCEISROUTEDTOTHEADCBYDEFAULT.
BUFINTERNALTEMPMUXINTERNALREFERENCEPROGRAMMABLEDIGITALFILTERTHESINC3FILTERREMOVESQUANTIZATIONNOISEINTRODUCEDBYTHEMODULATOR.
THEUPDATERATEANDBANDWIDTHOFTHISFILTERAREPROGRAMMABLEVIATHEADCFILTERMMR.
OUTPUTSCALINGTHEOUTPUTWORDFROMTHEDIGITALFILTERISSCALEDBYTHECALIBRATIONCOEFFICIENTSBEFOREBEINGPROVIDEDASTHECONVERSIONRESULT.
VBATVTEMP44R*2R*2R*DIFFERENTIALATTENUATORDIVIDE-BY-24,INPUTATTENUATORBUFFERAMPLIFIERSTHEBUFFERAMPLIFIERSPRESENTAHIGHIMPEDANCEINPUTSTAGEFORTHEANALOGINPUT.
REG_AVDDREG_AVDDCHOPANALOGINPUTPROGRAMMABLECHOPPINGTHEINPUTSAREALTERNATELYREVERSEDTHROUGHTHECONVERSIONCYCLE.
ANALOGINPUTDIAGNOSTICCURRENTSOURCESADCRESULTFINAL(16-BIT)ADCRESULT.
08463-013电压/温度通道ADC(V/T-ADC)电压/温度通道ADC(V/T-ADC)转换电压和温度等其它电池参数.
此通道的输入可多路复用两个输入源中的一个:外部电压和片内温度传感器.
与上述电流通道ADC一样,V/T-ADC运用相同的Σ-Δ转换技术,包括一个修改的Sinc3低通滤波器以在10Hz至1kHz的可编程输出速率下提供有效的16位数据转换结果.
由于已在电压通道内实现滤波,因而不需要外部RC滤波器网络.
外部电池电压(VBAT)通过一个片内高压(24分压)电阻衰减器送到ADC输入端.
与电流通道不同,该ADC通道的VBAT具有固定的0V至28.
8V输入范围.
电池温度可通过片内温度传感器获得.
默认情况下,在电压/温度通道上切换输入通道后获得第一个有效(完全稳定)结果的时间为斩波模式关闭时的三个ADC转换周期.
ADC信号链顶层概览如图12所示.
ADuC7039Rev.
D|Page33of92图13.
内部接地开关配置表24.
电流通道ADC在正常功耗模式下的典型输出均方根噪声ADCFLT数据更新速率ADC输入范围±2.
3mV(512)±37.
5mV(32)±300mV(4)10x961F10Hz0.
065V0.
087V0.
7V0x007F50Hz0.
144V0.
170V0.
7V0x00071kHz0.
663V0.
780V2.
6V表25.
电压通道ADC的典型输出均方根噪声(折合到ADC电压衰减器输入端)ADCFLT数据更新速率28.
8VADC输入范围0x961F10Hz65V0x007F50Hz65V0x00071kHz180V表26.
温度通道ADC的典型输出均方根噪声ADCFLT数据更新速率0V至1.
2VADC输入范围0x961F10Hz2.
8V0x007F50Hz2.
8V0x00071kHz7.
5VRREFREG_AVDDVTEMPNTC20kGND_SWADCCFG[7]08463-014ADC接地开关ADuC7039集成一个接地开关引脚GND_SW(引脚9).
通过这个开关,用户可以将外部设备与地动态断开,代之以20kΩ电阻接地,从而减少NTC电路所需的外部元件数目,如图13所示.
接地开关功能有利于降低特定应用电路板的功耗.
ADC噪声性能表表24、25及26列出了I-ADC和V/T-ADC在某些典型输出更新速率下的输出均方根噪声(单位为毫伏).
这些数据都是典型值,分别在0V(I-ADC)、4V(V-ADC)和0.
1V(T-ADC)的差分输入电压下产生.
输出均方根噪声是指ADC输入直流信号时输出代码分布的标准差(或1Σ),单位为μVrms.
1最大绝对输入电压允许范围:对地200mV至+300mV.
ADuC7039Rev.
D|Page34of92ADC状态寄存器名称:ADCSTA地址:0xFFFF0500默认值:0x0000访问类型:只读功能:表27.
ADCSTAMMR位分配位描述15ADC校准状态.
硬件自动将该位置1,表示一个ADC校准周期已完成.
写入下列任一寄存器后,该位自动清0:ADCMDE、ADCFLT或ADC0CON.
14保留.
13ADC电压/温度转换错误.
硬件自动将该位置1,表示电压转换超量程或欠量程.
此时转换结果将箝位至负满量程(欠量程错误)或正满量程(超量程错误).
向ADC1DAT寄存器写入一个有效的(量程范围内的)电压转换结果后,该位自动清0.
12ADC电流转换错误.
硬件自动将该位置1,表示电流转换超量程或欠量程.
此时转换结果将箝位至负满量程(欠量程错误)或正满量程(超量程错误).
向ADC0DAT寄存器写入一个有效的(量程范围内的)电流转换结果后,该位自动清0.
11至6未用.
这些位保留供未来其它功能使用,不必由用户代码监控.
5ADC连续中断位.
每次I-ADC转换后,该位自动置1.
ADC的结果不一定有效.
只有在ADCMDEMMR中使能时,该位才有效.
当用户代码读取ADC0DAT时,该位清0.
4电流通道ADC比较器阈值.
该位仅在电流通道ADC比较器由ADCCFG寄存器使能的条件下有效.
当I-ADC转换结果的绝对值大于ADC0THMMR中写入的值时,硬件将该位置1.
重新配置ADC时,硬件自动将该位清0.
3保留.
2温度转换结果就绪位.
当温度通道ADC使能时,一旦有效温度转换结果写入温度数据寄存器(ADC1DATMMR),硬件就会将该位置1.
每次校准结束后也会置1.
当用户代码读取ADC1DAT或ADC0DAT时,该位清0.
1电压转换结果就绪位.
当电压通道ADC使能时,一旦有效电压转换结果写入电压数据寄存器(ADC1DATMMR),硬件就会将该位置1.
每次校准结束后也会置1.
当用户代码读取ADC1DAT或ADC0DAT时,该位清0.
0电流转换结果就绪位.
当电流通道ADC使能时,一旦有效电流转换结果写入电流数据寄存器(ADC0DATMMR),硬件就会将该位置1.
每次校准结束后也会置1.
当用户代码读取ADC0DAT时,该位清0.
ADCMMR接口ADC通过许多MMR进行控制和配置,下面将详细说明这些寄存器.
ADCSTAMMR的所有高8位(位[15:8])只用作标志位,不产生中断.
此MMR的低8位(位[7:0])进行逻辑或运算,以向MCU内核产生一个ADC中断.
为了响应ADC中断,用户代码应查询ADCSTAMMR以确定中断源.
如"ADC中断屏蔽寄存器"部分所述,每个ADC中断源都可以通过ADCMSKIMMR单独屏蔽.
所有ADC结果就绪位在ADC0DATMMR读取后即被清0.
如果电流通道ADC没有使能,那么所有ADC结果就绪位在读取ADC1DATMMR后被清0.
为了确保I-ADC和V/T-ADC转换数据能够同步,用户代码应先读取ADC1DATMMR,然该只读寄存器保持与ADC工作模式或电流状态相关的一般状态信息.
后读取ADC0DATMMR.
只有先将对应ADC结果就绪位清0,才能将新ADC转换结果写入到ADCxDATMMR.
这条规则的唯一例外是当ARM内核关断并且ADC子系统活动时.
在此模式下,即使就绪位没有被清0,ADCxDAT寄存器仍始终保存最近一次的ADC转换结果.
ADuC7039Rev.
D|Page35of92ADC中断屏蔽寄存器名称:ADCMSKI地址:0xFFFF0504默认值:0x00访问类型:读/写功能:ADC模式寄存器名称:ADCMDE地址:0xFFFF0508默认值:0x00访问类型:读/写功能:DC模式寄存器是一个8位寄存器,用于配置ADC子系统的工作模式.
表28.
ADCMDEMMR位分配位描述7至6未用.
全部保留供日后使用并应由用户代码写入0.
5ADC使能连续中断.
通过将该位置1,可使能ADCSTA[5].
该位默认置0.
4保留.
3ADC功耗模式配置.
0=ADC正常模式.
使能后,ADC以正常功耗工作,获得最佳电气性能.
1=ADC低功耗模式.
使能后,ADC以低功耗工作.
在此模式下,增益固定为512.
2至0该寄存器可单独使能各ADC中断源.
此寄存器的位位置与ADCSTAMMR的低8位相同.
若某位由用户代码置1,相应中断使能.
默认情况下,所有位为0,表示禁用所有ADC中断源.
注意,当ADCMSKI[5]置1时,ADCMSKI[2:0]不得置1.
ADC工作模式配置.
0、0、0=ADC关断模式.
所有ADC电路关断.
0、0、1=ADC连续转换模式.
在此模式下,任何使能的ADC都将连续转换.
0、1、0=ADC单次转换模式.
在此模式下,任何使能的ADC将执行一次转换.
ADC在完成单次转换操作后进入空闲模式.
一个单次转换需要花费两到三个ADC时钟周期,具体的周期数取决于是否启用了斩波模式.
0、1、1=ADC空闲模式.
在此模式下,ADC完全上电,但保持复位状态.
1、1、0=ADC系统零电平校准.
在此模式下,参照施加于ADC输入引脚的外部零电平电压,对使能的ADC通道进行零电平校准.
校准是在用户编程的ADC设置下进行的;因此,与正常单次ADC转换一样,必须等待ADC滤波器完全建立后,校准结果才能完全建立.
当ADCSTA[15]置1时,结果(失调系数)在ADCxDATMMR中提供.
用户软件应将转换结果复制到ADCxOFMMR.
1、1、1=ADC系统满量程校准.
在此模式下,参照施加于ADC输入引脚的外部满量程电压,对使能的ADC通道进行满量程校准.
当ADCSTA[15]置1时,结果(增益系数)在ADCxDATMMR中提供.
用户软件应将转换结果复制到ADCxGNMMR.
其它=保留.
ADuC7039Rev.
D|Page36of92电流通道ADC控制寄存器ADuC7039名称:ADC0CON地址:0xFFFF050C默认值0x0002访问类型:读/写功能:该电流通道ADC控制MMR是一个16位寄存器,用于配置I-ADC.
注意:如果通过ADC0CON对电流ADC进行重新配置,则电压/温度ADC也会复位.
表29.
ADC0CONMMR位分配位描述15电流通道ADC使能.
该位由用户代码置1时,使能I-ADC.
该位由用户代码清0时,关断I-ADC,并使ADCSTAMMR中的对应ADC就绪位复位至0.
14至13IIN电流源使能.
00=电流源关闭.
01=在IIN+上使能50μA电流源.
10=在IIN上使能50μA电流源.
11=同时在IIN-和IIN+上使能50μA电流源.
12至10未用.
这些位保留供未来其它功能使用,应写入0.
9电流通道ADC输出编码.
该位由用户代码置1时,I-ADC输出编码配置为单极性.
该位由用户代码清0时,I-ADC输出编码配置为二进制补码.
8未用.
该位保留供未来其它功能使用,应写入0.
7至6电流通道ADC输入选择.
00=IIN+、IIN.
01=IIN、IIN=诊断性、内部短路配置.
10=VREF/136,0V,诊断性、测试电压,适用于增益设置0时,ADC输出更新速率在斩波开启或关闭时均相同.
斩波使能时,建立时间为两个输出周期.
ADuC7039Rev.
D|Page39of92表32.
ADC转换速率和建立时间斩波使能平均系数移动平均fADCtSETTLING1否否否否否是否是否否是是是N/AN/A表33.
SF和AF的允许组合AF范围SF01至78至630至31是是是32至63是是否64至127是否否1在第一个ADC转换结果可用之前,每个ADC需要约60μs的额外时间.
ADuC7039Rev.
D|Page40of92ADC配置寄存器名称:ADCCFG地址:0xFFFF051C默认值:0x00访问类型:读/写功能:该8位ADC配置MMR用于控制与片内ADC相关的扩展功能.
表34.
ADCCFGMMR位分配位描述76至5未用.
这些位保留供未来其它功能使用,不能由用户代码修改.
432未用.
该位保留供未来使用,应由用户代码写入0.
10电流通道ADC数据寄存器名称:ADC0DAT地址:0xFFFF0520默认值:0x0000访问类型:只读功能:电压/温度通道ADC数据寄存器名称:ADC1DAT地址:0xFFFF0524默认值:0x0000访问类型:只读功能:该ADC数据MMR保存V/T-ADC的16位电压(或温度)转换结果.
如果电压(或温度)转换结果就绪位(ADCSTA[1]或ADCSTA[2])置1,则ADC不更新此MMR.
如果I-ADC未激活,MCU读取此MMR后即清除所有置位的就绪标志(ADCSTA[2:1]和ADCSTA[5]).
该ADC数据MMR保存I-ADC的16位转换结果.
如果ADC0转换结果就绪位(ADCSTA[0])置1,则ADC不更新此MMR.
MCU读取该MMR后,将清除所有置位的就绪标志(ADCSTA[2:0]和ADCSTA[5]).
电流通道ADC结果计数器使能.
该位由用户置1时,使能结果计数模式.
在此模式下,仅当ADC0RCV=ADC0RCL时产生I-ADC中断.
这样不仅允许I-ADC持续监控电流,而且在达到预定转换次数后中断MCU内核.
使能后,电压/温度ADC也会继续转换,但同样,发生ADC计数器中断时只保存最后一次转换结果(不存储中间V/T-ADC转换结果).
快速温度传感器模式.
该位由用户置1时,使能"快速温度转换模式"部分所述的功能.
该位置1时,ADC1CON[7:6]暂时被忽略,以产生内部温度传感器的一个完全建立的结果.
这种快速转换模式仅适用于内部温度传感器.
快速转换完成时,用户应将该位清0.
电流通道ADC比较器使能.
0=比较器禁用.
1=比较器激活,如果I-ADC转换结果的绝对值|I|≥ADC0TH,则中断置位.
电流通道ADC累加器使能.
0=累加器禁用并复位至0.
一次完整的ADC转换(ADCSTA[0]设置两次)完成后,必须禁用累加器,然后再使能累加器,以确保将其复位.
1=累加器使能.
模拟接地开关使能.
该位由用户软件置1时,外部GND_SW引脚(引脚9)连接到内部20kΩ接地电阻.
在程序控制下,该位可用于将外部电路和元件接地或断开,从而在不使用外部电路或元件时,将直流功耗降到最低.
ADuC7039Rev.
D|Page41of92电流通道ADC失调校准寄存器名称:ADC0OF地址:0xFFFF0530默认值:0x0000访问类型:读/写功能:电压通道ADC失调校准寄存器名称:ADC1OF地址:0xFFFF0534默认值:0x0000访问类型:读/写功能:温度通道ADC失调校准寄存器名称:ADC2OF地址:0xFFFF0538默认值:0x0000访问类型:读/写功能:电流通道ADC增益校准寄存器名称:ADC0GN地址:0xFFFF053C默认值:取决于器件,工厂编程访问类型:读/写功能:电压通道增益校准寄存器名称:ADC1GN地址:0xFFFF0540默认值:取决于器件,工厂编程访问类型:读/写功能:温度通道增益校准寄存器名称:ADC2GN地址:0xFFFF0544默认值:取决于器件,工厂编程访问类型:读/写功能:该增益MMR保存用于按比例调整温度通道转换结果的16位增益校准系数.
上电时该寄存器配置为出厂默认值.
该增益MMR保存用于按比例调整电压通道转换结果的16位增益校准系数.
上电时该寄存器配置为出厂默认值.
然而,通过ADCMDE[2:0]执行校准后,用户代码可以用ADC1DAT包含的增益校准结果覆盖此默认值.
该增益MMR保存用于按比例调整I-ADC转换结果的16位增益校准系数.
上电时该寄存器配置为出厂默认值.
然而,通过ADCMDE[2:0]执行校准后,用户代码可以用ADC0DAT包含的增益校准结果覆盖此默认值.
该ADC失调MMR保存温度通道的16位失调校准系数.
上电时该寄存器配置为出厂默认值.
然而,通过ADCMDE[2:0]执行校准后,用户代码可以用ADC1DAT包含的失调校准结果覆盖此默认值.
该ADC失调MMR保存电压通道的16位失调校准系数.
上电时该寄存器配置为出厂默认值.
然而,通过ADCMDE[2:0]执行校准后,用户代码可以用ADC1DAT包含的失调校准结果覆盖此默认值.
该ADC失调MMR保存I-ADC的16位失调校准系数.
上电时该寄存器配置为出厂默认值.
然而,通过ADCMDE[2:0]执行校准后,用户代码可以用ADC0DAT包含的失调校准结果覆盖此默认值.
ADuC7039Rev.
D|Page42of92电流通道ADC结果计数器限值寄存器名称:ADC0RCL地址:0xFFFF0548默认值:0x0001访问类型:读/写功能:电流通道ADC结果计数寄存器名称:ADC0RCV地址:0xFFFF054C默认值:0x0000访问类型:只读功能:电流通道ADC阈值寄存器名称:ADC0TH地址:0xFFFF0550默认值:0x0000访问类型:读/写功能:电流通道ADC累加器寄存器名称:ADC0ACC地址:0xFFFF055C默认值:0x00000000访问类型:只读功能:该32位MMR保存电流累加器值.
应使用ADCSTAMMR的I-ADC就绪位来确定何时可以安全地读取MMR.
在ADCCFGMMR内禁用累加器或重新配置电流通道ADC时复位至0.
该16位MMR设置用来与I-ADC转换结果的绝对值进行比较的阈值.
在单极性模式下,与ADC0TH[15:0]进行比较;而在二进制补码模式下,与ADC0TH[14:0]进行比较.
该16位只读MMR保存当前的I-ADC转换结果数目.
与ADC0RCL配合产生I-ADC中断屏蔽,从而产生较低的中断速率.
ADC0RCV=ADC0RCL时,ADC0RCV值复位至0并重新开始计数.
还可配合累加器(ADC0ACC)使用以计算电流均值.
通过设置ADCCFG[0],可以使能结果计数器.
当重新配置I-ADC时,即当写入ADC0CON或ADCMDE时,此MMR复位至0.
该16位MMR设置产生ADC中断前所必需的转换次数.
默认情况下,该寄存器的值为0x01.
要使能ADC计数器功能,必须将ADCCFGMMR中的ADC结果计数器使能位置1.
ADuC7039Rev.
D|Page43of92图14.
fADC=1.
0kHz(ADCFLT=0x0007)时的典型数字滤波器响应fNOTCH2=1.
333*fNOTCH其中,fNOTCH表示响应中第一个陷波所在位置.
图15.
fADC=1.
0kHz(ADCFLT=0x0087)时的修正后Sinc3数字滤波器响应图16.
fADC=10Hz,(ADCFLT=0x961F)时的典型数字滤波器响应ADuC7039–1000–10–20–30–40–50–60–70–80–900500100015002000250030003500400045005000(dB)FREQUENCY(Hz)08463-015(dB)FREQUENCY(kHz)–1000–10–20–30–40–50–60–70–80–9000.
51.
52.
53.
54.
04.
53.
02.
01.
05.
008463-016–1000–10–20–30–40–50–60–70–80–90020018016014012010080604020(dB)FREQUENCY(Hz)08463-017ADCSinc3数字滤波器响应所有ADuC7039ADC的整体频率响应主要取决于片内Sinc3数字滤波器的低通滤波器响应.
Sinc3滤波器的作用是抽取ADCΣ-Δ调制器输出数据位流以产生有效的16位数据结果.
两个ADC的数字滤波器响应完全相同,并通过16位ADC滤波器寄存器(ADCFLT)配置.
这个寄存器决定ADC的总吞吐速率.
编程的ADC吞吐速率决定ADC的噪声分辨率.
对于电流通道ADC,吞吐速率和所选增益决定噪声分辨率.
整体频率响应和吞吐速率主要取决于Sinc3滤波器抽取系数(SF)位(ADCFLT[6:0])和平均系数(AF)位(ADCFLT[13:8])的配置.
由于数字滤波器内部数据路径有限,可以用来产生所需输出速率的SF和AF组合也有限制,正常功耗模式下,ADC最小更新速率以10Hz为限.
ADC吞吐速率的计算方法详见ADCFLT位分配表,而AF和SF值的允许组合限制见表33.
默认情况下,ADCFLT=0x0007时吞吐速率配置为1.
0kHz,同时禁用所有其它滤波器选项(斩波、移动平均、平均系数及Sinc3修正).
此时典型滤波器响应如图14所示.
此外,ADCFLT寄存器还提供了一个附加Sinc3修正位(ADCFLT[7]).
该位由用户代码置1时,可以修正标准Sinc3频率响应,进而将滤波器阻带抑制提升约5dB.
这可以通过插入另一个陷波(NOTCH2)来实现.
该陷波的频率公式如下:该位有效时,ADC噪声会略微增加.
图15显示Sinc3修正位有效时修正过的1kHz滤波器响应.
同标准1kHz响应相比,与阻带抑制提升一样,新陷波清楚地出现在1.
33kHz处.
吞吐速率极低时,可使能ADCFLT寄存器内的斩波位,从而最大程度降低失调误差,更重要的是最大程度降低失调误差的温度漂移.
用户可使用两个主要变量(Sinc3抽取系数和平均系数)来选择最佳滤波器响应,但需要权衡滤波器带宽和ADC噪声.
例如,如果斩波位(ADCFLT[15])置1,SF值(ADCFLT[6:0])增加至0x1F(十进制31)且AF值(ADCFLT[13:8])选择为0x16(十进制22),则产生10Hz的ADC吞吐速率.
此时的频率响应曲线如图16所示.
Rev.
D|Page44of92表35.
常见ADCFLT配置ADC模式SFAF其它配置ADCFLTfADCtSETTLE正常0x1F0x16斩波开启0x961F10Hz0.
2sec正常0x070x00无0x00071kHz3ms正常0x070x00Sinc3修正0x00871kHz3ms低功耗0x100x03斩波开启0x831020Hz100ms低功耗0x100x09斩波开启0x891010Hz200msADuC7039在ADC低功耗模式下,ADC、Σ-Δ调制器时钟不再由512kHz驱动,而直接采用片内低功耗128kHz振荡器驱动.
而在正常模式下,对于相同ADCFLT配置,所有滤波器值都应按比例缩小约4倍.
一般情况下,相同的ADC更新速率可通过在ADCFLT寄存器内设置不同的SF和AF值来获得.
但实际上,不管ADCFLT的值如何,用户都要权衡频率响应和ADC噪声.
要利用SF和AF组合获得最佳滤波器响应和ADC噪声,经验表明SF应选在16到40(十进制)或0x10到0x28之间,然后递增AF值直到获得所需ADC吞吐速率.
表35列举了一些常见的ADCFLT配置.
ADC工作模式通过相应地配置ADCMDE[3],可以将ADC配置为低功耗或全功率(正常)工作模式.
ARM7MCU也可以配置为低功耗工作模式(POWCON[5:3]).
内核功耗模式是独立控制的,和本部分所述ADC功耗模式无关.
ADC正常功耗模式正常模式下,电流和电压/温度通道全部使能.
ADC调制器时钟为512kHz,使得ADC能够以10Hz到1kHz的速率提供正常转换结果(参见"ADC滤波器寄存器"部分).
两个通道都由MCU完全控制,可随时重新配置.
所有通道的默认ADC更新速率为1.
0kHz.
需要强调的是,I-ADC和V/T-ADC通道可以在返回ADC完全关断模式前,启动定期性正常功耗模式的高精度单次转换周期.
此配置由MCU通过ADCMDEMMR完全控制,更加灵活,从而实现电池电流、电压和温度设置的持续周期性监控,同时将平均直流功耗降到最低.
在ADC正常模式下,PLL不得关断.
ADC低功耗模式在ADC低功耗模式下,I-ADC的功耗和精度都会降低.
此时,ADC调制器时钟直接采用片内128kHz低功耗振荡器驱动.
在此模式下,ADC的增益固定为512.
所有ADC外设功能(结果计数器、数字比较器和累加器)均可在低功耗模式下使能.
在低功耗模式下,一般只有I-ADC以较低更新速率运行,持续监控电池电流.
MCU处于关断模式,在I-ADC产生中断时唤醒.
当I-ADC检测到当前转换结果超过预设阈值、设定点或设定次数时,就会产生中断.
ADC比较器和累加器每个I-ADC结果也可以与ADCCFG[3]配置的预设阈值(ADC0TH)进行比较.
如果ADC结果的绝对值(符号无关)大于预设比较器阈值,就会产生MCU中断.
最后,可配置32位累加器(ADC0ACC)功能(ADCCFG[5]),使I-ADC加上(或减去)多个采样结果.
用户代码可直接读取累加值(ADC0ACC),不需要任何进一步软件处理.
ADC连续中断模式将ADCMDE[5]置1时,每个ADC转换周期结束时都会产生一个ADC中断,即使ADC滤波器尚未完全建立.
要使能连续中断模式,ADCMSKI中的相应ADC中断位也必须置1.
在此模式下,ADCSTA[2:0]用作有效标志,不应用来产生中断.
Rev.
D|Page45of92ADC校准如顶层框图(图11及12)详细所示,通过所有ADC通道的信号流描述如下:1.
输入电压通过输入缓冲器(对于I-ADC,还要通过PGA)施加到Σ-Δ调制器.
2.
调制器输出施加到可编程数字抽取滤波器.
3.
如果使用斩波,则对滤波器输出结果进行平均.
4.
将偏移值(ADCxOF)从上述结果中减去.
5.
根据增益值(ADCxGN)按比例调整结果.
6.
最后,将结果格式化为二进制补码/单极性形式,并舍入到16位或箝位到正负满量程.
每个ADC通道(电流、电压和温度)都具有一个特定的失调和增益校正或校准系数与之相对应,这些系数存储在MMR的失调和增益寄存器(ADCxOF和ADCxGN)内.
可以利用失调和增益寄存器来消除器件之外的系统失调和增益误差.
这些寄存器在上电时加载工厂预设校准值.
这些工厂校准值因器件而异,反映了ADC内部电路的工艺差异.
校准后,用户代码也可以覆盖这些寄存器.
在电流通道上启动系统校准时,ADC根据外部产生的零电平电压和满量程电压产生校准系数,这些电压在校准周期内施加于外部ADC输入.
系数写入ADC通道的ADC0DATMMR,而不是自动写入ADC0OF或ADC0GNMMR.
用户代码必须将这些值复制到相应的寄存器.
失调校准的持续时间为ADC滤波器完全建立的时间,然后ADC返回空闲模式.
校准周期启动后,任何进行中的ADC转换都会立即停止,校准以ADCFLT中设置的ADC更新速率自动进行,结束后ADC始终返回空闲模式.
强烈建议以尽可能低的ADC更新速率来启动校准(ADCFLT中的SF值较高),这样在校准期间可以尽可能降低ADC噪声的影响.
在电压通道上,必须执行两点校准,因为此输入的最小额定电压为4V.
温度通道针对内部温度传感器经过工厂校准.
电压通道校准要校准电压通道的失调和增益,必须采用两点校准方法.
这种方法转换两个已知电压(例如8V和16V),从而确定传递函数的斜率和偏移.
增益系数可以除以计算得到的斜率,从而降低增益误差.
将计算得到的偏移的(单极性模式)写入ADC1OFMMR,可以降低失调误差.
电流通道校准使能斩波位(ADCFLT[15])后,ADC内部失调误差已降到最低,可能不需要进行失调校准.
但如果斩波禁用,就需要进行初始失调校准,甚至可能需要反复校准,尤其是在发生较大温度变化之后.
视系统精度要求,可能需要在所有相关系统增益范围内进行增益校准,尤其是对于I-ADC(带内部PGA).
如果无法在所有增益范围内施加外部满量程电流,那么可以施加一个较低电流,然后按比例调整校准结果.
例如,施加一个50%电流,然后将所产生的ADC0DAT值除以2并写回到ADC0GN.
注意,由于ADC0GN只有16位,系统校准期间可以施加的输入信号是有下限的.
输入范围(即系统零电平值和满量程值之间的差值)应大于标称满量程输入范围的40%(即>40%的VREF/增益).
片内Flash/EE存储器可以存储多个校准系数.
这些校准系数可根据系统配置由用户代码直接复制到相关校准寄存器内.
对于I-ADC,工厂设置或下线校准分两步:1.
施加0A电流.
根据所需PGA设置等条件配置ADC,并写入ADCMDE[2:0]以进行系统零电平校准,从而将新失调校准值写入ADC0DAT内.
用户代码必须将此值存储在ADC0OF或Flash/EE存储器中.
2.
针对所选PGA设置施加满量程电流.
写入ADCMDE,进行系统满量程校准,从而将新增益校准值写入ADC0DAT内.
用户软件必须将此值复制到ADC0GNMMR或Flash/EE存储器.
ADuC7039Rev.
D|Page46of92NOMREFINOUTADCGNADCGNADCOFVPGAVADC**=NOMREFINOUTADCGNADCGNADCOFKVPGAVADC*=**图17.
默认温度模式,斩波关闭图18.
快速温度模式,斩波关闭(ADCFLT=0x07)表36.
快速温度转换模式中断有效标志用户代码1I和V电压=ADC1DAT2I和V电压=ADC1DAT3I和V电压=ADC1DAT必须读取此数据,之后下一个温度通道标志才会有效.
4I和T温度=ADC1DAT快速温度请求位清05I6I7I和V电压=ADC1DAT8I和V电压=ADC1DATVALIDV/TCONVERSIONV/T-ADCSAMPLINGI-ADCSAMPLINGI-ADCINTERRUPTVVTCHANNELSWITCHINGREQUESTVVVVVVTTT08463-031VVVVVVTVALIDV/TCONVERSIONV/T-ADCSAMPLINGI-ADCSAMPLINGI-ADCINTERRUPTCHANNELSWITCHINGREQUESTVVVVVVVVVV08463-032了解失调和增益校准寄存器ADC信号流中的平均模块输出可视为小数且正负满量程输入范围约为±0.
75.
此范围小于±1.
0,这是因为调制器有衰减,使输入信号具有一定的超量程能力.
由于工艺容差,确切的衰减值因器件而略有不同.
失调系数读取自ADC0OF校准寄存器,此值是一个16位二进制补码.
就信号链而言,此值的有效范围为±1.
0.
因此,ADC0OF寄存器的1LSB和ADC0DAT寄存器的1LSB不一样.
ADC0OF正值表示从滤波器输出中减去失调,负值则相加.
此寄存器的标称值为0x0000,表明要消除零失调.
实际失调可能因器件、PGA增益而异.
启用斩波模式(即ADCFLT[15]=1)可以将ADC内部失调降到最低.
增益系数是一个无单位比例因子,此寄存器的16位值除以16,384后再乘以失调校正值.
此寄存器的标称值为0x5555,对应于乘法因子1.
3333.
这将把标称±0.
75信号放大到±1.
0的满量程输出信号,在进行上溢/下溢检查后转换成二进制补码或单极性模式,然后输出到数据寄存器.
实际增益和零增益误差所需的调整系数因器件、PGA设置而略有差异.
上电复位时下载到ADC0GN的值对应PGA增益为4的比例因子.
如果在不同的PGA设置下使用此值,可能会产生一定的增益误差.
用户代码可以运行ADC校准并覆盖校准系数,以校正当前PGA设置的增益误差.
总之,简化后的ADC传递函数可描述为ADC配置快速温度转换模式电池温度可通过片内温度传感器获得.
默认情况下,ADC输入从电压通道切换到温度通道或从温度通道切换到电压通道后,获得第一个有效(完全稳定)结果的时间为斩波模式关闭时的三个ADC转换周期,如图17所示.
温度通道提供一种快速模式,用于尽可能缩短电压转换和温度转换之间的切换延迟时间,如图18和表36所示.
请求进行快速温度转换时,会延迟一个ADC转换周期.
温度测量结果可用之后、请求进行新温度转换之前,必须退出快速温度转换模式.
ADuC7039此公式对于电压/温度通道ADC有效.
对于电流通道ADC,其中K取决于PGA增益设置和ADC模式.
PGA增益为4和32时,系数K为1.
PGA增益为512时,系数K为8.
Rev.
D|Page47of92快速温度选项不能用在ADC上电后的第一次转换上,至少必须在第一个ADC中断后才能设置,但不必等待一个有效的ADC结果出现.
使用快速温度模式时,还有一个限制是SF>=1.
此外,在此工作模式下,建议使用1ms的转换速率,这是为了确保快速温度结果与当前通道结果同时出现.
写入ADCMDE、ADC0CON或ADCFLT以更改ADC配置时,快速温度位也必须清0,以确保器件正常工作.
这种情况与ADC上电后的第一次转换相似.
I-ADC诊断ADuC7039具有检测应用电路板开路状态的功能.
这是通过ADC0CON[14:13]控制IIN+和IIN上的两个电流源来实现的.
注意,这些电流源的容差为±30%.
ADuC7039Rev.
D|Page48of92图19.
典型上电周期VDD3VTYP12V2.
6VPORTRIP3.
0VTYPLVFTRIP2.
1VTYPREG_DVDDPOR_TRIPRESET(INTERNALACTIVELOWRESETSIGNAL)ENABLE_LVF20msTYP08463-018电源支持电路ADuC7039集成两个片内低压差(LDO)调节器,它们通过电池电压直接驱动来产生一个2.
6V内部电源.
然后,该2.
6V电源用作ARM7MCU和外设的电源,包括那些片内精密模拟电路.
数字LDO利用REG_DVDD上并联的两个外部电容工作,模拟LDO则利用REG_AVDD上的一个外部电容(0.
47μF)工作.
输出电容的ESR会影响LDO控制环路的稳定性.
频率大于32kHz时,建议使用ESR为5Ω或以下的电容以确保调节器的稳定性.
此外还集成了上电复位(POR)及低压标志(LVF)功能,以确保MCU安全运行以及连续监控电池电源.
POR电路的设计VDD(0V至12V)上电时间大于100μs.
因此,选择外部电源去耦元件时务必小心,确保VDD电源上电时间始终大于100μs.
VDD上的串联电阻和去耦电容组合应确保RC时间常数至少为100μs,例如10Ω和10μF,如图33所示.
如图19所示,当VDD上的电源电压达到最小工作电压3V时,POR信号将ARM内核保持在复位状态下20ms.
这样可以确保施加到ARM内核及相关外设的调节电源电压(REG_DVDD)大于最小工作电压,由此保证功能完整.
RSTSTAMMR中的POR标志位置1,指示发生了POR复位事件.
电压低于POR电平时,可使能另一个低压标志(HVCFG[2]).
它可用来指示SRAM的内容在复位事件后仍然有效.
低压标志的示例如图19所示.
使能后,可通过HVSTA[2]监控该位的状态.
如果该位置1,则SRAM内容有效.
如果该位清0,则SRAM内容可能遭到破坏.
ADuC7039Rev.
D|Page49of92图20.
ADuC7039系统时钟发生ADuC7039128kHzDIV4PRECISIONOSCILLATORLOWPOWEROSCILLATOR128kHzDIV4PLLCONPLLFLASHCONTROLLER32kHz32kHzPLLOUTPUT20.
48MHzPLLLOCK18ADCMDECLOCKDIVIDERCORECLOCK12CDMCUADCCLOCKADCTIMER0CORECLOCKHIGHACCURACYCALIBRATIONCOUNTERPRECISIONOSCILLATORTIMER2WATCHDOGLOWPOWEROSCILLATORTIMER1WAKE-UPLOWPOWEROSCILLATORCORECLOCKSPICORECLOCKPLLOUTPUTLOWPOWERCALIBRATIONCOUNTERLOWPOWEROSCILLATORLININTERFACELOWPOWEROSCILLATORCORECLOCK08463-019系统时钟ADuC7039集成一个灵活的时钟系统,其时钟源可以是下面两个集成的片内振荡器之一:精密振荡器和低功耗振荡器.
每个内部振荡器除以4即可产生32kHz的时钟频率.
两个内部振荡器之一提供32kHz,然后PLL锁定在它的倍数(640)上,为系统提供稳定的20.
48MHz时钟.
默认情况下,PLL由低功耗振荡器驱动.
内核默认以10.
24MHz的固定频率工作.
ADC由PLL输出驱动,PLL输出经分频后提供512kHz的ADC时钟源.
在低功耗模式下,ADC时钟源会从标准512kHz切换到低功耗128kHz振荡器.
注意,低功耗振荡器通过一个4分频电路来同时驱动看门狗和内核唤醒定时器.
ADuC7039时钟系统的详细框图如图20所示.
两个集成的振荡器可以按照"振荡器校准"部分所述进行校准.
Rev.
D|Page50of92//FunctionPrototypeVoidPowerDown(void)PowerDownPROCLDRr2,=0x98765432;LoadrandomnumberformultiplicationLDRr3,=0x12345678LDRr0,=0xffff0400;BaseaddressMOVSr1,#0x1;POWKEY0=1STRr1,[r0,#4];SetPOWKEY0MOVSr1,#0x01;SetPOWCONvaluetorecommendedvalueof0x01toensurea10MHzcoreclockSTRr1,[r0,#8]MOVSr1,#0xf4STRr1,[r0,#0xc];SetPOWKEY1UMLALr1,r3,r2,r0;longestpossibleassemblymultiplicationinstructionBXlr;FlushARM7pipelineENDP写入PLLCONMMR:ADuC7039PLLKEY0=0xAA//PLLCONkeyPLLCON=0x1//Switchtoprecisionoscillator.
PLLKEY1=0x55//PLLCONkeyiA1*iA2//PSEUDOCODE-dummycycletopreventFlash/EEaccessduringclockchange工作模式和时钟模式由两个MMR控制(PLLCON和POWCON),PLL状态(PLL锁定和PLL中断)由PLLSTA指示.
关断ADuC7039之前,建议将PLL时钟源切换到低功耗振荡器以缩短唤醒时间.
低功耗振荡器始终有效.
当ADuC7039从关断模式中唤醒时,PLL一开始振荡,MCU内核就会执行代码.
这发生在PLL锁定到20.
48MHz的频率之前.
为了确保Flash/EE存储器控制器获得有效的时钟,当PLL正在锁定时,该控制器通过PLL输出8分频时钟源来驱动.
PLL锁定后,PLL输出才从这个8分频切换到锁定的输出.
如果用户代码需要精确的PLL输出,用户代码必须在唤醒后、恢复正常代码执行前轮询锁定位(PLLSTA[1]).
PLL在唤醒后2ms内锁定.
PLLCON为采用两个32位密钥保护的MMR:PLLKEY0(预写密钥)和PLLKEY1(写后密钥).
PLLKEY0=0x000000AAPLLKEY1=0x00000055PLLCON为采用两个32位密钥保护的MMR:POWKEY0(预写密钥)和POWKEY1(写后密钥).
POWKEY0=0x00000001POWKEY1=0x000000F4序列示例写入两个MMR的示例如下:写入POWCONMMR:Rev.
D|Page51of92PLLSTA寄存器名称:PLLSTA地址:0xFFFF0400默认值:0xXX访问类型:只读功能:该8位寄存器允许用户代码监控PLL的锁定状态.
表37.
PLLSTAMMR位分配位描述7至2保留.
1PLL锁定状态位,只读.
PLL锁定并输出20.
48MHz时,该位自动置1.
PLL未锁定并输出fCORE8分频时钟源时,该位自动清0.
0PLL中断.
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时钟源.
ADuC7039Rev.
D|Page52of92表38.
PLLCONMMR位分配位描述7至1保留.
应由用户代码置0.
0PLL时钟源.
10=低功耗振荡器.
1=精密振荡器.
POWCON预写密钥POWKEY0名称:POWKEY0地址:0xFFFF0404访问类型:只写密钥:0x00000001功能:POWCON是一个加密寄存器,POWCON前后需写入32位密钥值.
POWKEY0为预写密钥.
POWCON写后密钥POWKEY1名称:POWKEY1地址:0xFFFF040C访问类型:只写密钥:0x000000F4功能:POWCON是一个加密寄存器,POWCON前后需写入32位密钥值.
POWKEY1为写后密钥.
POWCON寄存器名称:POWCON地址:0xFFFF0408默认值:0x079访问类型:读/写功能:该12位寄存器允许用户代码动态进入各种低功耗模式.
1如果用户代码切换MCU时钟源,在将时钟切换写入PLLCON后应插入一个MCU空周期.
ADuC7039Rev.
D|Page53of92表39.
POWCONMMR位分配位描述11至9保留.
这些位应该写入0.
8精密振荡器使能.
该位由用户置1时,使能精密振荡器.
该位由用户清0时,关断精密振荡器.
7至6保留.
这些位应该写入0.
543内核关断.
用户代码关断MCU时,在将关断命令写入POWCON后插入一个MCU空周期.
该位默认置1,并在唤醒事件时由硬件置1.
该位清0将关断ARM内核.
2至0内核时钟分频器(CD)位.
000=20.
48MHz,48.
83ns.
001=10.
24MHz,97.
66ns(上电默认设置)010=5.
12MHz,195.
31ns.
011=2.
56MHz,390.
63ns.
100=1.
28MHz,781.
25ns.
101=640kHz,1.
56μs.
110=320kHz,3.
125μs.
111=160kHz,6.
25μs.
外设关断.
由此位关断的外设有:SRAM、Flash/EE存储器、GPIO接口以及SPI端口.
该位默认置1,并且/或者在唤醒事件时由硬件置1.
即使该位置1,由低功耗振荡器驱动时,唤醒定时器(定时器2)仍可继续工作.
该位清0将关断外设.
内核使能时,外设无法关断:位3和位4必须同时清0.
即使该位清0,LIN仍能对唤醒事件作出响应.
PLL关断.
如果定时器外设由PLL输出时钟驱动,则关断.
如果由有效时钟源驱动,则保持有效.
该位默认置1,并在唤醒事件时由硬件置1.
该位清0将关断PLL.
内核或外设使能时不得关断PLL:位3、4及5必须同时清0.
ADuC7039Rev.
D|Page54of92图21.
OSCTRM校准程序WAITFORINTERRUPTOSC0VAL0OSC0VAL1ENDCALIBRATIONROUTINEISERRORWITHINDESIREDLEVELOSC0VAL0=OSC0VAL1NOYESBEGINCALIBRATIONROUTINEDECREASELOCUSR0INCREASELOCUSR008463-020振荡器校准ADuC7039具有两个振荡器和两种校准方案:低功耗振荡器可以利用精密振荡器或LIN通信校准.
时间值也可以由用户代码修改.
精密振荡器可以利用LIN通信校准.
时间值也可以由用户代码修改.
每个振荡器都有专用校准MMR:LOCUSR0是低功耗振荡器用户调整寄存器.
它是一个8位寄存器.
提高LOCUSR0的值会降低低功耗振荡器的频率;降低该值则会提高其频率.
根据标称频率128kHz,典型调整范围在103kHz到156kHz之间.
此MMR可以由用户代码直接写入,或者由硬件相对于LIN波特率自动更改.
LOCUSR1是精密振荡器用户调整寄存器.
它是一个10位MMR.
提高LOCUSR1的值会降低精密振荡器的频率;降低该值则会提高其频率.
根据标称频率128kHz,典型调整范围在94kHz到178kHz之间.
此MMR可以由用户代码直接写入,或者由硬件相对于LIN波特率自动更改.
LOCVAL0是一个8位只读MMR,显示低功耗振荡器的当前调整值.
LOCVAL1是一个10位只读MMR,显示精密振荡器的当前调整值.
注意,从该寄存器可以读出11位,但只有10位用于校准.
低功耗振荡器初始校准复位后,低功耗振荡器以128kHz的频率运行,最大误差为中心频率128kHz的10%到+3%.
客户生产线上的下线校准必须在25°C±5°C的温度范围内执行,使低功耗振荡器和精密振荡器的中心频率一致.
校准后,低功耗振荡器的误差为中心频率的±3%.
该初始校准只需在下线时执行一次.
进一步的校准可通过用户代码执行,以补偿低功耗振荡器的温度漂移.
低功耗振荡器校准序列128kHz低功耗振荡器可以利用128kHz精密振荡器校准.
实现这一功能需要用到两个专用校准计数器.
一个计数器为9位,由精密振荡器提供时钟.
另一个计数开始时钟校准程序前,用户必须将PLL时钟源切换到精密振荡器.
否则,每次修改LOCUSR0时,PLL可能失锁,从而导致低功耗振荡器校准时间延长.
器为10位,由低功耗振荡器提供时钟.
时钟校准模式由下列MMR控制:OSCCON—校准控制位.
OSCSTA—校准状态寄存器.
OSCVAL0—9位计数器0.
OSCVAL1—10位计数器1.
校准程序示例如图21所示.
用户代码利用OSCCON配置并使能校准序列.
当精密功耗振荡器校准计数器OSCVAL0达到0x1FF时,两个计数器禁用.
然后,用户代码回读低功耗振荡器校准计数器的值.
有三种可能情形:OSCVAL0=OSCVAL1.
无需进一步操作.
OSCVAL0>OSCVAL1.
低功耗振荡器缓慢运行中.
必须降低LOCUSR0.
OSCVAL0LOCMAX)){}//Waitforthecorrectbaudratetemp_trim=LOCVAL0;//StorethetrimvaluegivenLOCKEY=0x1324;//UnlockkeyprotectionLOCUSR0=temp_trim;//WritethetrimvalueintotheuserMMRLOCKEY=0x1324;//UnlockkeyprotectionLOCCON=0;//TurnofftheLINcalibrationblock序列示例利用LIN通信校准低功耗振荡器的示例如下:ADuC7039Rev.
D|Page59of92图22.
中断结构表44.
IRQ/FIQMMR位分配位描述注释0所有中断的逻辑或仅限FIQMMR1SWI不用于IRQEN/CLR和FIQEN/CLR.
2定时器03定时器1或唤醒定时器4定时器2或看门狗定时器5LIN6Flash/EE中断7PLL锁定8ADC9SPI10高压11低功耗振荡器校准完成12保留13IRQ1(GPIOIRQ1)GPIO4处的外部中断14至31保留08463-021TIMER0TIMER1TIMER2LINH/WFLASH/EEPLLLOCKADCSPIHVTIMER0TIMER1TIMER2LINH/WFLASH/EEPLLLOCKADCSPIHVIRQ1IRQ1IRQFIQIRQSTAFIQSTAIRQSIGFIQSIGIRQSIGFIQEN中断系统ADuC7039拥有由中断控制器控制的10个中断源.
大多数中断都是由片内外设产生的,例如ADC和定时器.
ARM7TDMI-SCPU内核只能识别以下两类中断:正常中断请求(IRQ)和快速中断请求(FIQ).
所有中断都可以被单独屏蔽.
中断系统的控制和配置由9个中断相关的寄存器管理:4个专用于IRQ,4个专用于FIQ,还有一个MMR用于选择编程中断源.
每一个IRQ和FIQ寄存器中的控制位都代表相同的中断源,如表44所示.
内核开始执行中断服务程序(ISR)后,应立即保存IRQSTA/FIQSTA,以确保能够响应所有有效中断源.
ARM7TDMI-S内核中断产生程序如图22所示.
例如,设置定时器0每隔5ms产生一次超时.
第一次5ms超时后,FIQSIG[2]或IRQSIG[2]置1,只能通过写入T0CLRI清0.
如果在IRQEN或FIQEN内没有使能定时器0,则FIQSTA/IRQSTA[2]不会置1,也不会产生中断.
如果在IRQEN或FIQEN内使能定时器0,则FIQSTA[2]或IRQSTA[2]置1或产生中断(FIQ或IRQ).
注意,CPSR的IRQ和FIQ中断位定义仅通过ARM内核来控制中断识别,而非外设.
例如,如果配置定时器2通过IRQEN产生一个IRQ,则CPSR内的IRQ中断位置1(禁用)并关断ADuC7039.
中断发生后,外设唤醒,但ARM内核仍处于关断状态.
这相当于POWCON=0x71.
发生这种情况时,ARM内核只能通过复位事件来上电.
ADuC7039Rev.
D|Page60of92表45.
SWICFGMMR位分配位描述31至3保留.
2可编程中断FIQ.
通过将该位置1或清0,可将FIQSTA和FIQSIG寄存器的位1置1或清0.
1可编程中断IRQ.
通过将该位置1或清0,可将IRQSTA和IRQSIG寄存器的位1置1或清0.
0保留.
IRQIRQ是进入处理器IRQ模式的一个异常信号.
它用于内、外部事件的通用中断处理.
所有32位经逻辑"或"运算后,形成要发送给ARM7TDMI-S内核的IRQ信号.
器件有如下4个32位寄存器专门用于IRQ.
IRQSIGIRQSIG是一个只读寄存器,反映不同IRQ源的状态.
如果一个外设产生了一个IRQ信号,IRQSIG中相应的位就会被置1;否则就清0.
当特定外设的中断被清除时,IRQSIG位就会被清0.
通过设置IRQENMMR,可屏蔽所有IRQ中断源.
IRQENIRQEN提供当前使能屏蔽的值.
将该寄存器的某一位置1时,可使能相应的中断请求,此时将产生IRQ异常.
将某一位清0时,可禁用或屏蔽相应的中断请求,此时将无法产生IRQ异常.
IRQEN寄存器无法用来禁用中断.
IRQCLRIRQCLR是一个只写寄存器,可清除IRQEN寄存器的相应位,从而屏蔽相应的中断源.
将该寄存器的某一位置1时,会清除IRQEN寄存器的相应位,但不影响其他位.
寄存器IRQEN和IRQCLR配对使用,可以实现独立的使能屏蔽功能,而无需执行原子性读-改-写操作.
IRQSTAIRQSTA是一个只读寄存器,提供当前使能的IRQ源的状态(IRQSIG和IRQEN对应位进行逻辑"与"操作).
置1时,这个源将向ARM7TDMI-S内核发出一个有效的IRQ中断请求.
没有优先级编码器和中断矢量产生.
该功能可以在软件中通过一个普通的中断处理程序实现.
注意,任何中断信号的有效时间不得少于中断延迟时间,这样才能保证中断信号能够被中断控制器检测到,或者被用户在IRQSTA或FIQSTA寄存器中检测到.
快速中断请求(FIQ)快速中断请求(FIQ)是进入处理器FIQ模式的一个异常信号.
它用于数据传输或低延迟通信通道任务处理.
FIQ接口与IRQ接口相同;此外,它还会提供二级中断(拥有最高优先级).
器件内有4个32位寄存器专门用于FIQ,包括:FIQSIG、FIQEN、FIQCLR和FIQSTA.
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.
该寄存器允许控制可编程源中断.
ADuC7039Rev.
D|Page61of92图23.
定时器功能框图08463-033USEERMMRINERFACET0REGT1REGT2REGARM7TDMIAMBACORECLOCKLOWPOWEROSCILLATORT0SYNCT1SYNCT2SYNCT0T1T2012T2IRQT1IRQT0IRQWDRSTAMBAADuC7039定时器ADuC7039具有3个通用定时器/计数器:定时器0或通用定时器定时器1或唤醒定时器定时器2或看门狗定时器通过写入数据到某一定时器的控制寄存器(TxCON),可以启动相应的定时器.
计数模式和速度取决于TxCON中选择的配置.
在正常模式下,每当计数器的值达到0(递减计数)或满量程(递增计数)时,都会产生一个IRQ中断.
向某一定时器(TxCLRI)的清除寄存器内写入任一数据,可以清除IRQ中断.
这3个定时器可以在自由模式或周期模式下工作.
在自由模式下,利用TxLD寄存器中的值,计数器从最大值/最小值开始递减/递增至0/满量程,然后再次从最大值/最小值开始.
这意味着,在自由模式下,当相关中断位置1时,TxVAL不会重新加载;当计数器下溢或上溢时,计数值翻转.
在周期模式下,计数器以加载寄存器(TxLD寄存器)中的值为起始值,递减/递增计数至0或满量程,然后再以该值为起始值,重新开始计数.
这意味着,当相关中断位置1时,TxVAL会重新加载TxLD,计数再次从该值开始.
建议不要将0加载到TxLD寄存器中.
通过访问计数器的值寄存器(TxVAL),可以随时读出计数器的值.
异步时钟域的定时器同步图23显示了用户定时器MMR与内核定时器模块之间的接口.
用户代码可以直接访问所有定时器MMR,包括TxLD、TxVAL、TxCON和TxCLRI.
数据必须从这些MMR传输到定时器子系统内的内核定时器(T0、T1和T2).
这些内核定时器由同步(SYNC)模块通过用户的MMR接口缓冲.
SYNC模块的主要作用是提供一种方法来确保数据和所需的其它控制信号能够正确穿过异步时钟域.
异步时钟域的一个例子是:MCU以10MHz内核时钟运行,定时器1以32KHz的低功耗振荡器频率运行.
Rev.
D|Page62of92图24.
跨时钟域信号的同步器IRQCLR=WAKEUP_TIMER_BIT;//MaskinginterruptsT1CON=0x00;//haltingthetimer,序列示例假设定时器1按照上文所述中止.
T1LD=0x1;//ReloadtimerT1CON=0x001F;//Enabletimer,Lowpoweroscillator,32768prescaler,periodicDelay(100us);//IncludedelaytoensureT1CONbitstakeeffectT1CLRI=0;//*ClearTimerIRQIRQEN=WAKEUP_TIMER_BIT;//UnmaskTimer1ADuC7039TIMER2LOWPOWERCLOCKDOMAINSYNCHRONIZEDSIGNALUNSYNCHRONIZEDSIGNALCORECLOCK(FCORE)DOMAINSYNCHRONIZERFLIP-FLOPSTARGETCLOCK08463-034从图23可以看出,MMR逻辑和内核定时器逻辑位于不同且异步的时钟域内.
来自MMR内核时钟域并且传送到内部定时器域的任何数据必须与内部定时器时钟域同步,确保正确锁存到内核定时器时钟域.
这是通过两个正反器实现的,如图24所示,数据不仅同步,而且经过双缓冲,从而确保数据在定时器时钟域中的完整性.
由于同步模块的存在,虽然MMR时钟域几乎是立即锁存(利用快速内核时钟)定时器控制数据,但此数据不会立即到达内核定时器逻辑,而是在所选内部定时器域时钟的至少2个周期之后.
定时器编程不同定时器域的同步还要求用户代码对定时器进行仔细编程,决定何时停止或启动定时器.
建议使用的代码控制定时器模块何时停止和启动定时器,以及何时使用不同的时钟域.
如果使能定时器产生IRQ或FIQ异常,这种控制特别重要.
下面以定时器1为例进行说明.
启动定时器1启动定时器1时,建议首先将所需的TxLD值加载到定时器1.
然后,根据需要设置T1CON位以启动定时器.
这将使能定时器,但前提是定时器1时钟域已内部锁存T1CON位.
因此,建议插入3个时钟周期(对于32kHz定时器时钟源,则为100μs)以上的延迟,使得T1LD值和T1CON值均可通过同步逻辑锁存并到达定时器1域.
延迟之后,建议使用T1CLRI=0x00清除所有(意外的)定时器1中断.
最后,将IRQENMMR中的相应位置1可以解除屏蔽定时器1系统中断.
示例代码如下.
暂停定时器1暂停定时器1时,建议屏蔽定时器1的IRQEN位(使用IRQCLR),这可以防止不需要的IRQ在定时器1内部逻辑锁存T1CON控制位之前产生MCU中断.
Rev.
D|Page63of92定时器0载入寄存器名称:T0LD地址:0xFFFF0300默认值:0x0000访问类型:读/写功能:定时器0值寄存器ADuC7039名称:T0VAL地址:0xFFFF0304默认值:0x0000访问类型:只读功能:定时器0控制寄存器名称:T0CON地址:0xFFFF0308默认值:0x0000访问类型:读/写功能:定时器0清除寄存器名称:T0CLRI地址:0xFFFF030C访问类型:只写功能:通过用户代码向该8位只写寄存器写入任意值,可以清除中断.
该16位寄存器用于设置定时器0的工作模式.
T0VAL为16位寄存器,用于保存定时器0的当前值.
T0LD为16位寄存器,用于保存载入计数器的16位值.
定时器0—通用定时器定时器0是一个16位通用定时器,可递增计数或递减计数.
定时器0采用内核时钟工作,预分频器为1或16,384.
当预分频器为16,384时,产生1.
6ms的最低分辨率,定时器可以计数1分钟以上.
定时器0可以递增计数,也可以递减计数.
16位值可通过写入T0LD以载入到计数器内.
当前计数器值可从T0VAL读取.
当定时器0上溢时,定时器0从T0LD寄存器中重新载入数值.
定时器0接口包括4个寄存器:T0LD是一个16位寄存器,用于保存载入计数器的16位值.
T0VAL是一个16位寄存器,用于保存定时器0的当前16位值.
T0CLRI是一个8位寄存器.
向其中写入任意值,可以清除定时器0中断.
T0CON是一个16位配置寄存器,如表46所示.
Rev.
D|Page64of92图25.
定时器0框图ADuC7039表46.
T0CONMMR位分配位描述15至6保留.
5定时器0模式.
该位由用户代码置1时,选择周期模式.
该位由用户代码清0时,选择自由模式(默认).
4递增计数.
该位由用户代码置1时,定时器0递增计数.
该位由用户代码清0时,定时器0递减计数(默认).
3定时器0使能位.
该位由用户代码置1时,使能定时器0.
该位由用户代码清0时,禁用定时器0(默认).
2保留.
1至0预分频器.
00=时钟源/1(默认).
01=时钟源/1.
10=时钟源/16,384.
11=时钟源/16,384.
TIMER0VALUECORECLOCKFREQUENCYPRESCALER1OR16,384TIMER0IRQ16-BITUP/DOWNCOUNTER16-BITLOAD08463-022Rev.
D|Page65of92定时器1载入寄存器名称:T1LD地址:0xFFFF0320默认值:0x00000000访问类型:读/写功能:定时器1值寄存器ADuC7039名称:T1VAL地址:0xFFFF0324默认值:0xFFFFFFFF访问类型:只读功能:定时器1清除寄存器名称:T1CLRI地址:0xFFFF032C默认值:只写功能:定时器1控制寄存器名称:T1CON地址:0xFFFF0328默认值:0x0000访问类型:读/写功能:T1CON是一个16位寄存器,用于设置定时器1的工作模式.
通过用户代码向该8位只写寄存器写入任意值,可以清除中断.
T1VAL是一个32位寄存器,用于保存定时器1的当前值.
T1LD是一个32位寄存器,用于保存载入计数器的32位值.
定时器1—唤醒定时器定时器1是一个带有可编程预分频器的32位唤醒定时器,可递增计数或递减计数.
所选时钟源(内核时钟或低功耗振荡器)的分频系数共有1、16、256或32,768四种.
如果从低功耗振荡器获得时钟,当内核时钟被禁用时,唤醒定时器仍继续运行.
定时器1在溢出时从T1LD重新载入值.
定时器1接口有4个寄存器:T1LD和T1VAL均为32位寄存器,用于保存32位无符号整数.
T1VAL为只读寄存器.
T1CLRI是一个8位寄存器.
向其中写入任意值,可以清除定时器1中断.
T1CON是一个16位配置寄存器,如表47所示.
Rev.
D|Page66of92图26.
定时器1框图表47.
T1CONMMR位分配位描述15至6保留.
这些位应该写入0.
5定时器1模式.
该位由用户代码置1时,选择周期模式.
该位由用户代码清0时,选择自由模式(默认).
4递增计数.
该位由用户代码置1时,定时器1递增计数.
该位由用户代码清0时,定时器1递减计数(默认).
3定时器1使能位.
该位由用户代码置1时,使能定时器1.
该位由用户代码清0时,禁用定时器1(默认).
2时钟选择.
0=内核时钟(默认).
1=低功耗(32.
768kHz)振荡器.
1至0预分频器.
00=时钟源/1(默认).
01=时钟源/16.
10=时钟源/256.
11=时钟源/32,768.
TIMER1VALUELOWPOWEROSCILLATORCORECLOCKFREQUENCYPRESCALER1,16,256,OR32,768TIMER1IRQ32-BITUP/DOWNCOUNTER32-BITLOAD08463-100ADuC7039Rev.
D|Page67of92定时器2载入寄存器名称:T2LD地址:0xFFFF0340默认值:0x0050访问类型:读/写功能:定时器2清除寄存器名称:T2CLRI地址:0xFFFF034C访问类型:Writeonly功能:定时器2值寄存器名称:T2VAL地址:0xFFFF0344默认值:0x0050访问类型:只写功能:定时器2控制寄存器名称:T2CON地址:0xFFFF0348默认值:0x0000访问类型:读/写功能:该16位寄存器用于设置定时器2的工作模式.
T2VAL为16位寄存器,用于保存定时器2的当前值.
在正常模式下,通过用户代码向该8位只写寄存器写入任意值,可清除中断;在看门狗模式下则可复位超时.
T2LD是一个16位寄存器,用于保存载入计数器的16位值.
定时器2—看门狗定时器定时器2共有两种工作模式:正常模式和看门狗模式.
看门狗定时器用于强制处理器从非法软件状态恢复到正常工作状态.
一旦看门狗定时器被使能,它需要周期性服务来阻止自身强制处理器执行复位操作.
当定时器2在正常模式下溢出时,或者在看门狗模式下写入T2CLRI时,定时器2将重新载入T2LD中的值.
正常模式正常模式下的定时器2与16位工作模式下的定时器0相同(时钟源和预分频器除外).
时钟源采用低功耗振荡器,分频系数共有1、16和256三种.
看门狗模式将T2CON[5]置1可进入看门狗模式.
定时器2从T2LD寄存器中的超时值开始递减计数,直至计数值为0.
当使用1/256的最大预分频和T2LD的满量程值时,最长超时时间为524秒.
Flash/EE存储器完成一次页擦除操作需要20ms,为避免与此发生任何冲突,用户软件不得将超时周期设为小于30ms.
当T2VAL到达0时,系统产生复位或中断,具体取决于T2CON[1]的值.
要避免出现复位或中断事件,必须在T2VAL达到0之前将任意值写入T2CLRI.
此操作可将T2LD的值重新载入计数器内,且重新开始一个新的超时周期.
一旦进入看门狗模式,T2LD和T2CON就会被写保护.
除非通过上电复位将看门狗定时器复位,否则,无法修改这两个寄存器内的数据.
其它任何复位事件产生后,看门狗定时器仍会继续计数.
看门狗定时器应在用户代码的最初行内配置以免陷入看门狗复位的无限循环内.
定时器2在JTAG调试访问期间自动暂停,并且只在JTAG放弃ARM7内核控制权后才会重新开始计数.
默认情况下,定时器2可在关断期间继续计数.
这可通过将T2CON[0]置1来禁用.
建议采用默认值,即在关断期间仍允许看门狗定时器继续计数.
定时器2接口有4个寄存器:T2LD是一个16位寄存器,用于保存载入计数器的16位值.
T2VAL是一个16位寄存器,用于保存定时器2的当前16位值.
T2CLRI是一个8位寄存器.
在正常模式下向这个寄存器写入任意值,将清除定时器2中断;在看门狗模式下向这个寄存器写入任意值,则重新开始一个超时周期.
T2CON是一个16位配置寄存器,如表48所示.
ADuC7039Rev.
D|Page68of92图27.
定时器2框图表48.
T2CONMMR位分配位描述15至9保留.
这些位保留,应由用户代码写入0.
8递增/递减计数使能.
该位由用户代码置1时,定时器2递增计数.
该位由用户代码清0时,定时器2递减计数.
7定时器2使能.
该位由用户代码置1时,使能定时器2.
该位由用户代码清0时,禁用定时器2.
6定时器2工作模式.
该位由用户代码置1时,选择周期模式.
该位由用户代码清0时,选择自由模式.
5看门狗定时器模式使能.
该位由用户代码置1时,使能看门狗模式.
该位由用户代码清0时,禁用看门狗模式.
4保留.
这些位保留,应由用户代码写入0.
3至2定时器2时钟预分频器.
00=时钟源/1(默认).
01=时钟源/16.
10=时钟源/256.
11=保留.
1看门狗定时器IRQ使能.
该位由用户代码置1时,可在看门狗计数值为0时产生IRQ中断而非复位.
该位由用户代码清0时,禁用IRQ选项.
0PD_OFF.
该位由用户代码置1时,则利用POWCONMMR位4关断外设时停止定时器2.
该位由用户代码清0时,则利用POWCONMMR位4关断外设时使能定时器2.
PRESCALER1,16,256TIMER2IRQWATCHDOGRESET16-BITUP/DOWNCOUNTERLOWPOWEROSCILLATOR16-BITLOADTIMER2VALUE08463-024ADuC7039Rev.
D|Page69of92图28.
ADuC7039GPIO表49.
外部GPIO引脚到内部端口信号分配GPIO引脚端口信号功能(由GPCON定义)GPIO_0P0.
0通用I/O.
SSSPI从机选择I/O.
GPIO_1P0.
1通用I/O.
SCLKSPI串行时钟I/O.
GPIO_2P0.
2通用I/O.
MISOSPI主机输入、从机输出.
GPIO_3P0.
3通用I/O.
MOSISPI主机输出、从机输入.
GPIO_4P0.
4通用I/O.
LINRxLIN一致性测试的LIN输入.
IRQ1外部中断请求1.
GPIO_5P0.
5通用I/O.
LINTxLIN一致性测试的LIN输出.
GPIOREG_DVDDOUTPUTDRIVEENABLEGPDAT[31:24]OUTPUTDATAGPDAT[23:16]INPUTDATAGPDAT[7:0]08463-025通用输入/输出ADuC7039共有6个通用双向输入/输出(GPIO)引脚.
一般情况下,通过用户代码设置,GPIO引脚可以实现多种功能.
默认情况下,GPIO引脚在GPIO模式下工作.
所有GPIO引脚都具有一个内部上拉电阻,吸电流能力为0.
8mA,源电流能力为0.
1mA.
典型GPIO结构如图28所示.
这6个GPIO归属于一个6位宽端口.
该端口的GPIO分配详见表49.
在正常操作期间,用户代码可利用这些通用寄存器来控制外部GPIO引脚的功能和状态.
所有GPIO引脚在关断(POWCON)模式期间保持其外部电平(高或低).
端口引脚由以下4个MMR配置和控制:GPCON:控制寄存器GPDAT:配置和数据寄存器GPSET:数据设置GPCLR:数据清零ADuC7039Rev.
D|Page70of92GPIO端口控制寄存器名称:GPCON地址:0xFFFF0D00默认值:0x00000000访问类型:读/写功能:该32位MMR选择每个端口引脚的功能.
表50.
GPCONMMR位分配位描述31至21保留.
这些位保留,应由用户代码写入0.
20GPIO_5功能选择位.
该位由用户代码清0时,GPIO_5引脚配置为通用I/O(GPIO)引脚.
该位由用户代码置1时,GPIO_5引脚配置为LIN一致性测试的LIN输出.
19至17保留.
这些位保留,应由用户代码写入0.
16GPIO_4功能选择位.
该位由用户代码清0时,GPIO_4引脚配置为通用I/O(GPIO)引脚.
该位由用户代码置1时,GPIO_4引脚配置为LIN一致性测试的LIN输入.
15至13保留.
这些位保留,应由用户代码写入0.
12GPIO_3功能选择位.
该位由用户代码清0时,GPIO_3引脚配置为通用I/O(GPIO)引脚.
该位由用户代码置1时,GPIO_3引脚配置为SPI端口的MOSI(主机输出从机输入).
11至9保留.
这些位保留,应由用户代码写入0.
8GPIO_2功能选择位.
该位由用户代码清0时,GPIO_2引脚配置为通用I/O(GPIO)引脚.
该位由用户代码置1时,GPIO_2引脚配置为SPI端口的MISO(主机输入从机输出).
7至5保留.
这些位保留,应由用户代码写入0.
4GPIO_1功能选择位.
该位由用户代码清0时,GPIO_1引脚配置为通用I/O(GPIO)引脚.
该位由用户代码置1时,GPIO_1引脚配置为SPI端口的SCLK(串行时钟I/O).
3至1保留.
这些位保留,应由用户代码写入0.
0GPIO_0功能选择位.
该位由用户代码清0时,GPIO_0引脚配置为通用I/O(GPIO)引脚.
该位由用户代码置1时,GPIO_0引脚配置为SPI端口的SS(从机选择输入).
ADuC7039Rev.
D|Page71of92GPIO端口数据寄存器名称:GPDAT地址:0xFFFF0D10默认值:0x000000FF访问类型:读/写功能:表51.
GPDATMMR位分配位描述31至30保留.
这些位保留,应由用户代码写入0.
29端口0.
5方向选择位.
该位由用户代码清0时,将分配给端口0.
5的GPIO引脚配置为输入端.
该位由用户代码置1时,将分配给端口0.
5的GPIO引脚配置为输出端.
28端口0.
4方向选择位.
该位由用户代码清0时,将分配给端口0.
4的GPIO引脚配置为输入端.
该位由用户代码置1时,将分配给端口0.
4的GPIO引脚配置为输出端.
27端口0.
3方向选择位.
该位由用户代码清0时,将分配给端口0.
3的GPIO引脚配置为输入端.
该位由用户代码置1时,将分配给端口0.
3的GPIO引脚配置为输出端.
26端口0.
2方向选择位.
该位由用户代码清0时,将分配给端口0.
2的GPIO引脚配置为输入端.
该位由用户代码置1时,将分配给端口0.
2的GPIO引脚配置为输出端.
25端口0.
1方向选择位.
该位由用户代码清0时,将分配给端口0.
1的GPIO引脚配置为输入端.
该位由用户代码置1时,将分配给端口0.
1的GPIO引脚配置为输出端.
24端口0.
0方向选择位.
该位由用户代码清0时,将分配给端口0.
0的GPIO引脚配置为输入端.
该位由用户代码置1时,将分配给端口0.
0的GPIO引脚配置为输出端.
23至22保留.
这些位保留,应由用户代码写入0.
21端口0.
5数据输出.
写入到该位的值直接出现在分配给端口0.
5的GPIO引脚上.
20端口0.
4数据输出.
写入到该位的值直接出现在分配给端口0.
4的GPIO引脚上.
19端口0.
3数据输出.
写入到该位的值直接出现在分配给端口0.
3的GPIO引脚上.
18端口0.
2数据输出.
写入到该位的值直接出现在分配给端口0.
2的GPIO引脚上.
17端口0.
1数据输出.
写入到该位的值直接出现在分配给端口0.
1的GPIO引脚上.
16端口0.
0数据输出.
写入到该位的值直接出现在分配给端口0.
0的GPIO引脚上.
15至6保留.
这些位保留,应由用户代码写入0.
5端口0.
5数据输入.
只读,反映分配给端口0.
5的GPIO引脚的当前状态.
应由用户代码写入0.
4端口0.
4数据输入.
只读,反映分配给端口0.
4的GPIO引脚的当前状态.
应由用户代码写入0.
3端口0.
3数据输入.
只读,反映分配给端口0.
3的GPIO引脚的当前状态.
应由用户代码写入0.
2端口0.
2数据输入.
只读,反映分配给端口0.
2的GPIO引脚的当前状态.
应由用户代码写入0.
1端口0.
1数据输入.
只读,反映分配给端口0.
1的GPIO引脚的当前状态.
应由用户代码写入0.
0端口0.
0数据输入.
只读,反映分配给端口0.
0的GPIO引脚的当前状态.
应由用户代码写入0.
该32位寄存器用于配置GPIO引脚的方向,还设置用作输出端的GPIO引脚的输出值并读取用作输入端的GPIO引脚的状态.
ADuC7039Rev.
D|Page72of92GPIO端口设置寄存器ADuC7039名称:GPSET地址:0xFFFF0D14默认值:N/A访问类型:只写功能:表52.
GPSETMMR位分配位描述31至22保留.
这些位保留,应由用户代码写入0.
21端口0.
5设置位.
该位由用户代码置1时,将外部GPIO_5引脚拉高.
该位由用户软件清0时,不影响外部GPIO_5引脚.
20端口0.
4设置位.
该位由用户代码置1时,将外部GPIO_4引脚拉高.
该位由用户软件清0时,不影响外部GPIO_4引脚.
19端口0.
3设置位.
该位由用户代码置1时,将外部GPIO_3引脚拉高.
该位由用户软件清0时,不影响外部GPIO_3引脚.
18端口0.
2设置位.
该位由用户代码置1时,将外部GPIO_2引脚拉高.
该位由用户软件清0时,不影响外部GPIO_2引脚.
17端口0.
1设置位.
该位由用户代码置1时,将外部GPIO_1引脚拉高.
该位由用户软件清0时,不影响外部GPIO_1引脚.
16端口0.
0设置位.
该位由用户代码置1时,将外部GPIO_0引脚拉高.
该位由用户软件清0时,不影响外部GPIO_0引脚.
15至0保留.
这些位保留,应由用户代码写入0.
该32位MMR允许用户代码对外部GPIO引脚分别进行位寻址以仅将其单独拉高.
用户代码可利用GPSETMMR来实现此操作,而不必修改或维持任何其它GPIO引脚的状态(使用GPDAT时用户代码要求).
Rev.
D|Page73of92GPIO端口清零寄存器ADuC7039名称:GPCLR地址:0xFFFF0D18默认值:N/A访问类型:只写功能:表53.
GPCLRMMR位分配位描述31至22保留.
这些位保留,应由用户代码写入0.
21端口0.
5清除位.
该位由用户代码置1时,将外部GPIO_5引脚拉低.
该位由用户软件清0时,不影响外部GPIO_5引脚.
20端口0.
4清除位.
该位由用户代码置1时,将外部GPIO_4引脚拉低.
该位由用户软件清0时,不影响外部GPIO_4引脚.
19端口0.
3清除位.
该位由用户代码置1时,将外部GPIO_3引脚拉低.
该位由用户软件清0时,不影响外部GPIO_3引脚.
18端口0.
2清除位.
该位由用户代码置1时,将外部GPIO_2引脚拉低.
该位由用户软件清0时,不影响外部GPIO_2引脚.
17端口0.
1清除位.
该位由用户代码置1时,将外部GPIO_1引脚拉低.
该位由用户软件清0时,不影响外部GPIO_1引脚.
16端口0.
0清除位.
该位由用户代码置1时,将外部GPIO_0引脚拉低.
该位由用户软件清0时,不影响外部GPIO_0引脚.
15至0保留.
这些位保留,应由用户代码写入0.
该32位MMR允许用户代码对外部GPIO引脚分别进行位寻址以仅将其单独拉低.
用户代码可利用GPCLRMMR来实现此操作,而不必修改或维持任何其它GPIO引脚的状态(使用GPDAT时用户代码要求).
Rev.
D|Page74of92)1(2MHz48.
20SPIDIVfKSERIALCLOC+*=SPIRX寄存器名称:SPIRX地址:0xFFFF0A04默认值:0x00访问类型:只读功能:该8位寄存器是SPI接收寄存器.
SPITX寄存器名称:SPITX地址:0xFFFF0A08默认值:N/A访问类型:只写功能:该8位寄存器是SPI发送寄存器.
SPIDIV寄存器名称:SPIDIV地址:0xFFFF0A0C默认值:0x00访问类型:读/写功能:该6位寄存器是SPI波特率选择寄存器.
串行外设接口(SPI)ADuC7039片内集成一个完整的硬件串行外设接口(SPI).
SPI是一种工业标准同步串行接口,允许同时双向传输8位数据(即全双工),最大比特率可达5.
12Mb.
该SPI端口可配置为主机或从机操作,一般由4个引脚组成:MISO、MOSI、SCLK和SS.
主机输入、从机输出(MISO)引脚在主机模式下,MISO引脚被配置为输入线路;在从机模式下,配置为输出线路.
主机上的MISO线路(数据输入)应与从机内的MISO线路(数据输出)相连.
传送的数据是以字节(8位)为单位的串行数据,MSB优先.
主机输出、从机输入(MOSI)引脚在主机模式下,MOSI引脚被配置为输出线路;在从机模式下,配置为输入线路.
主机上的MOSI线路(数据输出)应与从机内的MOSI线路(数据输入)相连.
传送的数据是以字节(8位)为单位的串行数据,MSB优先.
串行时钟I/O(SCLK)引脚主机串行时钟(SCLK)用于同步MOSISCLK周期中发送和接收的数据.
所以,发送/接收一个字节需要8个SCLK周期.
在主机模式下,SCLK引脚配置成输出端,而在从机模式下,配置成输入端.
在主机模式下,时钟的极性和相位由SPICON寄存器控制,SPIDIV寄存器的值决定了比特率.
比特率的计算公式如下:主机模式支持的最大比特率为10.
24Mb.
在从机模式下,可对SPICON寄存器进行设置,以配置预期输入时钟的相位和极性.
从机可以从外部主机接收数据(速率可达5.
12Mb).
在主机模式和从机模式下,数据都在SCLK信号的一个沿发送,并在另一个沿采样.
所以,从机时钟的极性和相位必须与主机配置一致.
从机选择(SS)引脚在SPI从机模式时,置位SS引脚将启动数据传输,该引脚为一个低电平有效输入信号.
然后,SPI端口开始发送和接收8位数据,直到SS解除置位,传输结束.
在从机模式下,SS总是为输入.
在SPI主机模式下,SS是低电平有效输出信号.
传输开始后,它自动置位;传输完成后,它自动解除置位.
SPIMMR接口下列MMR寄存器用来控制SPI接口:SPISTA、SPIRX、SPITX、SPIDIV和SPICON.
ADuC7039Rev.
D|Page75of92SPI状态寄存器ADuC7039名称:SPISTA地址:0xFFFF0A00默认值:0x0000访问类型:只读功能:该16位寄存器用于存储主机、从机模式下SPI接口的状态.
表54.
SPISTAMMR位分配位描述15至12保留位.
11SPI接收FIFO存在过剩字节.
接收FIFO的字节数超过由SPICON寄存器中SPIRXMDE位规定的字节数后,该位置1.
FIFO中的字节数不超过由SPIRXMDE位规定的字节数时,该位清0.
10至8SPI接收FIFO状态位.
[000]=接收FIFO为空.
[001]=该FIFO内有1个有效字节.
[010]=该FIFO内有2个有效字节.
[011]=该FIFO内有3个有效字节.
[100]=该FIFO内有4个有效字节.
7SPI接收FIFO溢出状态位.
当接收FIFO已满时,如果向该FIFO内加载新数据,该位置1.
除非SPICON[12]置1,否则该位置1将产生一个中断.
读取SPISTA寄存器的内容后,该位清0.
6SPI接收IRQ状态位.
产生接收中断时,该位置1.
当SPICON[6]清0,并且接收到所需字节数后,该位置1.
读取SPISTA寄存器的内容后,该位清0.
5SPI发送IRQ状态位.
产生发送中断时,该位置1.
当SPICON[6]置1,并且已发送所需字节数后,该位置1.
读取SPISTA寄存器的内容后,该位清0.
4SPI发送FIFO下溢.
当启动一次发送操作且发送FIFO内没有有效数据时,该位置1.
除非SPICON[13]置1,否则该位置1将产生一个中断.
读取SPISTA寄存器的内容后,该位清0.
3至1SPI发送FIFO状态位.
000=发送FIFO为空.
001=该FIFO内有1个有效字节.
010=该FIFO内有2个有效字节.
011=该FIFO内有3个有效字节.
100=该FIFO内有4个有效字节.
0SPI中断状态位.
SPI中断发生时,该位置1.
读取SPISTA寄存器的内容后,该位清0.
Rev.
D|Page76of92SPI控制寄存器ADuC7039名称:SPICON地址:0xFFFF0A10默认值:0x0000访问类型:读/写功能:该16位寄存器用于在主机和从机模式下配置SPI外设.
表55.
SPICONMMR位分配位描述15至14SPIIRQ模式位.
这些位用于配置在传输过程中何时发生发送/接收中断.
00=传输完1个字节后,产生发送中断.
FIFO接收到1个或以上字节时,产生接收中断.
01=传输完2个字节后,产生发送中断.
FIFO接收到1个或以上字节时,产生接收中断.
10=传输完3个字节后,产生发送中断.
FIFO接收到3个或以上字节时,产生接收中断.
11=传输完4个字节后,产生发送中断.
接收FIFO空间已满或有4个字节数据时,产生接收中断.
13SPI发送FIFO清空使能位.
该位置1时,清空发送FIFO.
该位无法自清0;需要一个单次清空操作时,应将该位置1.
如果该位的值总保持为1,那么将发送0x00或上次发送的值,具体取决于SPICON[7]的设置.
该位为1时,无法对发送FIFO进行写操作.
该位清0时,禁用发送FIFO清空.
12SPI接收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,可返回正常模式.
9从机MISO输出使能位.
将该位置1时,可禁用MISO引脚上的输出驱动器.
该位置1后,MISO引脚变为开漏极.
将该位清0时,MISO正常工作.
8SPIRX上溢覆盖使能.
用户将该位置1后,新接收到的串行数据将覆盖SPIRX寄存器中的有效数据.
用户将该位清0后,新接收到的串行数据会被丢弃.
7发送FIFO为空时SPI发送0使能位.
若将该位置1,则在发送FIFO无有效数据时,SPI发送0x00.
若将该位清0,则在发送FIFO无有效数据时,SPI发送上次发送的值.
6SPI传输和中断模式.
通过将该位置1,用户可在向SPITX寄存器写入数据时开始传输.
只有当SPITX为空时产生中断.
通过将该位清0,用户可在从SPITX寄存器读取数据时开始传输.
只有当SPIRX已满时产生中断.
5LSB优先传输使能位.
用户将该位置1后,优先发送LSB.
用户将该位清0后,优先发送MSB.
Rev.
D|Page77of92位描述4SPI线或模式使能位.
通过将该位置1,可使能开漏数据输出.
数据输出引脚需要外部上拉电阻.
将该位清0时,启动正常输出模式.
3串行时钟极性模式位.
用户将该位置1后,串行时钟高电平空闲.
用户将该位清0后,串行时钟低电平空闲.
2串行时钟相位模式位.
用户将该位置1后,串行时钟脉冲出现在每一次串行位传输的起始位置.
用户将该位清0后,串行时钟脉冲出现在每一次串行位传输的末尾.
1主机模式使能位.
通过将该位置1,用户可使能主机模式.
通过将该位清0,用户可使能从机模式.
0SPI使能位.
通过将该位置1,用户可使能SPI.
通过将该位清0,用户可禁用SPI.
ADuC7039Rev.
D|Page78of92图29.
高压接口顶层框图ARM7MCUANDPERIPHERALSHIGHVOLTAGEINTERFACEMMRsHVCONHVDATLINHVCFG[2:0]LVFHVCFG[4]HVCFG(INDIRECT)HIGHVOLTAGEREGISTERSHVSTASERIALINTERFACECONTROLLERSERIALDATASERIALCLOCKHIGHVOLTAGEINTERRUPTCONTROLLERLINS/C—HVSTA[0]IRQ08463-026ADuC7039高压外设控制接口ADuC7039集成了多个高压电路功能,它们通过一个包括两个MMR(HVCON和HVDAT)的寄存器接口来加以监控.
HVCON寄存器充当命令字节解释器,允许微控制器间接地对两个高压状态/配置寄存器中的一个进行8位数据读写操作(值存放在HVDAT内).
这些高压寄存器不是MMR,但通常被称为间接寄存器,即只能通过HVCON和HVDATMMR间接访问.
HVCON寄存器和间接高压寄存器之间的物理接口采用基于2.
56MHz串行时钟的两线(数据和时钟)式串行接口.
因此,从MCU内核将命令写入HVCON到该命令或数据到达间接高压寄存器内需要一定的延时(最长10μs).
从MCU内核将命令写入HVCON到间接寄存器数据被回读到HVDAT寄存器内也需要10μs延时.
MCU可轮询繁忙位(MCU读取时为HVCON位0)以确认读/写命令何时结束.
图29显示高压接口和相关电路的顶层架构.
LIN物理接口通过此接口控制和监控.
高压接口包括两个MMR和两个间接寄存器:HVCON是一个8位寄存器,用作高压控制接口的命令字节解释器.
写入此寄存器的字节被解释为对高压电路相关的两个间接寄存器的读或写命令.
命令代码如表56所示.
回读HVCONMMR可知操作是否成功.
HVDAT是一个12位寄存器,用于保存高压接口寄存器的间接读写数据.
HVCFG是一个8位寄存器,用于控制高压电路的功能,利用HVCON和HVDAT访问.
HVSTA是一个8位只读寄存器,反映高压电路的状态.
此寄存器不是MMR,因而不会出现在MMR存储器映射内.
它通过HVCON寄存器接口访问,其数据通过HVDAT回读.
高压中断控制器响应高压中断事件,将高压状态寄存器(HVSTA)的当前值同时自动载入HVDAT寄存器内.
Rev.
D|Page79of92高压接口控制接口ADuC7039名称:HVCON地址:0xFFFF0804默认值:由内核更新访问类型:读/写读/写表56.
HVCONMMR写入位分配位描述7至0命令字节.
含义为0x00=将高压寄存器HVCFG回读到HVDAT.
0x02=将高压状态寄存器HVSTA回读到HVDAT.
0x08=将HVDAT内的值写入高压寄存器HVCFG.
其它=保留.
表57.
HVCONMMR读取位分配位描述7至3保留.
2发送到高压芯片命令状态.
1=命令成功.
0=命令失败.
1高压芯片读取命令状态.
1=命令成功.
0=命令失败.
0繁忙(只读)位.
当用户代码读取此寄存器时,位0应视为高压接口的繁忙位.
可用来决定读取请求是否已完成.
除非繁忙=0,否则此表中所述高压(读/写)命令不能写入HVCON.
繁忙=1,高压接口繁忙且未完成前一个HVCON写入命令.
位1、2无效.
繁忙=0,高压接口空闲且已完成HVCON写入命令.
位1、2有效.
高压数据寄存器名称:HVDAT地址:0xFFFF080C默认值:由内核更新访问类型:读/写读/写表58.
HVDATMMR位分配位描述11至8高压数据HVDAT[7:0]相关的命令.
这些位为只读且应写入00x00=将高压寄存器HVCFG回读到HVDAT.
0x02=将高压状态寄存器HVSTA回读到HVDAT.
0x08=将HVDAT内的值写入高压寄存器HVCFG.
7至0欲读/写的高压数据HVDAT是一个12位寄存器,用于保存高压接口寄存器HVDAT、HVSTA、HVCFG的间接读写数据.
该8位寄存器用作高压控制接口的命令字节解释器.
写入此寄存器的字节被解释为对高压电路相关的两个间接寄存器的读或写命令.
HVDAT寄存器用来存放间接寄存器的写入或回读数据.
Rev.
D|Page80of92高压配置寄存器ADuC7039名称:HVCFG地址:通过HVCON高压接口间接寻址默认值:0x00访问类型:读/写功能:表59.
HVCFG位分配位描述7至5保留.
4低压标志(LVF)使能位.
该位清0时,禁用LVF功能.
该位置1时,使能LVF功能.
上电后可通过HVSTA[2]查询低压标志,以决定REG_DVDD电压先前是否下降到2.
1V以下.
3电压衰减器诊断使能位.
该位置1时,接通电流源,将一个差分电压加到电压通道测量上.
该位清0时,禁用电压衰减器诊断功能.
2LIN驱动器重新使能位.
该位置1时,重新使能因为短路电流事件而禁用的LIN驱动器.
该位自动清0.
1使能/禁用LIN短路保护.
该位置1时,使能LIN引脚被动短路保护.
此时LIN引脚上的短路事件会产生高压中断(前提是IRQEN[10]使能),并置位HVSTA内的相应状态位,但不会禁用短路引脚.
该位清0时,使能LIN引脚主动短路保护.
此时在短路事件期间,LIN引脚产生高压中断(IRQSTA[10]),置位HVSTA[0],并自动禁用短路引脚.
禁用后,I/O引脚只能通过写入HVCFG[2]来重新使能.
只有持续时间长于20μs的LIN短路事件才能被检测到.
0LIN工作模式.
0=LIN禁用.
1=LIN使能.
该8位寄存器控制ADuC7039上的高压电路功能.
此寄存器不是MMR,因而不会出现在MMR存储器映射内.
通过HVCON寄存器接口访问.
欲写入该寄存器的数据通过HVDATMMR加载,从该寄存器回读数据也是通过HVDATMMR.
Rev.
D|Page81of92高压状态寄存器名称:HVSTA地址:通过HVCON高压接口间接寻址默认值:0x00访问类型:只读,只应在高压中断时读取.
功能:表60.
HVSTA位分配位描述7至3保留.
这些位不能使用,保留供未来使用.
21保留.
该位不能使用,保留供未来使用.
0此8位只读寄存器反映低压标志和LIN短路中断状态.
此寄存器不是MMR,因而不会出现在MMR存储器映射内.
它通过HVCON寄存器接口访问,其数据通过HVDAT回读.
高压中断控制器响应高压中断事件,将高压状态寄存器(HVSTA)的当前值同时自动载入HVDAT寄存器内.
低压标志状态位.
只在通过HVCFG[4]使能时有效.
上电时,如果REG_DVDD已下降至2.
1V以下,则该位为0.
此时,RAM内容视为已被破坏.
上电时,如果REG_DVDD未下降至2.
1V以下,则该位为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.
1V以下,则HVSTA[2]清0且RAM内容已被破坏.
使能低压标志后,只有REG_DVDD降至2.
1V以下或利用HVCFG[4]禁用LVF功能才能使其复位.
处理高压接口中断和高压通信高压中断高压电路还集成了一个中断控制器.
如果通过IRQEN[10]使能,LIN短路事件将能置位高压中断信号并中断MCU内核.
尽管正常情况下MCU通过跳转到IRQ或FIQ矢量地址来响应此中断事件,但高压中断控制器仍同时自动地将高压状态寄存器(HVSTA)的当前值载入HVDAT寄存器内.
此时HVCON[0]内的繁忙位被置1,指示传输正在进行中,并在10μs后清0,指示可从HVDAT获取HVSTA内容.
该接口应由中断驱动.
因此,中断处理程序可一直轮询HVCON内的繁忙位,直到其解除置位.
在繁忙位清0后,必须检查HVCON[1]以确保正确读取数据.
接下来,可读取HVDAT寄存器.
此时,HVDAT保存着HVSTA寄存器的值.
读取HVSTA寄存器将清除中断,因此,不建议随时读取HVSTA.
ADuC7039Rev.
D|Page82of92图30.
高压接口中断流程图charHVstatus;do{//EnableLINHVDAT=0x01;//EnableLINphysicallayermodeHVCON=0x08;//WritetoHVCFGdo{HVstatus=HVCON;}while(HVstatus&0x1);//Waituntilcommandisfinished}while(!
(HVstatus&0x4));//Transmitcommandiscorrect最好使用一个函数实现高压通信例程,然后在代码中调用此函数.
ISRHVDAT[7:0]=HVSTAIRQ/FIQSTA=HVIRQHVCON[0]=0HVCON[1]=1HVDAT[11:8]=0x1NONONONOYESYESYESYESOTHERINTERRUPTHVCON=0x1(MANUALREAD)READHVDAT08463-027高压配置下面是使能LIN的示例代码.
ADuC7039Rev.
D|Page83of92图31.
LIN物理接口图32.
LIN帧ADuC7039BPFINTERNALSHORT-CIRCUITTRIPREFERENCEINTERNALSHORT-CIRCUITSENSERESISTOROUTPUTDISABLEHVIRQIRQEN[10]LINMODEHVCFG[0]LININTERRUPTIRQEN[5]LININTERRUPTLOGICINPUTVOLTAGETHRESHOLDREFERENCEVDDEXTERNALLINPINVDDMASTERECUPROTECTIONDIODEMASTERECUPULL-UPCLOADMASKLINCSLINBKLINBRLOWPOWEROSCILLATORLINDATCORECLOCKRxDTxDSHORT-CIRCUITCONTROLHVCFG[1]SCROVERVOLTAGEPROTECTIONIO_VSS08463-02813TBIT2TBIT2TBIT2TBIT2TBIT>1TBIT>=14TBIT8TBITBREAKSYNCSTAS0S1S2S3S4S5S6S7STOPROTECTEDID08463-029LIN(局域互连网络)接口LIN物理接口ADuC7039在ARM7MCU内核和外部LIN总线之间具有一个高压物理接口.
该LIN接口只能用作从机接口,支持1kB至20kB的工作速率并兼容LIN2.
1标准.
低于1kB的频率视为1kB.
片内集成从节点所需的上拉电阻,从而省去了外部电路.
为获得最佳的EMC和故障保护性能,LIN引脚上建议使用一些外部元件(见图33).
如图31所示,LIN协议利用IRQ/FIQ、专用LIN定时器和同样片内集成的高压收发器来仿真.
当器件处于休眠模式下,LIN时钟从低功耗振荡器获得;正常模式下则从内核时钟获得.
LIN收发器通过2线式接口HVCFG[0]使能.
LIN协议由LINMMR部分所述的8个MMR控制.
Rev.
D|Page84of92LIN诊断ADuC7039的LIN引脚上具有短路保护功能.
如果在LIN引脚上检测到短路状况,HVSTA[0]就会置1.
如果通过IRQEN[10]使能了中断,上述状况将产生一个高压中断.
利用HVCFG1[2]重新使能LIN驱动器可将该位清0.
可通过HVCFG[1]来禁用此功能.
LIN通信LIN使用帧进行数据通信.
帧包括报头、断开码、同步码、主机发送的PID、数据字节以及从机产生的校验和,如图32所示.
在LIN通信中,PID决定从机的行为:接收、发送或忽略.
断开码ADuC7039的LIN接口自动检测断开码,接收到有效的断开码后,就会在LINSTA寄存器中设置一个标志.
断开码的最短长度为11个标称从机时钟周期(20kB速率).
有效断开码的最长长度是可编程的,可以在LINBKMMR中配置.
LIN接口在LIN通信期间的任何时候都能识别有效的断开码,如果现有通信期间出现断开码,就会置位冲突标志位(LINSTA的位4).
同步码LIN接口自动检测同步字节,并且为当前LIN帧的后续数据设置波特率.
该操作对用户是透明的.
PIDLIN外设将PID视作一个数据字节.
它在LINDATMMR中提供.
软件必须解码PID.
接收到PID停止位后,产生一个中断以便读取LINDAT寄存器的内容,然后该内容将被下一个数据字节覆盖.
数据字节同样,后续数据字节也会设置中断位,指示已接收到数据字节.
在发送模式下,一次最多可以发送8个数据字节,后跟一个校验和.
校验和每接收或发送一个字节时都会自动计算校验和,结果的倒数值存储在LINCSMMR中.
默认情况下,校验和计算采用LIN2.
1规范:诊断帧和保留帧使用传统校验和计算,其余帧则使用增强校验和计算.
硬件自动识别PID并相应地计算校验和.
用户代码无需写入LINCON寄存器以更改校验和计算.
若要在LIN1.
3模式下工作,用户代码LIN初始化例程必须将LINCON[7]置1,迫使硬件采用传统校验和计算.
在接收模式下的LIN通信期间,不得更改此寄存器.
LINMMRLIN模块接口包括8个MMR:LINCON是一个16位控制寄存器.
该寄存器如表61所示.
数据接收期间不应访问该寄存器.
LINDAT是一个8位用户可访问数据寄存器.
此MMR为双缓冲型寄存器:一个阴影寄存器用于接收和发送数据,用户代码则读写LINDAT.
LINSTAMMR指示数据的状态.
LINSTA是一个16位状态寄存器.
该寄存器如表62所示.
LINBR是一个19位波特率寄存器.
波特率由LIN外设自动设置,用户代码不应更改此寄存器.
它表示8位传输期间内核时钟的周期数.
LINBK是一个19位断开码定时器寄存器,控制断开码被LIN从机接口视为有效的最大长度.
默认值为5500个内核时钟周期,代表11位数据以20kHz的速率发送所需的时间.
LINCS是一个8位校验和寄存器.
它包含当前校验和计算的倒数结果.
校验和在接收或发送每个字节时计算,具体取决于LINCONMMR的位4设置.
发送模式下,最后要发送的数据被写入外设后,用户将该位置1.
校验和自动发送.
接收模式下,校验和在接收到每个字节时计算,无论此字节是数据字节还是帧校验和.
例如,接收一个含4个数据字节的帧时,一旦接收到第四个数据字节,LINCSMMR就会包含预期的帧校验和.
接收到正确的校验和之后,LINCS应包含0x00.
LINLOW是一个19位计数器,以10MHz的时钟速率工作,用于唤醒总线上的LIN节点.
只要LINLOWMMR大于0,就会强制LIN总线变为低电平.
例如,如果LINLOW=0x234,则会以20kB的速率产生一个11位断开码.
LINWU是一个19位计数器,从低功耗振荡器获得时钟.
它用在休眠模式下,以指定通过LIN唤醒器件的低电平信号的长度.
例如,如果LINWU=0x13,则会忽略任何短于150μs的断开码,ADuC7039保持休眠状态.
ADuC7039Rev.
D|Page85of92LINCON寄存器名称:LINCON地址:0xFFFF0700默认值:0x0000访问类型:读/写功能:该16位MMR控制LIN外设.
LINCS寄存器名称:LINCS地址:0xFFFF0704默认值:0xFF访问类型:读/写功能:8位校验和寄存器.
LINBR寄存器名称:LINBR地址:0xFFFF0708默认值:0x00FA0访问类型:读/写功能:19位波特率寄存器.
LINBK寄存器名称:LINBK地址:0xFFFF070C默认值:0x0000157C访问类型:读/写功能:19位断开码定时器寄存器.
LINSTA寄存器名称:LINSTA地址:0xFFFF0710默认值:0x0100访问类型:只读功能:16位状态寄存器.
LINDAT寄存器名称:LINDAT地址:0xFFFF0714默认值:0x00访问类型:读/写功能:8位数据寄存器.
LINLOW寄存器名称:LINLOW地址:0xFFFF0718默认值:0x00000访问类型:读/写功能:LINWU寄存器名称:LINWU地址:0xFFFF071C默认值:0x00013访问类型:读/写功能:共有7个中断源,其中5个可以在LINCONMMR中予以屏蔽:LIN唤醒接收到数据发送就绪—可屏蔽发送完成—可屏蔽检测到冲突—可屏蔽断开码—可屏蔽帧错误范围内的最大负边沿数—可屏蔽19位寄存器,指定唤醒器件的断开码长度.
19位寄存器,产生一个LIN断开码以唤醒总线上的其它LIN外设.
ADuC7039Rev.
D|Page86of92表61.
LINCONMMR位分配位描述15至13保留.
1211109876543210LIN旁路位.
该位由用户代码置1时,仅控制LIN收发器,用于LIN一致性测试.
该位由用户代码清0时,在正常模式下工作.
LIN使能位.
该位由用户代码置1时,使能LIN接口.
该位由用户代码清0时,禁用LIN接口或复位接口.
UART使能位.
该位由用户代码置1时,允许不接收帧报头的传输,用于测试目的.
该位由用户代码清0时,在正常模式下工作.
同步码的定时,位0(单从机系统不需要).
确保发送第二个断开码时,它能被识别为断开码,而不是作为同步码的一部分加以定时.
如果起始码超过该位规定的时钟周期数,器件将认为它现在接收的是断开码,并继续计数低周期,以确定该断开码是否满足LINBKMMR中定义的最短时间要求.
由用户置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.
ADuC7039Rev.
D|Page87of92表62.
LINSTAMMR位分配位描述15至11保留.
109876543210ADuC7039LIN唤醒中断.
如果LIN唤醒ADuC7039,该位置1.
唤醒功能(LINWUMMR)只能在POWCON[3]=0时使用.
读取LINSTAMMR时,该位自动清0.
断开码时间最大值.
如果使能LIN接口后的第一个断开码在达到最大计数值之前结束,则该位为0.
如果使能LIN接口后的第一个断开码在达到最大计数值之后结束,则该位为1.
读取LINSTAMMR时,该位由硬件自动清0.
该位仅对通过LINCON[11]使能LIN外设后的第一个断开码有效.
PID奇偶校验错误.
如果LINDAT寄存器中的当前字节不能与LIN2.
1规范所述PID奇偶校验方案正确匹配,则该位由硬件自动置1.
如果LINDAT寄存器中的当前字节与PID奇偶校验方案正确匹配,则该位由硬件清0.
数据寄存器中何时真正有PID,须由用户判断.
无论LINDATMMR中是否有PID或数据字节,都会进行奇偶校验.
校验和匹配.
该位仅当LINSTA[0]=1时有效.
如果LINCS中的值与LINDAT中的已接收数据不匹配,则该位自动置1.
读取LINSTAMMR时,或者LINDAT与LINCS匹配时(同时LINSTA[0]=1),该位清0.
帧错误.
如果没有帧错误,该位为0.
读取LINSTA时,该位自动清0.
如果在接收数据字节期间发生帧错误,即未检测到有效停止,则该位置1.
负边沿最大误差中断(可屏蔽).
如果负边沿数没有超过帧允许的数量,则该位为0.
如果负边沿数为57或更大,则该位置1.
读取LINSTAMMR时,该位由硬件自动清0.
LIN冲突检测中断(可屏蔽).
如果器件由于总线冲突而停止传输,该位将由硬件自动置1.
如果冲突检测和发送完成中断使能(LINCON[6]=0),并且发送完成中断位置1(LINSTA[2]=1),则该位不会置1.
读取LINSTAMMR时,该位由硬件自动清0.
断开码接收中断(可屏蔽).
如果未接收到有效断开码,该位为0.
如果在LIN总线上检测到11个标称位的低电平时间,则该位置1.
读LINSTAMMR时,该位自动清0.
发送完成中断(可屏蔽).
如果数据仍在LINDAT寄存器中,该位为0.
发送完所有数据后,该位置1.
然后它将保持1值,直至LIN接收到一个断开码.
接收模式下,它自动清0.
发送就绪中断(可屏蔽).
如果先前写入LINDATMMR中的数据仍然在LINDAT中,而尚未移送到发送寄存器,则该位为0.
当发送就绪位为0时,写入数据到LINDATMMR会覆盖先前要发送的字节.
如果先前写入LINDATMMR中的数据现已处于发送寄存器中,则该位为1.
接收就绪中断.
如果LINDATMMR中没有要读取的新数据,该位为0.
如果LINDATMMR中有要读取的新数据,该位为1.
读取LINDATMMR时,该位清0.
Rev.
D|Page88of92表63.
标识实例ADuC7039BCP6Z行LFCSP行1ADuC7039行2BCP6Z行3B60#日期代码行42528206.
1表64.
标识实例ADuC7039WBCPZ行LFCSP行1ADuC7039行2WBCPZ行3B60#日期代码行42528206.
1行5MALAYSIA表65.
上电时的R4位分配位描述31至2726至2221至1615至0表66.
上电时的R5位分配位描述31至2827至2019至1615至0ADuC7039器件标识为便于追溯,器件上电时提供标识信息.
上电时,ARM内部寄存器(R4至R6)提供制造批次ID、硅片掩模版本和内核版本等信息,如表65和表66所示.
为获得全面的追溯信息,需要记录R4、R5、R6和产品型号.
R6中存储的组装批次ID是封装标识的一部分,如表63所示.
例如,对于2528206.
1的组装批次ID,R6包含0x002693CE.
上电时,产品型号包含在MMRFEEADR中.
晶圆号.
从此位置读取的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)使用时,此编号是器件的唯一标识.
硅片掩膜版本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|Page89of92系统标识FEEADRADuC7039名称:FEEADR地址:0xFFFF0E10默认值:0xF009访问类型:读/写功能:该16位寄存器决定通过FEECON执行任何Flash/EE命令的操作地址.
注意:该MMR还用以识别ADuC703x系列产品和预发布芯片版本.
表67.
FEEADR系统标识MMR位分配位描述15至4保留3至0ADuC703x系列ID0x0=ADuC70300x2=ADuC70320x3=ADuC70330x4=ADuC70340x6=ADuC70360x9=ADuC7039其它=保留供将来使用Rev.
D|Page90of92图33.
推荐原理图2927121319291111415203031AGNDAGNDAGNDDGNDIO_VSSVSSREG_DVDD18REG_DVDDLINJTAGADAPTORRESETREG_DVDD2.
2F10F0.
1F0.
1F220pF17REG_AVDD0.
47FGND_SW16REG_AVDD0.
1FIIN–109VTEMPREG_AVDDIIN+IIN+SHUNTVBATVDD1020VBAT2TDO3TCK4TMS5TDI6NTRST7RTCKADuC7039ECUMASTERPESD1LIN08463-030推荐原理图本原理图包含为使ADuC7039正常工作而推荐使用的外部器件.
ADuC7039Rev.
D|Page91of92外形尺寸图34.
32引脚引脚架构芯片级封装[LFCSP_VQ]6mmx6mm超薄四方体(CP-32-15)图示尺寸单位:mm订购指南型号1,2NOTE温度范围40°C至115°C40°C至115°C封装选项CP-32-15CP-32-15封装描述32引脚引脚架构芯片级封装[LFCSP_VQ]32引脚引脚架构芯片级封装[LFCSP_VQ]CP-32-15Flash/Ram64K/4K64K/4K32引脚引脚架构芯片级封装[LFCSP_VQ]CP-32-15ADuC7039BCP6Z40°C至115°CADuC7039BCP6Z-RL40°C至115°C64K/4K32引脚引脚架构芯片级封装[LFCSP_VQ]64K/4K评估板ADuC7039WBCPZ3ADuC7039WBCPZ-RL3EVAL-ADUC7039QSPZ10.
50BSCBOTTOMVIEWTOPVIEWPIN1INDICATOR329161724258EXPOSEDPADPIN1INDICATORSEATINGPLANE0.
05MAX0.
02NOM0.
15REFCOPLANARITY0.
080.
300.
250.
186.
106.
00SQ5.
901.
000.
950.
85FORPROPERCONNECTIONOFTHEEXPOSEDPAD,REFERTOTHEPINCONFIGURATIONANDFUNCTIONDESCRIPTIONSSECTIONOFTHISDATASHEET.
0.
700.
600.
500.
20MIN3.
903.
80SQ3.
70COMPLIANTTOJEDECSTANDARDSMO-220-VJJD.
01-25-2013-C汽车应用产品ADuC7039W生产工艺受到严格控制,以满足汽车应用的质量和可靠性要求.
请注意,车用型号的技术规格可能不同于商用型号;因此,设计人员应仔细阅读本数据手册的技术规格部分.
只有显示为汽车应用级的产品才能用于汽车应用.
欲了解特定产品的订购信息并获得这些型号的汽车可靠性报告,请联系当地ADI客户代表.
1Z=符合RoHS标准的器件.
2通过汽车应用认证.
3推荐新设计使用.
ADuC7039Rev.
D|Page92of92注释ADuC70392010–2013AnalogDevices,Inc.
Allrightsreserved.
Trademarksandregisteredtrademarksarethepropertyoftheirrespectiveowners.
)D(31/3-0-3sc6480D

亚洲云Asiayu,成都云服务器 4核4G 30M 120元一月

点击进入亚云官方网站(www.asiayun.com)公司名:上海玥悠悠云计算有限公司成都铂金宿主机IO测试图亚洲云Asiayun怎么样?亚洲云Asiayun好不好?亚云由亚云团队运营,拥有ICP/ISP/IDC/CDN等资质,亚云团队成立于2018年,经过多次品牌升级。主要销售主VPS服务器,提供云服务器和物理服务器,机房有成都、美国CERA、中国香港安畅和电信,香港提供CN2 GIA线路,CE...

BGPTO独服折优惠- 日本独服65折 新加坡独服75折

BGPTO是一家成立于2017年的国人主机商,从商家背景上是国内的K总和有其他投资者共同创办的商家,主营是独立服务器业务。数据中心包括美国洛杉矶Cera、新加坡、日本大阪和香港数据中心的服务器。商家对所销售服务器产品拥有自主硬件和IP资源,支持Linux和Windows。这个月,有看到商家BGPTO日本和新加坡机房独服正进行优惠促销,折扣最低65折。第一、商家机房优惠券码这次商家的活动机房是新加坡...

vpsdime:VPS内存/2核/VPS,4G内存/2核/50gSSD/2T流量/达拉斯机房达拉斯机房,新产品系列-Windows VPS

vpsdime上了新产品系列-Windows VPS,配置依旧很高但是价格依旧是走低端线路。或许vpsdime的母公司Nodisto IT想把核心产品集中到vpsdime上吧,当然这只是站长个人的猜测,毕竟winity.io也是专业卖Windows vps的,而且也是他们自己的品牌。vpsdime是一家新上来不久的奇葩VPS提供商,实际是和backupspy以及crowncloud等都是同一家公司...

代码签名为你推荐
操作http支持ipad字节跳动回应TikTok易主抖音字节跳动是什么意思?flashftp下载rmdown怎么下载支付宝注册网站在哪里注册支付宝账号大飞资讯单仁资讯集团怎么样抢米网什么意思抢小米手机tumblr上不去安卓手机版steam打不开是为什么三五互联南京最专业的网站建设公司是哪家?双尚网络做的好不好? 给分求答案温州都市报招聘在温州哪里好找工作?
长沙虚拟主机 ip查域名 域名注册中心 北京vps主机 万网免费域名 主机优惠码 服务器评测 美国便宜货网站 免费cdn加速 网站保姆 搜狗抢票助手 ubuntu更新源 亚洲小于500m 京东商城双十一活动 日本bb瘦 百兆独享 免费个人空间 新家坡 共享主机 福建铁通 更多