Fremont Micro Devices
FT62F08
数据手册
主要特性
8−bit 基于 EEPROM 的 RISC MCU
Program: 8k x 14; RAM: 1k x 8; Data: 256 x 8
16 /20 / 24 / 28 / 32 引脚
高精度 12−bit ADC
4 个定时器, 7 路独立 PWM − 3 路带死区控制
高可靠性的 15 路触摸按键
SPI, I2C, USART
低 Standby, WDT 和工作电流
POR, LVR, LVD – 单输入比较器
可配置源电流和灌电流
高 ESD, 高 EFT
低 VDD 工作电压
HIRC 可微调
Rev2.02
www.fremontmicro.com
Fremont Micro Devices
FT62F08x
• 49 条 RISC 指令:
1T、2T or 4T
• 16 MHz / 1T
• 多达 32 个引脚
(VDD ≥ 2.7)
•
•
•
•
•
(读/写保护)
TOUCH
8−bit CPU (EEPROM)
Memory
• PROGRAM: 8k x 14 bit
•
•
•
•
DATA: 256 x 8 bit
RAM: 1k x 8 bit
16 层硬件堆栈
扇区加密, 支持 IAP
• 多达 15 个触摸按键,支持防水功能
通信接口
• SPI, I2C, USART
I/O PORTS (多达 30 个 I/O)
工作条件 (5V, 25°C)
• VDD (VPOR ≤ 1.9V)
VPOR − 5.5 V
(通过 POR 自动调整,0°C 以上 ≤1.7V)
−40 − +125 °C
• 工作温度等级 1
−40 − +105 °C
• 工作温度等级 2
−40 − + 85 °C
• 工作温度等级 3
• 低 Standby
0.2 μA
• WDT
• 正常模式 (16 MHz / 1T)
2.9 μA
276 μA/mips
高可靠性
• 100 万次擦写次数
• > 20 年 / 85°C 存储
(typical)
(typical)
• ESD > 8 kV, EFT > 5.5 kV
ADC (12−bit)
• 12−bit 精度
• 8 + 1 通道
Timer2 (16−bit): 4−bit 预分频
Timer4 (8−bit):
3−bit 预分频
自动重载
支持在 SLEEP 下运行
LIRC, 1 or 2x {指令时钟, HIRC, 晶振, EC}
(≤ 1 MHz ADC 时钟)
• VADC−REF
✓ 内部:
0.5, 2.0, 3.0, VDD
✓ 外部:
+, − 可选
• 自动阈值比较
• 触发方式:手动, 自动可选
• 支持延时触发和自动校准
•
•
•
•
•
上拉/下拉电阻
开漏
30 个 I/O 源电流: 2, 4, 14 or 26mA (5V, 25°C)
30 个 I/O 漏电流: 53 or 62 mA (5V, 25°C)
30 个 I/O:
中断/唤醒
电源管理
• SLEEP
• LVR: 2.0, 2.2, 2.5, 2.8, 3.1, 3.6, 4.1 (V)
• LVD: 2.0, 2.4, 2.8, 3.0, 3.6, 4.0
(V)
(LVD 可用作极性可选的单输入比较器功能)
系统时钟 (SysClk)
• HIRC 高速内部振荡器
✓ 16MHz VLVD−REF (不锁存)
LVDW
LVD 触发?
0 = 检测电压 VLVD−REF
LVDL
VLVD−REF
ELVDS
LVD 外部输入
引脚选择
LVDIE
LVD 中断
LVDIF
LVD 产生中
断?
1
000 = 保留
100 = 2.8
001 = 保留
101 = 3.0
010 = 2.0
110 = 3.6
011 = 2.4
111 = 4.0
00 = ELVD0
10 = ELVD2
01 = ELVD1
11 = ELVD3
1 = 使能
5.2.
ADCON3[1:0]
RW−000
0x41A
INTCON[4]
0 = 关闭
RW−00
RW−0
0x0B
1 = Yes
0 = No, 或已被清零
表 5-1
LVDCON[2:0]
INTCON[1]
R_W1C−0
LVD 用户设置和标志寄存器
检测外部电压
除了可以监控片内 VDD 外,LVD 模块还具备检测外部电压的功能。寄存器位 LVDM 决定了 LVD 作用于
VDD 还是外部电压,当它为 1 时表示对外部管脚 ELVDx 进行监控。外部 LVD 管脚一共有 4 种选择,由
寄存器 ELVDS[1:0]控制。当配置为 ELVD 功能时,管脚斯密特输入被关闭以防漏电。
检测外部电压 (LVDM=1) 时,LVD 的极性是相反的,即该模块只有检测到外部电压高于所设阈值且时间
超过 TLVD 时,LVDW 和 LVDIF 标志位才会置高。
注意:PC0 的外部复位功能优先级高于外部 LVD 功能。当配置为外部复位管脚时,外部 LVD 的检测是
1
写 1 清 0,写 0 无效。建议只使用 STR、MOVWI 指令进行写操作,而不要用 BSR 或 IOR 指令。
Rev2.02
- 38 -
2021-10-29
Fremont Micro Devices
FT62F08x
无效的,不管 ELVDS 以及 LVDM 为何值。
5.3.
LVD 中断
除了通过轮询 LVDW 位了解低电压侦测事件外,软件还可以能过中断的方式来获得低电压的情况。当低
电压侦测事件发生后,LVDIF 位自动置 1,它是一个电平触发锁存器,只能通过软件清 0,清 0 的前提是
电源电压恢复到 LVDL[2:0]设置的水平以上,LVD 事件结束。
当 PEIE 和 LVDIE 被置 1 且 LVDIF 为 1 时,睡眠状态下 LVD 中断标志位还可以作为一个唤醒源,如果
之前 GIE = 1,则唤醒后 CPU 进入中断处理。
Rev2.02
- 39 -
2021-10-29
Fremont Micro Devices
FT62F08x
6. 振荡器和系统时钟
C1=12pF
OSC2
32768Hz
16MHz
/Sleep
MCKCF
XT/LP/EC
OSC1
C2=12pF
1:1
1:2
1:4
1:8
1:16
1:32
1:64
1:128
32K
HIRC
~
LIRC
256K Internal Osc
~
/8
0
1
LFMOD
FOSC
Configuration Word Register)
(SCS, OSCCON Register)
Power-up timer (PWRT)
Fail safe clock monitor(FSCM)
System Clock(MCLK)
Timers
I2C
UART1
SPI
TOUCH
Peripheral clock
ADC
enable
CCOSEL[2:0]
MCLK
HIRC
AD
C
Peripheral clock
enable
Prescaler
16M Internal Osc
0111
0110
0101
0100
0011
0010
0001
1xxx
0000
Configurable clock
output
LIRC
XT/LP/EC
T1CK
T2CK
T2CKSRC[2:0]
MCLK
HIRC
HIRC*2
XT/EC
T2CK
To TIM2
XT*2/EC*2
LIRC
LP
LP*2/EC*2
T1CKSRC[2:0]
MCLK
HIRC
HIRC*2
T1CK
XT/EC
To TIM1
XT*2/EC*2
LIRC
LP
LP*2/EC*2
图 6-1
T4CKS[1:0]
MCLK
HIRC
LP
XT
WCKSEL[1:0]
LIRC
To TIM4
HIRC
LP
To WDT
XT
系统时钟源框图
时钟源包含 4 个时钟源:2 个内置振荡器,1 个外部晶体振荡器,1 个外部时钟灌入源。内置振荡器包括
1 个内部 16M 高速精准振荡器 (HIRC),1 个内部 32k/256k(LIRC)低速低功耗振荡器。这些时钟或振荡
器结合预分频器可以给系统提供各种频率的时钟源。同时内部高速振荡器可以通过 OSCTUNE 寄存器对
振荡器的频率进行调节校准。
Rev2.02
- 40 -
2021-10-29
Fremont Micro Devices
6.1.
FT62F08x
振荡器模块相关寄存器汇总
名称
功能
默认
• LP:PC1 (+) 和 PB7 (−) 接外部低速晶振
• XT:PC1 (+) 和 PB7 (−) 接外部高速晶振
FOSC
INTOSCIO
• EC:PC1 (+) 接外部时钟输入,PB7 为 I/O
• INTOSCIO:PC1 和 PB7 为 I/O
IESO
XT / LP 双速时钟启动
FCMEN
故障保护时钟监控器
• 使能
使能
• 关闭
• 使能
使能
• 关闭
指令时钟与系统时钟的对应关系 (1T, 2T or 4T)
• 1 (指令时钟 = SysClk)
TSEL
2
• 2 (指令时钟 = SysClk/2)
• 4 (指令时钟 = SysClk/4)
• 512
OSTPER
OST 定时器周期选择 (XT / LP 适用)
• 1024
1024
• 2048
• 4096 (LP 模式时为 32768)
表 6-1
SCS
OSCCON[0]
SysClk 系统时钟源
外部
EC
XT
LP
HIRC
内部
LIRC
16 MHz
8 MHz
4 MHz
2 MHz
1 MHz
500 kHz
250 kHz
125 kHz
256 kHz 1
32 kHz 2
表 6-2
1
FOSC 和双速启动初始化配置寄存器
RW-0
0
0
0
1
1
1
1
1
1
1
1
1
1
配置
MCKCF
LFMOD
OSCCON[7:4] TCKSRC[7]
0x99
RW-0100
RW-0
0111
0110
0101
0100
0011
0010
0001
1xxx
0000
1
0000
0
OST
(可选, 参阅
OSTPER)
1,024 (默认值)
1,024 (默认值)
-
SysClk 系统时钟源设置相关用户寄存器
256 kHz LIRC 只供 ADC (参阅 ADCS 和 LFMOD,表 15-3) 使用。
2
系统时钟源 (IRCF=000)、PWRT、FSCM 和 WDT (WCKSRC=00) 统一使用 LIRC 的 8 分频,即 32 kHz,而不管
LFMOD 为何值。
Rev2.02
- 41 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
振荡器启动超时状态位(锁存)
OSTS
1 = 运行在外部振荡器下(启动成功)
OSCCON[3]
RO−x
0 = 运行在内部振荡器下
HTS
HIRC ready (锁存)
LTS
LIRC ready (锁存)
1 = Yes
0 = No
1 = Yes
0 = No
OSCCON[2]
0x99
RO−0
OSCCON[1]
RO−0
CKOCON[7]
RW−0
CKOCON[6]
RO−0
CKOCON[5:4]
RW−10
Sleep 模式下,系统时钟控制
SYSON
1 = 保持运行
0 = 关闭
CCORDY
时钟输出标志位
1 = Yes
0 = No
TIM1/TIM2 倍频时钟占空比调节位
DTYSEL
00 = 2ns 延迟
10 = 4ns 延迟
01 = 3ns 延迟
11 = 7ns 延迟
0x95
输出时钟选择位
CCOSEL
CCOEN
000 = Sysclk
100 = T1CK
001 = HIRC
101 = T2CK
010 = LIRC
110 = LP
011 = XT
111 = EC
时钟输出
1 = 使能
0 = 禁止
CKOCON[3:1]
RW−000
CKOCON[0]
RW−0
时钟输出引脚
AFP16
1 = CLKO 映射到 PD4
AFP1[6]
0x19F
RW−0
0x98
RW−xxxx xxxx
0 = CLKO 映射到 PB1
TUN
内部高速时钟 HIRC 频率调节寄存器
OSCTUNE[6:0]
TKEN
Touch 模块时钟
PCKEN[7]
RW−0
I2CEN
I2C 模块时钟
PCKEN[6]
RW−0
UARTEN
USART 模块时钟
PCKEN[5]
RW−0
SPICKEN
SPI 模块时钟
1 = 使能
PCKEN[4]
TIM4EN
Timer4 模块时钟
0 = 关闭
PCKEN[3]
TIM2EN
Timer2 模块时钟
PCKEN[2]
RW−0
TIM1EN
Timer1 模块时钟
PCKEN[1]
RW−0
ADCEN
ADC 模块时钟
PCKEN[0]
RW−0
表 6-3
Rev2.02
0x9A
RW−0
RW−0
振荡器控制/状态位
- 42 -
2021-10-29
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
GIE
全局中断
1 = 使能 (PEIE, OSFIE 适用)
0 = 全局关闭
(唤醒不受影响)
PEIE
外设总中断
1 = 使能 (OSFIE 适用)
0 = 关闭 (无唤醒)
INTCON[6]
OSFIE
外部振荡器故障中
断
1 = 使能
0 = 关闭 (无唤醒)
INTCON[3]
OSFIF
外部振荡器故障标
志位
1 = Yes (锁存)
0 = No
INTCON[0]
表 6-4
6.2.
INTCON[7]
地址
复位值
RW−0
Bank
首地址
+0x0B
RW−0
RW−0
R_W1C−0
振荡器中断使能/状态位
时钟源模式
时钟源模式分为外部和内部模式。
外部时钟模式依靠外部电路提供时钟源,比如外部时钟 EC 模式,晶体谐振器 XT、LP 模式。
内部时钟模式内置于振荡器模块中,振荡器模块有 16MHz 高频振荡器和 32kHz 低频振荡器。可通过
OSCCON 寄存器的系统时钟选择位 (SCS) 来选择内部高速或者外部时钟源。
6.3.
外部时钟模式
6.3.1.
振荡器起振定时器 (OST)
如果振荡器模块配置为 LP、XT 模式,振荡器起振定时器 (OST) 根据配置字 OSTPER[1:0]对来自 OSC1
的振荡计数。用户可以根据不同应用要求,通过设置 OSTPER 位调节 OST 计数的次数。这发生在上电
复位 (POR) 之后或上电延时定时器 (PWRT) 延时结束 (如果被使能) 时,或从休眠中唤醒后,或故障
保护条件清除后。在此期间,程序计数器不递增,程序执行暂停。OST 确保使用石英晶体谐振器或陶瓷
谐振器的振荡器电路已经启动并向振荡器模块提供稳定的系统时钟信号。当在时钟源之间切换时,需要
一定的延时以使新时钟稳定。
注意:OST 复用了 WDT 定时器,故在 OST 对晶体时钟计数时,WDT 功能被屏蔽,待 OST 发生溢出
后,WDT 功能才恢复 (如果此前 WDT 被使能的话)。当系统时钟切换到 LP 或者 XT 模式时,看门狗计
数器会被清零。
6.3.2.
EC 模式
外部时钟模式允许外部产生的逻辑电平作为系统时钟源。工作在此模式下时,外部时钟源连接到 OSC1
输入,OSC2 引脚可用作通用 I/O。
当选取 EC 模式时,振荡器起振定时器 (OST) 被禁止。因此,上电复位 (POR) 后或者从休眠中唤醒后
的操作不存在延时。MCU 被唤醒后再次启动外部时钟,器件恢复工作,就好像没有停止过一样。
6.3.3.
LP 和 XT 模式
LP 和 XT 模式支持连接到 OSC1 和 OSC2 的石英晶体谐振器或陶瓷谐振器,模式选择内部反相放大器
的低或高增益设定,以支持各种谐振器类型及速度。
Rev2.02
- 43 -
2021-10-29
Fremont Micro Devices
FT62F08x
LP 振荡器模式选择内部反相放大器的最低增益设定。
该模式设计仅用于驱动 32.768 kHz 音叉式晶振 (钟
表晶振)
。
XT 振荡器模式选择内部反相放大器的高增益设定。
6.3.4.
内部时钟模式
振荡器模块有两个独立的内部振荡器,可配置或选取为系统时钟源。
1.
HIRC (高频内部振荡器) 出厂时已校准,工作频率为 16MHz。
2. LIRC (低频内部振荡器) 未经校准,工作频率为 32 kHz。软件对 OSCCON 寄存器的系统时钟选择
位 MCKCF[3:0]进行写操作,可选择系统时钟速度。
可通过 OSCCON 寄存器的系统时钟选择 (SCS) 位,在外部或内部高速时钟源之间选择系统时钟。
注意:OSCCON 寄存器的 LFMOD 可以选择 LIRC 是 32kHz 或者 256kHz,但看门狗固定使用 32kHz,
不管 LFMOD 为何值。
6.3.5.
频率选择位 (MCKCF)
外部晶体时钟,
16MHz HIRC 和 32kHz LIRC 的输出连接到预分频器和多路复用器 (见图 6-1)。OSCCON
寄存器的内部振荡器频率选择位 MCKCF[3:0] 用于选择不同的分频输出。可选择以下各分频比或频率:
•
•
•
•
•
•
•
•
•
1:1
1:2
1:4
1:8 (复位后的缺省值)
1:16
1:32
1:64
1:128
32 kHz (LIRC)
6.3.6.
HIRC 和 LIRC 时钟切换时序
当在 LIRC 和 HIRC 之间切换时,新的振荡器可能为了省电已经关闭 (见图 5.2 和图 5.3)。在这种情况
下,OSCCON 寄存器的 MCKCF 位被修改之后、频率选择生效之前,存在一个延时。OSCCON 寄存器
的 LTS 和 HTS 位将反映 LIRC 和 HIRC 振荡器的当前活动状态。频率选择时序如下:
•
OSCCON 寄存器的 MCKCF[3:0]位被修改
•
如果新时钟是关闭的,会有一个时钟的启动延时
•
时钟切换电路等待当前时钟的 2 个下降沿的到来
•
CLKOUT 保持为低,时钟切换电路等待两个新时钟下降沿的到来
•
现在 CLKOUT 连接到新时钟。OSCCON 寄存器的 HTS 和 LTS 位被更新
•
时钟切换完成
Rev2.02
- 44 -
2021-10-29
Fremont Micro Devices
FT62F08x
HIRC启动时间
HIRC
LIRC
2个下降沿关闭系统时钟
MCKCF
MCKCF=0
2个下降沿完成切换
MCKCF/=0
MCLK
图 6-2
由慢时钟切换到快时钟
HIRC
慢时钟启动时间
LIRC
2个慢时钟下降沿后
MCKCF
MCKCF/=0
MCKCF=0
2个下降沿关闭系统时钟
SYSCLK
图 6-3
6.3.7.
由快时钟切换到慢时钟
HIRC 时钟特殊功能
FT62F08X 内 建 了 一 个 振 荡 频 率 可 调 的 高 精 度 HIRC 作 为 系 统 时 钟 , 出 厂 时 被 精 确 地 调 校 至
16MHz@5V/25℃,用户可以通过编程器的 Code Option 校准系统时钟。校准过程是过滤掉制程上的偏
差 对精度造 成的影响 。此 HIRC 受工 作的环境温 度和工作 电压影响 会有 一定的漂 移,对于 压漂
(4.5V~5.5V)以及 (-20℃~85℃) 的温漂一般状况会在±1%以内。
FT62F08X 有一个特殊的功能:用户可修改 OSCTUNE 的值来对 HIRC 频率作调整。
OSCTUNE 的值确保 HIRC 在上电后准确工作在 16MHz。此数值的初始值每颗 IC 都会有差异。初始值
为 OSCTUNE[s],
此时芯片工作在 16MHz,
每改变 1 个 LSb 则 HIRC 频率变化约为 80kHz。
OSCTUNE[6:0]
和 HIRC 输出的关系如下:
Rev2.02
- 45 -
2021-10-29
Fremont Micro Devices
6.4.
FT62F08x
OSCTUNE [6:0] 值
HIRC 实际输出频率 (kHz), (16M 为例)
OSCTUNE [s] - n
(16000 - n*80)
…..
…..
OSCTUNE[s] - 2
16000 - 2*80 = 15840
OSCTUNE[s] - 1
16000 - 1*80 = 15920
OSCTUNE[s]
16000
OSCTUNE[s] + 1
16000 + 1*80 = 16080
OSCTUNE[s] + 2
16000 + 2*80 = 16160
…..
…..
OSCTUNE[s] + n
(16000 + n*80)
时钟切换
通过软件对 OSCCON 寄存器的系统时钟选择 (SCS) 位进行操作,可将系统时钟源在外部和内部高速时
钟源之间切换。
6.4.1.
系统时钟选择 (SCS) 位
OSCCON 寄存器的系统时钟选择 (SCS) 位选择用于 CPU 和外设的系统时钟源。
OSCCON 寄存器的位 SCS = 0 时,
系统时钟源由配置字寄存器 (UCFG0) 中 FOSC[2:0]位的配置决定。
OSCCON 寄存器的位 SCS = 1 时,忽略 FOSC[2:0]位,根据 OSCCON 寄存器的 MCKCF[3:0]位决定系
统时钟源:HIRC 的分频时钟或者 32k 时钟。
注:
1. 任何由硬件引起的时钟切换 (可能产生自双速启动或故障保护时钟监控器) 都不会更新 OSCCON 寄
存器的 SCS 位。用户应该监控 OSCCON 寄存器的 OSTS 位以确定当前的系统时钟源;
2. 当 MCKCF[3:0]等于 0 时,无论 SCS 为何值,系统时钟都选择内部慢时钟。
6.4.2.
振荡器起振超时状态 (OSTS) 位
OSCCON 寄存器的振荡器起振超时状态 (OSTS) 位用于指示系统时钟是来自外部时钟源,还是来自内
部时钟源。外部时钟源由配置字寄存器 (UCFG0) 的 FOSC[2:0]定义。OSTS 还特别指明在 LP 或 XT 模
式下,振荡器起振定时器 (OST) 是否已超时。
6.4.3.
双速时钟启动模式
双速启动模式通过最大限度地缩短外部振荡器起振与代码执行之间的延时,进一步节省了功耗。对于频
繁使用休眠模式的应用,双速启动模式将在器件唤醒后除去外部振荡器的起振时间,从而可降低器件的
总体功耗。该模式使得应用能够从休眠中唤醒,将 INTOSC 用作时钟源执行数条指令,然后再返回休眠
状态而无需等待主振荡器的稳定。
注:执行 SLEEP 指令将中止振荡器起振时间,并使 OSCCON 寄存器的 OSTS 位保持清零。
Rev2.02
- 46 -
2021-10-29
Fremont Micro Devices
FT62F08x
当振荡器模块配置为 LP 或 XT 模式时,振荡器起振定时器 (OST) 使能 (见章节 6.3.1 “振荡器起振定时
器”)。OST 将暂停程序执行,直到完成配置字 OSTPER[1:0]位要求的计数次数。双速启动模式在 OST 计
数时使用内部振荡器进行工作,使代码执行的延时最大限度地缩短。当 OST 计数到 OSTPER[1:0]位要
求的计数次数且 OSCCON 寄存器的 OSTS 位置 1 时,程序执行切换至外部振荡器。
注:
1.系统时钟配置为外部晶振模式时,同时使能了双速模式,在 OST 未计数到 OSTPER 要求的数值时,
CLRWDT 指令不能清除看门狗计数器,也就是说此时 OST 计数不能被中断;
2.系统时钟配置为外部晶振模式时,同时使能了双速模式,在 OST 未计数到 OSTPER 要求的数值时,
执行 sleep 指令时,看门狗计数器被清零,此时的 OST 计数被清零。
6.4.4.
双速启动模式配置
通过以下设定来配置双速启动模式:
•
配置字寄存器 (UCFG1) 中的位 IESO = 1; (使能双速启动模式)
•
OSCCON 寄存器的位 SCS = 0 (内部/外部切换位)
•
配置字寄存器 (UCFG0) 中的 FOSC[2:0]配置为 LP 或 XT 模式
在下列操作之后,进入双速启动模式:
•
上电复位 (POR) 且上电延时定时器 (PWRT)
•
延时结束 (使能时)后,或者从休眠状态唤醒
如果外部时钟振荡器配置为除 LP 或 XT 模式以外的任一模式,那么双速启动将被禁止。这是因为 POR
后或从休眠中退出时,外部时钟振荡器不需要稳定时间。
6.4.5.
双速启动顺序
•
从上电复位或休眠中唤醒
•
使用内部振荡器以 OSCCON 寄存器的 MCKCF[3:0]位设置的频率开始执行指令
•
OST 使能,计数 OSTPER[1:0]位要求的计数次数
•
OST 超时,等待内部振荡器下降沿的到来
•
OSTS 置 1
•
系统时钟保持为低,直到新时钟下一个下降沿的到来 (LP 或 XT 模式)
•
系统时钟切换到外部时钟源
6.4.6.
故障保护时钟监控器
故障保护时钟监控器 (FSCM) 使得器件在出现外部振荡器故障时仍能继续工作。FSCM 能在振荡器起振
延时定时器 (OST) 到期后的任一时刻检测振荡器故障。FSCM 通过将配置字寄存器 (UCFG1) 中的
FSCMEN 位置 1 来使能。FSCM 可用于所有外部振荡模式 (LP、XT 和 EC)。
Rev2.02
- 47 -
2021-10-29
Fremont Micro Devices
FT62F08x
边沿触发寄存器
外部时钟
(LP/XT/EC)
S
R
SET
CLR
Q
Q
时钟故障信号
LIRC
~32KHz
分频器
÷64
采样时钟产生
图 6-4
6.4.7.
FSCM 原理框图
故障保护检测
FSCM 模块通过将外部振荡器与 FSCM 采样时钟比较来检测振荡器故障。LIRC 除以 64,就产生了采样
时钟。请参见图 6-4。故障检测器内部有一个锁存器。在外部时钟的每个下降沿,锁存器被置 1。在采样
时钟的每个上升沿,锁存器被清零。如果采样时钟的整个半周期流逝而主时钟依然未进入低电平,就检
测到故障。
6.4.8.
故障保护操作
当外部时钟出现故障时,FSCM 将器件时钟切换到内部时钟源,并将 PIR1 寄存器的 OSFIF 标志位置 1。
如果在 PIR1 寄存器的 OSFIE 位置 1 的同时将该标志位置 1,将产生中断。固件随后会采取措施减轻可
能由故障时钟所产生的问题。系统时钟将继续来自内部时钟源,直到器件固件成功重启外部振荡器并切
换回外部操作。
FSCM 所选的内部时钟源由 OSCCON 寄存器的 MCKCF[3:0]位决定。这使内部振荡器可以在故障发生
前就得以配置。
6.4.9.
故障保护条件清除
复位、执行 SLEEP 指令或翻转 OSCCON 寄存器的 SCS 位后,故障保护条件被清除。OSCCON 寄存
器的 SCS 位被修改后,OST 将重新启动。OST 运行时,器件继续从 OSCCON 中选定的 INTOSC 进行
操作。OST 超时后,故障保护条件被清除,器件将从外部时钟源进行操作。必须先清除故障保护条件,
才能清零 OSFIF 标志位。
6.4.10. 复位或从休眠中唤醒
FSCM 设计为能在振荡器起振延时定时器 (OST) 到期后的任一时刻检测振荡器故障。OST 可用在从休
眠状态唤醒之后和任何类型的复位之后。OST 不能在 EC 时钟模式下使用,所以一旦复位或唤醒完成,
FSCM 就处于激活状态。当 FSCM 被使能时,双速启动也被使能。因此,当 OST 运行时,器件总是处
于代码执行阶段。
注:由于振荡器起振时间的范围变化较大,在振荡器起振期间 (从复位或休眠中退出时),故障保护电路
Rev2.02
- 48 -
2021-10-29
Fremont Micro Devices
FT62F08x
不处于激活状态。经过一段适当的时间后,用户应检查 OSCCON 寄存器的 OSTS 位,以验证振荡器是
否已成功起振以及系统时钟是否切换成功。
6.5.
外设时钟门控
关闭未使用外设的时钟可降低功耗。外设的时钟门控模式可以对以下外设的时钟随时打开或者关闭:
⚫
ADC
⚫
I2C
⚫
SPI
⚫
USART
⚫
TIM1/2/3
⚫
TOUCH
系统复位后,所有的外设时钟均处于关闭的状态。用户可以通过配置 PCKEN 寄存器对应的位来打开相
应的外设时钟。但是如果需要禁止某个外设,必须在其时钟被停止之前进行。
如果要使能某个外设,则需要先使能对应外设的时钟,然后再使能对应外设。外设时钟控制只是控制其
模块的系统时钟。
TIM1/2/4 计数时钟也受 PCKEN 寄存器控制,当 PCKEN 寄存器对应的未置 1 时,则 TIMER 的计数时
钟和寄存器操作时钟同时打开。
注意:
1. 在睡眠模式下,当 SYSON=1 时,无论 TIM1/2 的时钟源是否为系统时钟,其时钟源都会打开;当
SYSON=0 时,TIM1/2 时钟源关闭。
2.
ADC 的转换时钟源打开或者关闭与系统进入睡眠模式无关。
3.
慢时钟测量时,慢时钟的打开与关闭也与系统时钟进入睡眠模式无关。
6.6.
时钟输出
可以将芯片内部的时钟源输出到芯片的 CLKO 管脚上,可以选择以下几种时钟源输出:
⚫
系统时钟
⚫
内部高速时钟
⚫
XT 晶振时钟
⚫
LP 晶振时钟
⚫
外部时钟
⚫
内部慢时钟
⚫
TIM1/TIM2 时钟
时钟输出注意
时钟的输出选择和输出控制位于 CKOCON 寄存器。
当时钟正在输出时,CCORDY 被硬件置 1。
当输出某个时钟时,对应的时钟源也同时被打开。通过清零 CCOEN 位禁止时钟的输出。时钟输出关闭
动作完成之后,CCORDY 位才能被硬件清零。
Rev2.02
- 49 -
2021-10-29
Fremont Micro Devices
FT62F08x
1.
在睡眠模式下,CCO 的输出与 SYSON 相关,当 SYSON=1 时,CCO 继续输出进入睡眠之前所选
的时钟;当 SYSON=0 时,CCO 暂停输出时钟,当系统退出睡眠状态后,继续输出所选时钟;
2.
当系统时钟为 XT 模式时,即使输出时钟选择了 LP 时钟,输出时钟也是 XT 时钟;
3.
当系统时钟为 LP 模式时,即使输出时钟选择了 XT 时钟,输出时钟也是 LP 时钟;
4.
当 FOSC选择为内部时钟源时,输出时钟选择了 LP、XT 或者 EC 时钟,输出时钟端口则不会
输出时钟;
MCU 处于工作模式时,被选择为时钟输出的时钟源将自动使能,例如当前系统时钟为 HSI,时钟输出选
择为 XT 晶振时钟且 CCOEN 为 1,则对应的 XT 晶振电路打开,相关管脚也变成 OSC1, OSC2 功能。
UCFG0 配置选项的优先级要高于 CKOCON 寄存器的优先级,例如配置选项选择 XT 作为系统时钟,时
钟输出配置 LP 或 EC 是不起作用的,反之亦然。
Rev2.02
- 50 -
2021-10-29
Fremont Micro Devices
FT62F08x
7. 慢时钟测量
芯片集成了两个内部 RC 振荡器,一个是经过出厂校准的高速高精度的 16M 快时钟 HIRC,一个是低速
低功耗的 32k 时钟 LIRC,利用慢时钟测量功能可以把 LIRC 的周期用系统时钟计算出来。此功能可以比
较精准的测量内部慢时钟周期。
7.1.
慢时钟测量相关寄存器汇总
名称
状态
寄存器
地址
复位值
LIRC 和 HIRC 交叉校准时 4 次平均测量模式
CKMAVG
1 = 使能
MSCKCON[1]
0 = 关闭
0x41D
启动 LIRC 和 HIRC 的交叉校准功能
CKCNTI
1 = 启动
RW−0
MSCKCON [0]
RW−0
0 = 完成(自动清零)
SOSCPR
校准 LIRC 周期所需的 HIRC 周期数
表 7-1
名称
0x41F[3:0]
0x41E[7:0]
RW−FFF
LIRC 和 HIRC 交叉校准控制/状态位
状态
寄存器
地址
复位值
Bank
首地址
+0x0B
RW−0
GIE
全局中断
1 = 使能 (PEIE, CKMIE 适用)
0 = 全局关闭
(唤醒不受影响)
INTCON[7]
PEIE
外设总中断
1 = 使能 (CKMIE 适用)
0 = 关闭 (无唤醒)
INTCON[6]
CKMIE
LIRC 和 HIRC 交 叉
校准完成中断
1 = 使能
0 = 关闭 (无唤醒)
PIE1[1]
0x91
RW−0
LIRC 和 HIRC 交 叉
校准完成标志位
1 = Yes (锁存)
0 = No
PIR1[1]
0x11
R_W1C−0
CKMIF
1
表 7-2
1
SOSCPR[11:0]
LIRC 和 HIRC 交叉校准中断使能/状态位
写 1 清 0,写 0 无效。建议只使用 STR、MOVWI 指令进行写操作,而不要用 BSR 或 IOR 指令。
Rev2.02
- 51 -
2021-10-29
RW−0
Fremont Micro Devices
7.2.
FT62F08x
测量原理
MSCKCON
CKMAVG
CKCNTI
CLKRST
CKMCNT
CLK & RST
AVGSEL
CKMEND
TRGGEN
CKMTRG
TIMER2
CKM
SOSCPRH/L
图 7-1
T2CNT
慢时钟测量模式原理框图
慢时钟测量类似于定时器的捕捉模式,处于这种模式下,被测量时钟 LIRC 的边沿 (任意沿) 将会触发定
时器,在另一高速时钟 (如 HIRC) 的作用下开始计数,在此后的第 2 个 (或第 8 个,平均模式时) LIRC
边沿到来时,定时器停止计数,同时把定时器的值锁存到 SOSCPRL/H 寄存器。
慢时钟测量使用的定时器是 TIM2。
注意:
1.
在慢时钟测量过程中软件不要写 SOSCPRH/L;
2.
不要在单步调试下做慢时钟测量,因为暂停模式下 TIM2 被停止,这样会导致测量结果不正确;
3.
若 SYSON = 0 时,慢时钟测量无法在 SLEEP 模式下进行,不要在测量运行时进入 SLEEP 模式。
7.3.
上电自动测量
在上电后慢时钟测量将会自动启动,此时 CKCNTI 置 1,CKMAVG 为 0,打开 LIRC 和 HIRC。TIM2 的
时钟被自动配置为 16M 的内部高速时钟,即类似设置 T2CKSRC 为 001、TIM2EN=1 的功能,但未配置
这些位。TIM2 使用默认配置,无需置位 CEN 使能 TIM2 计数,此时不能配置 TIM2。
在测量过程中,实际应用程序已在运行,若要使用 TIM2 则需要查询 CKCNTI。若 CKCNTI 为 0 即可使
用 TIM2,此时 SOSCPR 寄存器的值为有效值,其单位为 FHSI 时钟的个数。
注意:上电自动测量不会置位 CKM 中断标志。
Rev2.02
- 52 -
2021-10-29
Fremont Micro Devices
FT62F08x
CKCNTI
CKMAVG
CPU_RSTN
T2CEN
T2CLK
16M(HIRC)
DEFAULT
LSI_CLK
CKMTRG
CKMEND
CKMCNT
0
1
2
0
T2CNT
Valid
3*Tsys
SOSCPR
Valid
CKMIF
图 7-2
Rev2.02
上电慢时钟自动测量时序图
- 53 -
2021-10-29
Fremont Micro Devices
7.4.
FT62F08x
操作步骤
1.
为提高计量精度,建议设置 T2CKSRC = 001,TIM2EN=1,选择 16M 的内部高速时钟;
2.
关闭 TIM2 的相关中断使能,设置 TIM2ARRH/L 为最大值,设置 TIM2PSC = 0000;
3.
设置 TIM2CR1 为复位值,再将 CEN 置 1,使能 TIM2;
4.
如果选择 4 次平均,则把 MSCKCON.1 置 1,否则把它清 0;
5.
置位 MSCKCON.0,开始测量;
6.
测量结束后 MSCKCON.0 自动清 0,中断标志置 1;
7.
可以用查询或中断的方式等待结束;
8.
当查询到中断标志为 1 时读取得到的 SOSCPR 即为最终结果。
CKCNTI
CKMAVG
CPU_RSTN
T2CEN
T2CLK
16M(HIRC)(User Config)
LSI_CLK
CKMTRG
CKMEND
CKMCNT
0
1
2
3
4
5
6
7
0
T2CNT
Valid
3*Tsys
SOSCPR
Valid
CKMIF
图 7-3
Rev2.02
慢时钟测量模式时序图
- 54 -
2021-10-29
Fremont Micro Devices
FT62F08x
8. 看门狗定时器
...
LIRC
HIRC
LPCLK
XTCLK
...
7-bit
prescaler
WDT
Time-out
16-bit
timer
WDTPS
WCKSEL
WDTPRE
WDTPS
WTDE
SWDTEN
图 8-1
看门狗结构框图
看门狗是一个带 7 位预分频的 16 位计数器,其中预分频和周期可编程,分别由 WDTPRE 和 WDTPS 设
置。
WDT 的硬件使能位位于配置寄存器 UCFG0 的第 3 位,WDTEN,软件使能位位于 WDTCON 寄存器的
第 0 位,为 1 时表示使能看门狗,为 0 时禁止。
指令 CLRWDT、SLEEP 会清除看门狗计数器。
在使能了看门狗的情况下,处于睡眠时看门狗溢出事件可以作为一个唤醒源,而 MCU 正常工作时 WDT
则是作为一个复位源。
条件
看门狗状态
WDTEN 和 SWDTEN 同时为 0
CLRWDT 指令
进入 SLEEP、退出 SLEEP 时刻
清零
写 WDTCON
写 WCKSEL
注意:
1.
如果内部慢时钟从 32k 切换到 256k 模式 (或反之从 256k 切换到 32k 模式,由 LFMOD 位控制),
都不影响看门狗计时。因为 WDT 时钟源选择 LIRC 时,固定使用 32k 时钟源,见图 6-1 的时钟框
图;
2.
PWRT 和 OST 复用了 WDT 定时器,故 PWRT 或 OST 工作时,看门狗的复位功能是暂时屏蔽的;
8.1.
看门狗时钟源
WDT 有 4 种时钟源可选,由寄存器 MISC0 的 WCKSEL 位设置。在 WDT 使能的情况下,所选择的时钟
源被自动使能,并在 SLEEP 模式下保持。
Rev2.02
- 55 -
2021-10-29
Fremont Micro Devices
8.2.
FT62F08x
WDT 相关寄存器汇总
名称
状态
寄存器
地址
复位值
WDT 时钟源
00 = LIRC
WCKSEL
01 = HIRC
10 = LP (仅当 FOSC 为 LP 或 INTOSCIO 模式*)
MISC0[1:0]
0x11C
RW−00
11 = XT (仅当 FOSC 为 XT 或 INTOSCIO 模式*)
*否则配置错误,无 WDT 时钟源
WDT 预分频器
WDTPRE
000 = 1
100 = 16
001 = 2
101 = 32
010 = 4
110 = 64
011 = 8
111 = 128 (默认)
WDTCON[7:5]
RW−111
WDT 周期
WDTPS
0000 = 32
0111 = 4,096
0001 = 64
1000 = 8,192
0010 = 128
1001 = 16,384
0011 = 256
1010 = 32,768
0100 = 512 (默认)
1011 = 65,536
0101 = 1,024
11xx = 65,536
0x97
WDTCON[4:1]
RW−0100
WDTCON[0]
RW−0
0110 = 2,048
SWDTEN
1 = WDT 使能
0 = WDT 关闭 (当 WDTE 选择由 SWDTEN 控制时)
表 8-1
名称
WDT 相关用户寄存器
功能
默认
WDT
WDTE
• 使能 (指令不能禁止)
SWDTEN 控制
• 通过指令控制 (SWDTEN)
表 8-2
Rev2.02
WDT 选项初始化配置寄存器
- 56 -
2021-10-29
Fremont Micro Devices
FT62F08x
9. 高级定时器 TIM1
9.1.
特性
⚫
16bit 的向上计数、向下计数或者上/下计数器,支持自动重载;
⚫
支持可编程预分频的计数时钟;
⚫
支持 4 个独立的捕捉比较通道,通道可支持:
✓
输入捕捉
✓
输出比较
✓
边沿或中心对称 PWM
✓
单脉冲输出
✓
6 步 PWM
⚫
PWM 互补输出和可编程死区时间;
⚫
可编程的重复计数器;
⚫
刹车功能,使输出停止在一个复位态或者一个预设状态
⚫
中断事件:
✓
更新事件:计数器溢出,计数器初始化
✓
触发事件:触发计数开始与停止,计数器初始化或外部触发事件
✓
输入捕捉事件
✓
输出比较事件
✓
刹车输入有效事件
⚫
外部时钟的触发计数
⚫
前沿消隐
fMASTER/DIV
CLOCK/TRIGGER CONTROLLER
TRC
Clock/reset/enable
TIME BASE UNIT
Repetition
counter
CK_CNT
UP-DOWN COUNTER
CK_PSC
Auto-reload register
Prescaler
CAPTURE COMPARE ARRAY
CC1I UEV
TIM1_CH1
IC1
TI1
Prescaler
IC1PS
Capture/Compare 1 Register
OC1
OC1REF
OC1N
TIM1_CH1
TIM1_CH1N
CC2I UEV
TIM1_CH2
IC2
TI2
Prescaler
INPUT
STAGE
TIM1_CH3
TI3
IC2PS
Capture/Compare 2 Register
OC2REF
OUTPUT
STAGE
CC3I UEV
IC3
Prescaler
IC3PS
OC2
Capture/Compare 3 Register
OC3REF
OC2N
OC3
OC3N
TIM1_CH2
TIM1_CH2N
TIM1_CH3
TIM1_CH3N
CC4I UEV
TIM1_CH4
TI4
IC4
Prescaler
IC4PS
Capture/Compare 4 Register
OC4REF
OC4
TIM1_BKIN
图 9-1
Rev2.02
- 57 -
TIM1 原理框图
2021-10-29
TIM1_CH4
Fremont Micro Devices
9.2.
FT62F08x
Timer1 相关寄存器汇总
名称
地址
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
复位值
PCKEN
0x9A
TKEN
I2CEN
UARTEN
SPIEN
TIM4EN
TIM2EN
TIM1EN
ADCEN
0000 0000
CKOCON
0x95
SYSON
CCORDY
CCOEN
0010 0000
T1CEN
0000 0000
DTYSEL
TIM1CR1
0x211
T1ARPE
TIM1SMCR
0x213
-
TIM1IER
0x215
T1BIE
T1TIE
-
TIM1SR1
0x216
T1BIF
T1TIF
TIM1SR2
0x217
-
-
TIM1EGR
0x218
T1BG
-
-
TIM1CCMR1
(output mode)
TIM1CCMR1
(input mode)
TIM1 CCMR2
(output mode)
TIM1CCMR2
(input mode)
TIM1CCMR3
(output mode)
TIM1CCMR3
(input mode)
TIM1CCMR4
(output mode)
TIM1CCMR4
(input mode)
T1CMS[1:0]
CCOSEL[2:0]
T1DIR
T1TS[2:0]
T1URS
T1UDIS
T1SMS[2:0]
-
-000 -000
T1CC4IE
T1CC3IE
T1CC2IE
T1CC1IE
T1UIE
00-0 0000
-
T1CC4IF
T1CC3IF
T1CC2IF
T1CC1IF
T1UIF
00-0 0000
-
T1CC4OF T1CC3OF T1CC2OF T1CC1OF
-
---0 000-
-
0--0 000-
T1CC4G
T1OC1M[2:0]
-
T1OPM
T1CC3G
T1CC2G
T1CC1G
T1OC1PE
-
T1CC1S[1:0]
-000 0-00
T1IC1PSC[1:0]
T1CC1S[1:0]
0000 0000
-
T1CC2S[1:0]
-000 0-00
T1IC2PSC[1:0]
T1CC2S[1:0]
0000 0000
-
T1CC3S[1:0]
-000 0-00
T1IC3PSC[1:0]
T1CC3S[1:0]
0000 0000
-
T1CC4S[1:0]
-000 0-00
T1IC4PSC[1:0]
T1CC4S[1:0]
0000 0000
0x219
T1IC1F[3:0]
T1OC2M[2:0]
-
T1OC2PE
0x21A
T1IC2F[3:0]
T1OC3M[2:0]
-
T1OC3PE
0x21B
T1IC3F[3:0]
T1OC4M[2:0]
-
T1OC4PE
0x21C
T1IC4F[3:0]
TIM1CCER1
0x21D
TIM1CCER2
0x21E
TIM1CNTRH
0x28C
T1CC2NP T1CC2NE
-
-
T1CC2P
T1CC2E
T1CC1NP T1CC1NE
T1CC1P
T1CC1E 0000 0000
T1CC4P
T1CC4E
T1CC3NP T1CC3NE
T1CC3P
T1CC3E
--00 0000
T1CNT[15:8]
0000 0000
TIM1CNTRL
0x28D
T1CNT[7:0]
0000 0000
TIM1PSCRH
0x28E
T1PSC[15:8]
0000 0000
TIM1PSCRL
0x28F
T1PSC[7:0]
0000 0000
TIM1ARRH
0x290
T1ARR[15:8]
1111 1111
TIM1ARRL
0x291
T1ARR[7:0]
1111 1111
TIM1RCR
0x292
T1REP[7:0]
0000 0000
TIM1CCR1H
0x293
T1CCR1[15:8]
0000 0000
TIM1CCR1L
0x294
T1CCR1[7:0]
0000 0000
TIM1CCR2H
0x295
T1CCR2[15:8]
0000 0000
TIM1CCR2L
0x296
T1CCR2[7:0]
0000 0000
TIM1CCR3H
0x297
T1CCR3[15:8]
0000 0000
TIM1CCR3L
0x298
T1CCR3[7:0]
0000 0000
TIM1CCR4H
0x299
T1CCR4[15:8]
0000 0000
TIM1CCR4L
0x29A
TIM1BKR
0x29B
TIM1DTR
0x29C
TIM1OISR
0x29D
-
LEBCON
0x41C
LEBEN
T1CCR4[7:0]
T1MOE
T1AOE
T1BKP
T1BKE
T1OSSR
0000 0000
T1OSSI
T1LOCK[1:0]
T1DTG[7:0]
T1OIS4
T1OIS3N
LEBCH[1:0]
表 9-1
T1OIS3
T1OIS2N
-
EDGS
0000 0000
T1OIS2
T1OIS1N
T1OIS1
BKS[2:0]
Timer1 相关用户寄存器汇总
注意:TIM1 寄存器中的保留位必须保持为复位值,不能更改,否则可能出现预想不到的情况
Rev2.02
- 58 -
0000 0000
2021-10-29
-000 0000
000- 0000
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
复位值
高8位
TIM1CNTRH[7:0]
0x28C
RW−0000 0000
低8位
TIM1CNTRL[7:0]
0x28D
RW−0000 0000
高8位
TIM1PSCRH[7:0]
0x28E
RW−0000 0000
低8位
TIM1PSCRL[7:0]
0x28F
RW−0000 0000
T1CNT
TIM1 计数值
T1PSC
TIM1 预分频器
高8位
TIM1ARRH[7:0]
0x290
RW−1111 1111
T1ARR
输出比较模式:PWM 周期的自动重装载
寄存器(预装载值)
注:此值为 0 时,计数器不工作;
低8位
TIM1ARRL[7:0]
0x291
RW−1111 1111
TIM1RCR[7:0]
0x292
RW−0000 0000
T1REP
T1CCR1
T1CCR2
T1CCR3
T1CCR4
重复向下计数值
输出比较模式:TIM1_CH1 占空比
高8位
TIM1CCR1H[7:0]
0x293
RW−0000 0000
(预装载值)
低8位
TIM1CCR1H[7:0]
0x294
RW−0000 0000
输入捕获模式:上一次捕获事件(IC1)
高8位
TIM1CCR1L[7:0]
0x293
RO−0000 0000
捕获的计数值
低8位
TIM1CCR1L[7:0]
0x294
RO−0000 0000
输出比较模式:TIM1_CH2 占空比
高8位
TIM1CCR2H[7:0]
0x295
RW−0000 0000
(预装载值)
低8位
TIM1CCR2L[7:0]
0x296
RW−0000 0000
输入捕获模式:上一次捕获事件 (IC2)
高8位
TIM1CCR2H[7:0]
0x295
RO−0000 0000
捕获的计数值
低8位
TIM1CCR2L[7:0]
0x296
RO−0000 0000
输出比较模式:TIM1_CH3 占空比
高8位
TIM1CCR3H[7:0]
0x297
RW−0000 0000
(预装载值)
低8位
TIM1CCR3L[7:0]
0x298
RW−0000 0000
输入捕获模式:上一次捕获事件 (IC3)
高8位
TIM1CCR3H[7:0]
0x297
RO−0000 0000
捕获的计数值
低8位
TIM1CCR3L[7:0]
0x298
RO−0000 0000
输出比较模式:TIM1_CH4 占空比
高8位
TIM1CCR4H[7:0]
0x299
RW−0000 0000
(预装载值)
低8位
TIM1CCR4L[7:0]
0x29A
RW−0000 0000
输入捕获模式:上一次捕获事件 (IC4)
捕获的计数值
高8位
TIM1CCR4H[7:0]
0x299
RO−0000 0000
低8位
TIM1CCR4L[7:0]
0x29A
RO−0000 0000
表 9-2
Rev2.02
Timer1 周期相关寄存器
- 59 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
TIM1EN
SYSON
状态
TIM1 模块时钟
寄存器
1 = 使能
0 = 关闭
睡眠模式下,系统时钟控
1 = 使能
制
0 = 关闭
地址
复位值
PCKEN[1]
0x9A
RW-0
CKOCON[7]
0x95
RW−0
TCKSRC[2:0]
0x31F
RW−000
TIM1 时钟源 (Fmaster)
T1CKSRC
000 = Sysclk
100 = 2x (XT or EC) (*)
001 = HIRC
101 = LIRC
010 = XT or EC (*)
110 = LP or EC (*)
011 = 2x HIRC
111 = 2x (LP or EC) (*)
(*) FOSC
需相应配置成 LP/XT/EC 模式或 INTOSCIO
模式,否则振荡器将不会运行。
PWM 周期的自动预装载
T1ARPE
1 = 使能
(T1ARR 预装载值在更新事件到来时被加载)
TIM1CR1[7]
RW−0
TIM1CR1[6:5]
RW−00
0 = 禁止 (T1ARR 立即被加载)
计数器对齐模式
00 = 边沿对齐模式 (计数方向由 T1DIR 决定)
01 = 中央对齐模式 1 (向下计数时 T1CCxIF 置 1)
10 = 中央对齐模式 2 (向上计数时 T1CCxIF 置 1)
T1CMS
11 = 中央对齐模式 3 (向上和向下计数时 T1CCxIF
均置 1)
注:
0x211
1. 中央对齐模式为计数器交替地向上和向下计数。
2. 计数器关闭后(T1CEN=0),才允许切换模式。
计数器计数方向 (中央对齐模式时,该位只读)
T1DIR
1 = 向下
TIM1CR1[4]
RW−0
TIM1CR1[3]
RW−0
TIM1CR1[2]
RW−0
0 = 向上
单脉冲模式
T1OPM
1 = 使能 (下一次更新事件到来时,T1CEN 自动清零,
计数器停止)
0 = 关闭 (发生更新事件时,计数器不停止)
当 T1UDIS = 0 时,更新事件中断源
T1URS
1 = 计数器上溢/下溢
0 = 计数器上溢/下溢, 或复位触发事件
Rev2.02
- 60 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
产生更新事件控制
T1UDIS
1 = 禁止
TIM1CR1[1]
RW−0
TIM1CR1[0]
RW−0
TIM1SMCR[6:4]
RW−000
0 = 允许
TIM1 计数器
T1CEN
1 = 使能 (此时门控模式才能工作)
0 = 关闭
同步计数器的触发输入源
0xx = 保留
100 = TI1 的边沿检测器 (TI1F_ED)
101 = 滤波后的定时器输入 1 (TI1FP1)
T1TS
110 = 滤波后的定时器输入 2 (TI2FP2)
111 = 禁止配置
注:
1. 仅在 T1SMS = 000 时可更改这些位;
2. 通道 3/4 的输入只能用作对应通道的捕捉源,而不
能作为触发源;
触发模式
000 = 内部时钟
0x213
100 = 复位模式
(在触发输入有效沿时重新初始化计数器和预分
频器)
101 = 门控模式
(计数器在触发输入有效电平期间计数,无效电
T1SMS
平则停止计数,但不复位)
TIM1SMCR[2:0]
110 = 触发模式
(计数器在触发输入有效沿时计数,且不复位)
其它 = 保留
注:
1.
门控模式不能选择 TI1F_ED 触发输入;
2.
触发输入有效沿的极性参阅 T1CC1P/T1CC2P;
表 9-3
Rev2.02
Timer1 相关用户控制寄存器
- 61 -
2021-10-29
RW−000
Fremont Micro Devices
FT62F08x
bit7
bit6
bit5
bit4
bit3
bit2
bit1
Bit0
名称
地址
TIM1CCMR1
0x219
T1IC1F[3:0]
T1IC1PSC[1:0]
T1CC1S[1:0]
RW-0000 0000
TIM1CCMR2
0x21A
T1IC2F[3:0]
T1IC2PSC[1:0]
T1CC2S[1:0]
RW-0000 0000
TIM1CCMR3
0x21B
T1IC3F[3:0]
T1IC3PSC[1:0]
T1CC3S[1:0]
RW-0000 0000
TIM1CCMR4
0x21C
T1IC4F[3:0]
T1IC4PSC[1:0]
T1CC4S[1:0]
RW-0000 0000
名称
状态
寄存器
复位值
地址
复位值
通道 x 输入捕获采样频率和数字滤波器长度
Value
T1ICxF
采样频率
(fSAMPLING)
数字滤波器
长度 N
0000
Fmaster
0
0001
Fmaster
2
0010
Fmaster
4
0011
Fmaster
8
0100
Fmaster / 2
6
0101
Fmaster / 2
8
0110
Fmaster / 4
6
0111
Fmaster / 4
8
1000
Fmaster / 8
6
1001
Fmaster / 8
8
1010
Fmaster / 16
5
1011
Fmaster / 16
6
1100
Fmaster / 16
8
1101
Fmaster / 32
5
1110
Fmaster / 32
6
1111
Fmaster / 32
8
TIM1CCMRx[6:4]
x = 1, 2, 3, 4
RW−0000
0x219/
0x21A/
0x21B/
0x21C
通道 x 输入捕获预分频器 (几个事件触发一次捕获)
T1ICxPSC
00 = 1 个
10 = 4 个
01 = 2 个
11 = 8 个
TIM1CCMRx[3:2]
RW−00
注: 当 T1CCxE = 0 时,该预分频器复位为 00
00 = 输出
T1CC1S
1
通道 1
01 = 输入, 输入脚映射在 TI1FP1
模式选择
10 = 输入, 输入脚映射在 TI2FP1
TIM1CCMR1[1:0]
0x219
11 = 保留
1
仅在通道 x 关闭 (T1CCxE = 0 和 T1CCxNE = 0) 时可写。
Rev2.02
- 62 -
2021-10-29
RW−00
Fremont Micro Devices
FT62F08x
00 = 输出
T1CC2S
2
通道 2
01 = 输入, 输入脚映射在 TI2FP2
模式选择
10 = 输入, 输入脚映射在 TI1FP2
TIM1CCMR2[1:0]
0x21A
RW−00
TIM1CCMR3[1:0]
0x21B
RW−00
TIM1CCMR4[1:0]
0x21C
RW−00
11 = 保留
00 = 输出
T1CC3S 2
通道 3
01 = 输入, 输入脚映射在 TI3FP3
模式选择
10 = 输入, 输入脚映射在 TI4FP3
11 = 保留
00 = 输出
T1CC4S 2
通道 4
01 = 输入, 输入脚映射在 TI3FP4
模式选择
10 = 输入, 输入脚映射在 TI4FP4
11 = 保留
表 9-4
名称
地址
bit7
TIM1CCMR1
0x219
−
TIM1CCMR2
0x21A
TIM1CCMR3
TIM1CCMR4
TIM1CCMRx 作为输入配置寄存器
bit6
bit5
bit4
bit3
bit2
bit1
Bit0
T1OC1M[2:0]
T1OC1PE
−
T1CC1S[1:0]
RW−-000 0-00
−
T1OC2M[2:0]
T1OC2PE
−
T1CC2S[1:0]
RW−-000 0-00
0x21B
−
T1OC3M[2:0]
T1OC3PE
−
T1CC3S[1:0]
RW−-000 0-00
0x21C
−
T1OC4M[2:0]
T1OC4PE
−
T1CC4S[1:0]
RW−-000 0-00
复位值
T1OCxM
通道 x 输出比较模式
OCxREF (输出参考信号)
000
冻结 (不比较)
禁止
001
当 TIM1_CNT = CCRx_SHAD 时
1
010
当 TIM1_CNT = CCRx_SHAD 时
0
011
当 TIM1_CNT = CCRx_SHAD 时
电平翻转
100
强制为无效电平
0
101
强制为有效电平
1
110
PWM1 模式
111
PWM2 模式
TIM1_CNT < CCRx_SHAD
1
TIM1_CNT > CCRx_SHAD
0
TIM1_CNT < CCRx_SHAD
0
TIM1_CNT > CCRx_SHAD
1
1. OCxREF 与 T1CCxP 共同决定输出引脚 OCx 的值;
2. PWM 模式下比较结果改变时,或输出比较模式下从冻结模式切换到 PWM 模式时,OCxREF 电平才会改
变;
表 9-5
2
T1OCxM 配置为输出比较模式
仅在通道 x 关闭 (T1CCxE = 0 和 T1CCxNE = 0) 时可写。
Rev2.02
- 63 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
通道 x 输出比较占空比的自动预装载
1 = 使能
T1OCxPE
(T1CCRx 预装载值在更新事件到来时被加载)
0 = 禁止 (T1CCRx 立即被加载)
复位值
0x219/
TIM1CCMRx[3]
0x21A/
x = 1, 2, 3, 4
0x21B/
RW−0
0x21C
注:PWM 模式下必须使能,单脉冲模式可选
00 = 输出
T1CC1S
3
通道 1 模式选择
01 = 输入, 输入脚映射在 TI1FP1
10 = 输入, 输入脚映射在 TI2FP1
TIM1CCMR1[1:0]
0x219
RW−00
TIM1CCMR2[1:0]
0x21A
RW−00
TIM1CCMR3[1:0]
0x21B
RW−00
TIM1CCMR4[1:0]
0x21C
RW−00
11 = 保留
00 = 输出
T1CC2S 3
通道 2 模式选择
01 = 输入, 输入脚映射在 TI2FP2
10 = 输入, 输入脚映射在 TI1FP2
11 = 保留
00 = 输出
T1CC3S 3
通道 3 模式选择
01 = 输入, 输入脚映射在 TI3FP3
10 = 输入, 输入脚映射在 TI4FP3
11 = 保留
00 = 输出
T1CC4S 3
通道 4 模式选择
01 = 输入, 输入脚映射在 TI3FP4
10 = 输入, 输入脚映射在 TI4FP4
11 = 保留
表 9-6
3
TIM1CCMRx 作为输出配置寄存器
仅在通道 x 关闭 (T1CCxE = 0 和 T1CCxNE = 0) 时可写。
Rev2.02
- 64 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
地址
复位值
TIM1CCER1
T1CC2NP
T1CC2NE
T1CC2P
T1CC2E
T1CC1NP
T1CC1NE
T1CC1P
T1CC1E
0x21D
RW-0000 0000
TIM1CCER2
−
−
T1CC4P
T1CC4E
T1CC3NP
T1CC3NE
T1CC3P
T1CC3E
0x21E
RW---00 0000
名称
功能
输出比较模式
输入捕获/触发模式
1 = 捕获 / 触发发生在 TIxF
T1CCxP
通道 x 引脚
1 = OCx 低电平有效
输出极性选择
0 = OCx 高电平有效
低电平或下降沿
0 = 捕获 / 触发发生在 TIxF
高电平或上升沿
注:输入触发源仅可选通道 1 和 2
T1CCxE
T1CCxNP
T1CCxNE
通道 x 引脚
1 = 使能 (OCx 输出到对应的引脚)
使能
0 = 禁止
通道 x 互补引脚
1 = OCxN 低电平有效
输出极性选择
0 = OCxN 高电平有效
通道 x 互补引脚
1 = 使能 (OCxN 输出到对应的引脚)
使能
0 = 关闭
1 = 使能 (捕获计数器的值到
TIM1CCRx 寄存器中)
0 = 禁止
−
−
注:通道输出电平由 T1MOE, T1OSSI, T1OSSR, T1OISx, T1OISxN, T1CCxE 和 T1CCxNE 位的值共同决
定,参阅表 9-10。
表 9-7
名称
TIM1_CH1
Timer1 通道输出和极性选择
状态
通道 1 输出重映射
寄存器
1 = PD1
0 = PA0
地址
AFP0[6]
复位值
RW−0
0x19E
TIM1_CH1N
通道 1 互补输出重映射
1 = PC7
0 = PC0
AFP0[4]
RW−0
TIM1_CH2
通道 2 输出重映射
1 = PD2
0 = PA1
AFP1[0]
0x19F
RW−0
TIM1_CH2N
通道 2 互补输出重映射
1 = PC6
0 = PA3
AFP0[3]
0x19E
RW−0
TIM1_CH3
通道 3 输出重映射
1 = PD3
0 = PB4
AFP1[1]
0x19F
RW−0
TIM1_CH3N
通道 3 互补输出重映射
1 = PC5
0 = PB0
AFP0[2]
0x19E
RW−0
TIM1_CH4
通道 4 输出重映射
1 = PD5
0 = PB1
AFP1[5]
RW−0
0x19F
TIM1_BKIN
表 9-8
Rev2.02
1 = PD4
故障源刹车输入重映射
0 = PB3
AFP1[3]
RW−0
Timer1 管脚功能重映射寄存器
- 65 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
控制
寄存器
地址
复位值
主输出控制 (仅对配置为输出的通道有效)
T1MOE
4
1 = 使能 (若 T1CCxE= 1, 则使能 OC 和 OCN 输出)
TIM1BKR[7]
RW−0
TIM1BKR[6]
RW−0
TIM1BKR[5]
RW−0
TIM1BKR[4]
RW−0
0 = 禁止 (禁止 OC 和 OCN 输出或强制为空闲状态)
自动输出控制
1 = T1MOE 在下一个更新事件到来时被自动置 1(当刹
T1AOE
车输入无效时) 或由软件置 1
0 = T1MOE 只能由软件置 1
故障源 TIM1_BKIN 刹车输入极性
T1BKP
1 = 高电平有效
0 = 低电平有效
刹车输入(BRK)功能
T1BKE
1 = 使能
0 = 禁止
运行模式下(当 T1MOE = 1 时)输出“关闭状态”选择
T1OSSR
详情请见表 9-10
Timer1 输出控制和状态”
空闲模式下(当 T1MOE=0 时)输出“关闭状态”选择
T1OSSI
详情请见表 9-10
Timer1 输出控制和状态”
0x29B
TIM1BKR[3]
RW−0
TIM1BKR[2]
RW−0
TIM1BKR[1:0]
RW−00
锁定设置 (写保护,防止软件错误)
T1LOCK
5
00
01
10
11
关闭
锁定级别 1
锁定级别 2
锁定级别 3
寄存
T1BKE,
包含级别 1,
包含级别 2,
器无
T1BKP,
T1CCxP,
T1OCxM,
写保
T1AOE,
T1CCxNP,
T1OCxPE
T1OISx,
T1OSSR,
T1OISxN,
T1OSSI
护
T1DTG
表 9-9
Timer1 主输出使能、刹车和锁定级别寄存器
4
当刹车输入有效时,该位将被硬件异步清 0。
5
系统复位后只能写一次 LOCK 位,一旦写入则其内容保持不变直至复位。
Rev2.02
- 66 -
2021-10-29
Fremont Micro Devices
FT62F08x
控制位
T1MOE
1
0
T1OSSI
输出状态
T1OSSR
T1CCxE
T1CCxNE
OCx 输出状态
OCxN 输出状态
0
0
0
OCx = 0 (输出关闭)
OCxN = 0 (输出关闭)
0
0
1
OCx = 0 (输出关闭)
0
1
0
0
1
1
OCxREF + 极性 + 死区
OCxREF 的互补信号 + 极性 + 死区
1
0
0
OCx = T1CCxP (输出关闭)
OCxN =T1CCxNP (输出关闭)
1
0
1
关闭状态(运行模式下输出使能)
OCxREF + 极性
OCx = T1CCxP
OCxN = OCxREF ^ T1CCxNP
1
1
0
OCxREF + 极性
关闭状态(运行模式下输出使能)
OCx = OCxREF ^ T1CCxNP
OCxN =T1CCxNP
1
1
1
OCxREF + 极性 + 死区
OCxREF 的互补信号 + 极性 + 死区
0
0
0
OCx = T1CCxP (输出关闭)
OCxN = T1CCxNP (输出关闭)
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
OCxREF + 极性
OCx = OCxREF ^ T1CCxNP
OCxREF + 极性
OCxN = OCxREF ^ T1CCxNP
OCxN = 0 (输出关闭)
x
x
表 9-10
Rev2.02
(输出关闭)
OCx = T1OISx, OCxN = T1OISxN
OCx = T1CCxP (输出关闭)
OCxN = T1CCxNP (输出关闭)
关闭状态(空闲模式下输出使能)
OCx = T1OISx, OCxN = T1OISxN
Timer1 输出控制和状态
- 67 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
控制
寄存器
地址
TIM1DTR[7:0]
0x29C
复位值
死区发生器设置
T1DTG[7:5]
T1DTG
DT(死区持续时间)
tDTG
0xx
T1DTG[7:0] x tDTG
TFmaster (f1)
10x
(64+T1DTG[5:0]) x tDTG
2 x TFmaster (f2)
110
(32+T1DTG[4:0]) x tDTG
8 x TFmaster (f3)
111
(32+T1DTG[4:0]) x tDTG
16 x TFmaster (f4)
* TFmaster 为 TIM1 时钟源
若 TFmaster =125 ns (8 MHz)时,死区时间如下:
T1DTG[7:0]
死区时间 (μs)
RW−0000
0000
步长时间
0 ~ 7Fh
0 ~ 15.875
125 ns
(f1)
80h ~ BFh
16 ~ 31.75
250 ns
(f2)
C0h ~ DFh
E0h ~ FFh
32 ~ 63
1 μs
(f3)
64 ~ 126
2 μs
(f4)
表 9-11 Timer1 互补输出死区时间配置
名称
状态
寄存器
地址
复位值
当 T1MOE=0 时,通道 4(OC4) 空闲状态输出
T1OIS4
1 = OC4 输出 1
TIM1OISR[6]
RW−0
RW−0
0 = OC4 输出 0
T1OIS3
当 T1MOE=0 时,通道 3/2/1(OCx) 空闲状态输出
TIM1OISR[4]
T1OIS2
1 = 死区时间后,OCx 输出 1
TIM1OISR[2]
T1OIS1
0 = 死区时间后,OCx 输出 0
TIM1OISR[0]
RW−0
T1OIS3N
当 T1MOE=0 时,互补通道 3/2/1(OCxN) 空闲状态输出
TIM1OISR[5]
RW−0
T1OIS2N
1 = 死区时间后,OCxN 输出 1
TIM1OISR[3]
RW−0
T1OIS1N
0 = 死区时间后,OCxN 输出 0
TIM1OISR[1]
RW−0
0x29D
表 9-12 Timer1 通道输出空闲状态寄存器
Rev2.02
- 68 -
2021-10-29
RW−0
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
复位值
前沿消隐
1 = 使能
LEBEN
0 = 关闭
LEBCON[7]
RW−0
LEBCON[6:5]
RW−00
注:必须在 GO/DONE=0 时进行切换,否则 ADC 结
果不确定;
前沿消隐通道
LEBCH
00 = TIM1_CH1
10 = TIM1_CH3
01 = TIM1_CH2
11 = TIM1_CH4
0x41C
PWM 消隐沿
EDGS
1 = PWM 下降沿
LEBCON[3]
RW−0
LEBCON[2:0]
RW−000
0 = PWM 上升沿
TIM1 的故障源
000 = 关闭
BKS
001 = BKIN 管脚
010 = LVD 检测
100 = ADC 阈值比较
表 9-13
名称
LEB 用户寄存器
状态
寄存器
地址
复位值
全局中断
1 = 使能
GIE
(PEIE, T1BIE, T1BG, T1TIE, T1CCxIE,
INTCON[7]
RW−0
T1CCxG, T1UIE 适用)
Bank
0 = 全局关闭 (唤醒不受影响)
首地址
外设总中断
+0x0B
1 = 使能
PEIE
(T1BIE, T1BG, T1TIE, T1CCxIE, T1CCxG,
INTCON[6]
RW−0
T1UIE 适用)
0 = 关闭 (无唤醒)
T1BIE
T1BG
6
刹车中断
1 = 使能
TIM1IER[7]
0x215
RW−0
刹车软件中断
0 = 关闭
TIM1EGR[7]
0x218
WO−0
TIM1SR1[7]
0x216
R_W1C−0
刹车中断标志位
T1BIF
7
1 = 刹车输入上检测到有效电平
0 = 无刹车事件产生
6
7
软件置 1, 硬件自动清 0。
写 1 清 0,写 0 无效。建议只使用 STR、MOVWI 指令进行写操作,而不要用 BSR 或 IOR 指令。
Rev2.02
- 69 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
触发中断
T1TIE
1 = 使能
TIM1IER[6]
0x215
RW−0
TIM1SR1[6]
0x216
R_W1C−0
0 = 关闭
触发中断标志位
T1TIF
8
1 = 已触发
0 = 无触发事件产生
T1CC4IE
通道 4 捕获/比较中断
TIM1IER[4]
T1CC3IE
通道 3 捕获/比较中断
TIM1IER[3]
T1CC2IE
通道 2 捕获/比较中断
TIM1IER[2]
T1CC1IE
通道 1 捕获/比较中断
1 = 使能
TIM1IER[1]
RW−0
通道 4 捕获/比较软件中断
0 = 关闭
TIM1EGR[4]
WO−0
T1CC4G
9
RW−0
0x215
RW−0
RW−0
T1CC3G 9
通道 3 捕获/比较软件中断
TIM1EGR[3]
T1CC2G 9
通道 2 捕获/比较软件中断
TIM1EGR[2]
T1CC1G 9
通道 1 捕获/比较软件中断
TIM1EGR[1]
WO−0
TIM1SR1[4]
R_W1C−0
TIM1SR1[3]
R_W1C−0
T1CC4IF 8
通道 x 捕获/比较中断标志位
•
输出模式:
0x218
WO−0
WO−0
1 = CNT 值与 T1CCRx 值匹配
T1CC3IF
8
T1CC2IF 8
T1CC1IF 8
0 = 不匹配
注:若 T1CCRx>T1ARR,则当 CNT 计数到 T1ARR
值时,T1CCxIF 置 1。
•
输入模式:
1 = 计数器值已被捕获至 TIM1CCR
0 = 无捕获产生
R_W1C−0
TIM1SR1[1]
R_W1C−0
R_W1C−0
通道 x 重复捕获标志位
TIM1SR2[4]
T1CC3OF 8
1 = 发生重复捕获 (计数器的值被捕获到 TIM1CCRx
TIM1SR2[3]
寄存器时,T1CCxIF 的状态已经为 1)
TIM1SR2[2]
R_W1C−0
0x217
T1CC1OF 8
注:仅通道配置位捕获输入时有效
T1UIE
允许更新中断
T1UIF 8
更新中断标志位
1 = 使能
0 = 关闭
1 = 更新事件等待响应
0 = 无更新事件
TIM1SR2[1]
R_W1C−0
TIM1IER[0]
0x215
RW−0
TIM1SR1[0]
0x216
R_W1C−0
Timer1 中断使能和状态位
写 1 清 0,写 0 无效。建议只使用 STR、MOVWI 指令进行写操作,而不要用 BSR 或 IOR 指令。
软件置 1,硬件自动清 0。
Rev2.02
R_W1C−0
0 = 无重复捕获
表 9-14
9
TIM1SR1[2]
T1CC4OF 8
T1CC2OF 8
8
0x216
- 70 -
2021-10-29
Fremont Micro Devices
9.3.
FT62F08x
功能描述
整个 TIM1 可以分为三个大的功能部分:计数基本单元、计数控制和捕捉比较通道。计数基本单元分为向
上/向下计数器、自动加载寄存器、重复计数器和预分频器;计数控制器又分为计数触发源,模式控制;
捕捉比较通道分为捕捉输入通道,输出比较通道,死区产生和输出控制。
9.3.1.
计数基本单元
UEV
TIM1_ARRH,ARRL
Auto-reload register
CK_CNT
CK_PSC
16-bit Counter
Prescaler
TIM1_PSCRH,PSCRL
TIM1_RCR
Repetition counter register
Repetition
counter
UIF
UEV
TIM1_CNTRH,CNTRL
图 9-2
计数基本单元
16 位计数器,预分频器,自动重载寄存器和重复计数寄存器都能由软件进行读写。
9.3.1.1. 计数基本单元组成
9.3.1.1.1. 16 位计数器的读写
⚫
TIM1CNTRH/L 能在任何时候进行写操作;但是建议不要在计数器运行的时候进行写操作,以免出
现不正确的中间状态,
⚫
TIM1CNTRH/L 的写操作是没有顺序限制的;可以先写高位也可以先写低位
⚫
TIM1CNTRH/L 能在任何时候进行读操作;但是因为此设计是异步设计,所以在计数器运行期间进
行读操作可能读出不正确的数值,需要读两次,比较两次数值是否一致;如果一致,则读出的数值
是正确的数值;否则,读出数值是错误的。
9.3.1.1.2. 预分频器
计数时钟可以进行 16bit 的时钟预分频,分频系数为 1~65536。计算计数器时钟分频的公式,如下:
fCK_CNT = Fmaster / ( PSCR[15:0] + 1 )
(PSCR 为实际装入预分频器影子寄存器的值)
预分频支持分频自动更新,即在更新事件发生后,能够自动改变预分频值。当 T1CEN 为 0 时,写入预分
频寄存器的值也能直接加载实际应用的预分频寄存器中。配置步骤示例如下:
1.
使能 TIM1 模块时钟并选择 TIM1 时钟源
2.
配置计数周期
3.
配置占空比
4.
配置预分频
5.
使能计数器
Rev2.02
- 71 -
2021-10-29
Fremont Micro Devices
FT62F08x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SFR CLK
TIMER CLK
COUNTER
0
1
2
3
SFR_CEN
CNT_CEN
T1ARR[15:0]
FF
T1CCRx[15:0]
35
0
1F
T1PSC[15:0]
0
1
图 9-3
预分频为 1 时的计数器计数时序图
注意:
配置时,需先将周期,占空比,模式等寄存器配置完成后,且在 T1CEN 使能之前,配置预分频寄存
器。
9.3.1.1.3. 自动重载寄存器
自动重载寄存器由一个预加载寄存器和一个影子寄存器组成。写自动重载寄存器的三种方式:
⚫
方式 1:计数器使能位打开,且周期预加载使能 (T1ARPE = 1)。在此模式下,写入自动重载寄存
器的值保存在预加载寄存器中,并在下一个更新事件到来时传送到影子寄存器中进行使用。如下图
所示:
1
2
3
4
5
6
7
8
9
10
11
SFR CLK
TIMER CLK
CNT_EN
COUNTER
FB
FC
FD
FE
FF
0
1
2
3
UEV
TIM1_ARRH/L
FF
35
Write a new value in TIM1_ARR
ARR_SHADH/L
FF
35
New value transferred in shadow
register on counter overflow
图 9-4
Rev2.02
T1CEN = 1 且 T1ARPE = 1,周期寄存器 (T1ARR) 加载图
- 72 -
2021-10-29
Fremont Micro Devices
⚫
FT62F08x
方式 2:计数器使能位打开,且周期预加载关闭 (T1ARPE=0)。在此模式下,写入自动重载寄存器
的数值直接传送到影子寄存器中进行使用。如下图所示:
1
2
3
4
5
6
7
8
9
10
11
SFR CLK
TIMER CLK
CNT_EN
COUNTER
32
34
33
35
0
1
2
3
UEV
TIM1_ARRH/L
FF
35
write a new value in TIM1_ARR
ARR_SHADH/L
FF
35
New value immediately in shadow reg
图 9-5
⚫
T1CEN = 1 且 T1ARPE = 0,周期寄存器 (T1ARR) 加载图
方式 3:当计数器使能位 (T1CEN) 关闭时,不管周期预加载 (T1ARPE) 使能还是关闭,写入自
动重载寄存器的数值直接传送到影子寄存器中进行使用。如下图所示:
1
2
3
4
5
6
7
8
9
10
11
SFR CLK
TIMER CLK
CNT_EN
COUNTER
TIM1_ARRH/L
3
FF
4
5
35
Write a new value in TIM1_ARR
ARR_SHADH/L
FF
35
New value immediately in shadow reg
图 9-6
Rev2.02
T1CEN = 0,周期寄存器 (T1ARR) 加载图
- 73 -
2021-10-29
6
Fremont Micro Devices
9.3.1.1.4.
FT62F08x
更新事件
更新事件产生的条件:
⚫
计数器上溢或下溢
⚫
配置为复位模式(仅在输入捕捉模式下)时,触发事件的到来
更新事件的影响:
⚫
影响 1:某些预加载的寄存器(具体寄存器可查看寄存器表格)在预加载使能的情况下都能被更新为
最新值。各类预加载寄存器的总结如下表所示:
在更新事件下,可进
TIMARRH/L
行预加载的寄存器
TIM1PSCRH/L
TIM1CCRxH/L
无使能位,预加载在计数器
T1ARPE
相应的预加载使能位
使能 (T1CEN=1) 时一直有
T1OCxPE
效
表 9-15
1
更新事件相关的预加载寄存器 vs 预加载使能位
2
3
4
5
6
7
8
9
10
11
SFR CLK
TIMER CLK
CNT_EN
COUNTER
32
33
34
35
0
1
UEV
T1ARR[15:0]
FF
ARR_SHAD
FF
35
35
T1CCRx[15:0]
8
CCRx_SHAD
8
1F
T1PSC[15:0]
0
PSC_SHAD
0
图 9-7
Rev2.02
1F
1
1
更新事件下,预加载寄存器的更新图
- 74 -
2021-10-29
Fremont Micro Devices
⚫
FT62F08x
影响 2:若 T1UDIS = 0,当产生更新事件时,更新标志位(T1UIF)被置位;反之,T1UDIS=1 时,
不产生更新事件,更新标志位 (T1UIF) 也不会被置位。如下图所示:
1
2
3
4
5
6
7
8
9
10
11
SFR CLK
TIMER CLK
CNT_EN
COUNTER
32
33
34
35
0
1
2
UEV
T1UDIS
T1UIF
图 9-8
更新事件下且 T1UDIS = 0,更新标志位变化图
⚫
影响 3:单次脉冲模式下,更新事件的到来会使计数器使能位 (T1CEN) 关闭,计数器停止计数。
关于单次脉冲模式的详细说明可查看章节 9.3.3.3 内容。
⚫
影响 4:故障事件撤消后,如果 T1AOE=1,PWM 将在更新事件后恢复正常输出。关于故障刹车事
件的详细说明可查看章节 9.3.5 内容。
Rev2.02
- 75 -
2021-10-29
Fremont Micro Devices
FT62F08x
9.3.1.2. 向上计数模式
TIMx_ARR
0
Overflow
Overflow
图 9-9
Overflow
Overflow
Time
向上计数模式
在向上计数模式中,计数器从 0 开始计数向上计数,计到 TIM1_ARR 寄存器所设数值。然后重新从 0
开始计数并产生一个计数器上溢事件;如果 T1UDIS 设为 0,那么还会产生一个更新事件 UEV。
9.3.1.3. 向下计数模式
TIMx_ARR
0
Underflow
Underflow
图 9-10
Underflow
Underflow
Time
向下计数模式
在向下计数模式中,计数器从 TIM1_ARR 寄存器设置的自动重载值开始向下计数,直到计到 0。然后重
新从自动重载值开始计数并产生一个计数器下溢事件;如果 T1UDIS 设为 0,那么还会产生一个更新事
件 UEV。
9.3.1.4. 中心对齐模式
TIMx_ARR
0
Overflow
图 9-11
Underflow
Overflow
Underflow
Time
Underflow
Time
中心对齐模式,T1DIR 初始化为 0
TIMx_ARR
0
Overflow
Underflow
Overflow
图 9-12 中心对齐模式,T1DIR 初始化为 1
Rev2.02
- 76 -
2021-10-29
Fremont Micro Devices
FT62F08x
在中心对齐模式中,计数器从 0 开始向上计数,计到自动重载值。此时会产生一个计数器上溢事件。然
后计数器开始向下计数计到 0,产生一个下溢事件。计数器不断地重复上述的计数过程。
中心对齐模式所需注意事项:
⚫
方向位(T1DIR)不能进行写操作。方向位会由硬件设置成当前计数器的计数方向
⚫
当在中心对齐模式下开始计数时,当前的配置会被使用 – 计数开始值为写入 TIM1CNTRH/L 中的
值,计数开始方向决定于写入 TIM1CR1 寄存器中的 T1DIR 位。注意 T1DIR 位和 T1CMS 值不能
被软件同时改写。
⚫
T1DIR 位在 T1CMS ≠ 00 时,为只读寄存器,无法进行写操作;所以如果想要配置计数器的初始
计数方向,需要先配置计数方向(T1DIR),再配置计数模式(TICMS)。
⚫
运行在中心对齐模式下时,不建议写计数器值(TIM1CNTRH/L),可能产生意想不到的结果。
如果写入计数器的值大于自动加载值(TIM1_CNT > T1ARR),计数方向可能不会进行更新。
如果写入计数器的值为 0 或为 T1ARR,计数方向会进行更新但更新事件(UEV)不会产生。
配置步骤示例:
1.
使能 TIM1 模块时钟,并选择 TIM1 时钟源
2.
配置计数周期预加载使能(T1ARPE=1)
3.
配置计数周期(T1ARR=06H),占空比
4.
配置初始计数方向为向上计数(T1DIR=0)
5.
配置计数模式为中央对齐模式 1(T1CMS=01)
6.
配置预分频(T1PSC=0)
7.
使能计数器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CLK_PSC
TIMER CLK
CNT_EN
COUNTER
4
3
2
1
0
2
1
3
4
5
6
5
4
3
UEV
T1ARR[15:0]
FF
ARR_SHAD
FF
6
6
图 9-13
Rev2.02
中心对齐模式下,计数时序图
- 77 -
2021-10-29
Fremont Micro Devices
FT62F08x
9.3.1.5. 重复向下计数器
重复计数器是 8bit 的向下计数器,会在每次 TIMER 上溢或下溢时-1;只有当重复向下计数器减到 0 时,
计数器上溢或下溢才会产生更新事件(UEV);使用重复计数器能够设定更新事件的频率,这在产生特定数
量 PWM 信号时非常有用,如下图所示。
重复向下计数器自减事件:
⚫
计数器向上计数模式下,每个计数上溢事件都会使重复计数器减 1。
⚫
计数器向下计数模式下,每个计数下溢事件都会使重复计数器减 1。
⚫
计数器中心对齐模式下,每个计数上溢或下溢事件都会使重复计数器减 1。
重复向下计数器是自动重载的,当发生了更新事件(UEV)时,会将 TIM1RCR 寄存器中的值自动重载到重
复向下计数器中。如下图所示:
RCR
0
2
1
0
2
1
UEV
TIM_CNT
0
OVERFLOW
OVERFLOW
OVERFLOW
OVERFLOW
OVERFLOW
TIME
图 9-14 T1REP = 2,重复计数器计数时序图
配置产生特定个数 PWM 信号的步骤示例:
1.
使能 TIM1 模块时钟并选择 TIM1 时钟源
2.
配置 TIM1 通道相对应的端口为输出端口
3.
开启更新事件中断
4.
配置计数周期(T1ARR),占空比(T1CCRx)
5.
需要开启周期预加载(T1ARPE)和占空比预加载功能(T1OCxPE)
6.
配置计数方向为向上计数(T1DIR=0)
7.
配置输出比较模式(T1OCxM=3’b111)为 PWM2 输出模式,并配置通道使能
8.
打开自动主输出使能(T1AOE=1)位
9.
使能计数器
10. 在更新事件中断中,重新更改计数周期,占空比等配置
以下是一段示例代码:
Rev2.02
BANKSEL
BSR
PCKEN
PCKEN,0
;
; 使能 TIM1 模块时钟
BANKSEL
INTCON
;
- 78 -
2021-10-29
Fremont Micro Devices
INT:
FT62F08x
LDWI
STR
H’C0’
INTCON
;
; 开启全局中断使能和外设中断使能
BANKSEL
LDWI
STR
TCKSRC
H’01’
TCKSRC
;
;
; 选择 TIM1 时钟源为 HIRC
BANKSEL
LDWI
STR
TRISA
H’FE’
TRISA
;
;
; 配置 PA0 为通道 1 的输出通道
BANKSEL
LDWI
STR
TIM1ARRL
H’1F’
TIM1ARRL
;
;
; 将输出波形周期配置为 32
LDWI
STR
H’10’
TIM1CCR1L
;
; 将输出波形占空比配置为 16
LDWI
STR
H’02’
TIM1RCR
;
; 将重复计数器配置为 2
BSR
TIM1BKR,6
; 打开自动主输出使能位
BANKSEL
LDWI
STR
TIM1CCMR1
H’70’
TIM1CCMR1
;
;
; 配置通道 1 为 PWM2 模式输出
BSR
TIM1IER,0
; 开启更新事件中断
LDWI
STR
H’01’
TIM1CCER1
;
; 使能通道 1
BANKSEL
LDWI
STR
TIM1CR1
H’81’
TIM1CR1
;
; 开启计数器计数使能位
; 开启计数器计数使能位和周期预加载使能位
BANKSEL
LDWI
STR
TIM1ARRL
H’14’
TIM1ARRL
;
;
; 将输出波形周期配置为 20
上述示例对应示意图:
0
RCR
2
1
0
2
1
UEV
T1ARR
New T1ARR
T1CCRx
0
TIME
Overflow
MOE
PWM
图 9-15 利用重复计数器输出 3 个特定的 PWM 的时序图
注意:
由于重复计数器只有在周期更新事件 (UEV) 发生时才重载 T1REP 值,对 TIM1_RCR 寄存器写入的新
值只在下次周期更新事件发生时才起作用,所以建议当配置 T1REP 不为 0 时,在第一个更新事件 (计
数器上溢或下溢) 之后再打开更新事件中断。
Rev2.02
- 79 -
2021-10-29
Fremont Micro Devices
9.3.2.
FT62F08x
计数控制器
Trigger
Controller
fMASTER
0
0
TGI
ITR
TRC
TRGI
From input stage
TI1F_ED
Clock/Trigger
Mode
Controller
Reset, Enable,
Up/Down, Count
CK_CNT
To Time Base Unit
TI1FP1
From input stage
图 9-16
TI2FP2
Encoder
Interface
时钟/触发控制器框图
时钟/触发控制器允许配置各种计数器时钟源,输入触发和输出触发。
9.3.2.1. 计数器时钟源
计数器的计数时钟 (CK_CNT) 可由 TCKSRC 寄存器进行选择,总共有以下 8 种时钟源:
⚫
系统时钟/主时钟
⚫
HIRC
⚫
XT 时钟/外部时钟
⚫
HIRC 的 2 倍频
⚫
XT 时钟/外部时钟的 2 倍频
⚫
LIRC
⚫
LP 时钟/外部时钟
⚫
LP 时钟/外部时钟的 2 倍频
Rev2.02
- 80 -
2021-10-29
Fremont Micro Devices
FT62F08x
CK_CNT
CK_PSC
CNT_EN
Counter
1
0
2
3
4
图 9-17 预分频为 1 时,计数器计数时序图
9.3.2.2. 计数触发源
计数触发源只能来自通道 1/2 对应的输入端口,来源与通道 1/2 的捕捉源的来源一致。通道 3/4 的输入只
能作为对应的通道捕捉源。关于捕捉源的详细描述可查看章节 9.3.3.1 内容。
当 T1SMS = 000 时,计数由内部时钟驱动,使能 T1CEN 即可触发计数。
仅当 T1SMS = 101 / 110 时 (Slave 模式下), 计数触发源有效, T1TS[2:0] 位 (TIM1CR1 寄存器) 提
供可选择的 3 种触发源如下:
⚫
输入源 T1 的边沿检测 (TI1F_ED);
⚫
滤波后的通道 1 输入 (TI1FP1);
⚫
滤波后的通道 2 输入 (FI2FP2);
9.3.2.3. 计数控制模式选择
TIM1 除了有向上计数、向下计数、中央对齐计数方式之外,还有 4 种计数控制模式,需要计数触发源的
配合使用;计数模式的选择由 TIM1SMCR 寄存器中的 T1SMS[2:0]去控制,下列是 4 种计数模式:
1.
内部时钟模式:
计数由内部时钟 (CK_CNT) 驱动。
2.
复位模式 (必须在输入捕捉模式下才能配置为此模式):
在选中的触发输入 (TRGI) 的上升沿时重新初始化计数器,并且产生一个更新寄存器的信号。
3.
门控模式 (T1SMS=3’b101):
当触发输入 (TRGI) 为高时,计数器的时钟开启。一旦触发输入变为低,则计数器停止( 但不
复位)。计数器的启动和停止都是受控的。
4.
触发模式 (T1SMS=3’b110):
计数器在触发输入 TRGI 的上升沿启动 (但不复位),只有计数器的启动是受控的。
Rev2.02
- 81 -
2021-10-29
Fremont Micro Devices
⚫
FT62F08x
内部时钟模式:
内部时钟 (CK_CNT) 模式下,在软件配置计数器使能 (T1CEN) 之后,计数器开始由内部时钟
(CK_CNT) 驱动下进行计数;如图 9-17 所示。
⚫
复位模式:
当触发输入事件到来时,计数器和计数器预分频都会被初始化。如果此时 T1URS 为 0 且 T1UDIS 也为
0,则会产生一个更新事件,同时所有的预加载寄存器都会被更新。
复位模式的步骤示例:
1. 配置输入捕捉寄存器的值 – 配置输入捕捉滤波器 T1IC1F=000;配置捕捉预分频器 T1IC1PSC=0
2. 将通道配置为输入捕捉通道 T1CC1S=01,并将 IC1 映射在 TI1FP1 上
3. 写 T1CC1P=0,选择检测触发上升沿的到来
4. 通过写 T1SMS=100,将 TIM1 配置为复位模式。同时写 T1TS=101,选择 TI1 为输入触发源
5. 置位 T1CEN,启动计数器
以下是一段示例代码:
BANKSEL
BSR
PCKEN
PCKEN,0
;
; 使能 TIM1 模块时钟
BANKSEL
LDWI
STR
TCKSRC
H’01’
TCKSRC
;
;
; 选择 TIM1 时钟源为 HIRC
BANKSEL
LDWI
STR
TRISA
H’FF’
TRISA
;
;
; PA0 为通道 1 的输入通道
BANKSEL
LDWI
STR
TIM1CCMR1
H’01’
TIM1CCMR1
;
;
; 配置通道 1 的 IC1 映射在 TI1FP1 上
LDWI
STR
LDWI
STR
H’54’
TIM1SMCR
H’01’
TIM1CCER1
;
; 配置 TIM1 为复位模式,触发源为 TI1FP1
;
; 使能通道 1 并且为上升沿触发
BANKSEL
BSR
TIM1CR1
TIM1CR1,0
;
; 开启计数器计数使能位
当 TI1 的上升沿到来时,计数器被清 0 并从 0 开始重新计数。与此同时与此同时,触发标志位 (TIF) 会
被置位,在触发中断使能的情况下还会产生一个中断请求。如下列示例对应时序图所示:
Rev2.02
- 82 -
2021-10-29
Fremont Micro Devices
FT62F08x
Capture edge
TI1
IC1
COUNTER
30
CCR1_SHAD
31
32
33
0
1
10
T1CCR1[15:0]
2
3
4
5
6
33
33
10
图 9-18 复位模式下,计数器计数时序图
⚫
门控模式:
依据选择的触发输入的电平值,计数器会被使能。此模式下,计数器的运行和停止都是受控的。
门控模式的步骤示例:
1. 使能 TIM1 模块时钟并选择 TIM1 时钟源
2. 配置输入捕捉寄存器的值 – 配置输入捕捉滤波器 T1IC1F=000;配置捕捉预分频器 T1IC1PSC=0
3. 将通道配置为输入捕捉通道 T1CC1S=01,并将 IC1 映射在 TI1FP1 上
4. 写 T1CC1P=1,选择检测输入低电平的到来
5. 通过写 T1SMS=101,将 TIM1 配置为门控模式。同时写 T1TS=101,选择 TI1 为输入源
6. 置位 T1CEN,使能计数器 (在门控模式下,需要开启 T1CEN;在此基础上,才能由输入源控制计
数器的运行与停止)
以下是一段示例代码:
BANKSEL
BSR
PCKEN
PCKEN,0
BANKSEL
LDWI
STR
TCKSRC
H’01’
TCKSRC
; 选择 TIM1 时钟源为 HIRC
BANKSEL
LDWI
STR
TRISA
H’FF’
TRISA
;
;
; PA0 为通道 1 的输入通道
BANKSEL
LDWI
STR
TIM1CCMR1
H’01’
TIM1CCMR1
; 配置通道 1 的 IC1 映射在 TI1FP1 上
LDWI
STR
H’55’
TIM1SMCR
;
; 配置 TIM1 为门控模式,触发源为 TI1FP1
LDWI
STR
H’03’
TIM1CCER1
;
; 使能通道 1 并且低电平输入为有效电平
Rev2.02
;
; 使能 TIM1 模块时钟
;
;
;
;
- 83 -
2021-10-29
Fremont Micro Devices
FT62F08x
BANKSEL
BSR
TIM1CR1
TIM1CR1,0
;
; 开启计数器计数使能位
BTSS
LJUMP
TIM1SR1,6
$-1
; 判断触发中断标志位是否为高
;
BCR
TIM1SR1,6
; 将触发中断标志位清零
当 TI1 为低电平时,计数器在内部时钟的驱动下进行计数;当 TI1 变为高电平时,计数器停止计数。触
发标志位 (T1TIF) 会在计数器启动或停止时被置位。如下列示例对应时序图所示:
TI1
同步时间
T1CEN
同步时间
CNT_EN
CK_CNT
COUNTER
30
31
32
34
33
35
36
37
38
39
T1TIF
write T1TIF=0
图 9-19 门控模式下,计数器计数时序图
⚫
触发模式:
依据选择的触发输入的电平值,计数器会被启动 (T1CEN 被置位)。
触发模式的步骤示例:
1. 使能 TIM1 模块时钟并选择 TIM1 时钟源
2. 配置输入捕捉寄存器的值 – 配置输入捕捉滤波器 T1IC2F = 000;配置捕捉预分频器 T1IC2PSC =
0
3. 将通道配置为输入捕捉通道 T1CC2S = 01,并将 IC2 映射在 TI2FP2 上
4. 写 T1CC2P = 0,选择检测触发上升沿的到来
5. 通过写 T1SMS = 110,将 TIM1 配置为触发模式。同时写 T1TS = 110,选择 TI2 为输入触发源
以下是一段示例代码:
BANKSEL
BSR
PCKEN
PCKEN,0
BANKSEL
LDWI
STR
TCKSRC
H’01’
TCKSRC
BANKSEL
LDWI
TRISA
H’FF’
Rev2.02
;
; 使能 TIM1 模块时钟
;
;
; 选择 TIM1 时钟源为 HIRC
;
;
- 84 -
2021-10-29
Fremont Micro Devices
FT62F08x
; PA1 为通道 2 的输入通道
STR
TRISA
BANKSEL
LDWI
STR
TIM1CCMR2
H’01’
TIM1CCMR2
; 配置通道 2 的 IC2 映射在 TI2FP2 上
LDWI
STR
H’66’
TIM1SMCR
;
; 配置 TIM1 为触发控制模式,触发源为 TI2FP2
LDWI
STR
H’10’
TIM1CCER1
;
; 使能通道 2 并且为上升沿触发
BANKSEL
BSR
TIM1CR1
TIM1CR1,0
;
;
;
; 开启计数器计数使能位
当 TI2 的上升沿到来时,计数器在内部时钟的驱动下启动计数,并且触发标志位 (T1TIF) 被置位。如
下列示例对应时序图所示:
TI2
同步时间
T1CEN
CNT_EN
CK_CNT
COUNTER
35
34
36
37
T1TIF
图 9-20
9.3.3.
触发模式下,计数器计数时序图
捕捉比较通道
Read CCR1H
write_in_progress
S
Read CCR1L R
read_in_progress
R
Capture/Compare Preload Register
compare_transfer
capture_transfer
output mode
CC1S[1]
CC1S[0]
ic1ps
CC1E
Capture/Compare Shadow Register
capture
CNT>CCR1
Counter
CC1G
TIMx_EGR
S write CCR1H
write CCR1L
CC1S[1]
CC1S[0]
OC1PE
UEV
from time
base unit
OC1PE
TIMx_CCMR1
CNT=CCR1
图 9-21 捕捉/比较通道 1 框图
TIMER 的 I/O 口能被配置为输入捕捉或输出比较功能。这个配置由 T1CCxS 通道选择位进行设定;对单
个通道而言,输入捕捉功能和输出比较功能是互斥的两个功能。但每个通道都有独立的配置寄存器,所
以可以将某些通道配置为输入捕捉功能,另一些通道配置为输出比较功能;例如:配置 T1CC1S=2’b00,
T1CC2S=2’b00,T1CC3S=2’b01,T1CC3S=2’b10,这样通道 1 和通道 2 为输出比较通道,可在输出波
形,而通道 3 和通道 4 为输入捕捉通道,可进行捕捉功能。
Rev2.02
- 85 -
2021-10-29
Fremont Micro Devices
FT62F08x
TIM1CCRxH/L 寄存器的读写:
TIM1CCRxH/L 寄存器由一个预加载寄存器和一个影子寄存器组成。
⚫
在输出比较模式下:
TIM1CCRxH/L 寄存器的访问没有任何限制,可读可写。
读 TIM1CCRxH/L: 读出的值来自 CCRx 预加载寄存器的值,跟先前写入 TIM1CCRxH/L 寄存器的
值保持一致。
写 TIM1CCRxH/L:有预加载使能位 (T1OCxPE);如果预加载使能 (T1OCxPE=0) 关闭,则写入
TIM1CCRxH/L 寄存器的值直接由 CCRx 预加载寄存器传递到 CCRx 影子寄
存器。反之,写入 TIM1CCRxH/L 寄存器的值在下一次更新事件发生时才会从
CCRx 预加载寄存器传递到 CCRx 影子寄存器。
⚫
在输入捕捉模式下:
TIM1CCRxH/L 寄存器为只读寄存器。在捕捉事件发生时,计数器值会被写入到 CCRx 影子寄存器
中,而后再写回到 CCRx 预加载寄存器中。
读 TIM1CCRxH/L 寄存器时,必须先读高 8 位,再读低 8 位。读高 8 位时,CCRx 预加载寄存器被
冻结,此时计数器值无法写回到 CCRx 预加载寄存器中;只有按顺序读完低 8 位后,CCRx 预加载
寄存器才能更新为最新一次捕捉值。
TIM1CCMRx 寄存器为复用寄存器。详见章节 9.2
Rev2.02
- 86 -
2021-10-29
Fremont Micro Devices
FT62F08x
9.3.3.1. 捕捉输入通道
TI1F_ED
TRC
to clock/trigger
TIM1_CH1
TI1
TI1FP1
TI1FP2
Input Filter &
EdgeDetector
IC1
TRC
TIM1_CH2
TI2
TI2FP1
TI2FP2
Input Filter &
EdgeDetector
IC2
TRC
to capture/compare
channel
TIM1_CH3
TI3
Input Filter &
EdgeDetector
TIM1_CH4
TI4
Input Filter &
EdgeDetector
图 9-22
TI3FP3
TI3FP4
IC3
TI4FP3
TI4FP4
IC4
通道输入框图
信号名称
TIM1_CH1/2/3/4
IC1/2/3/4
详细说明
通道 1/2/3/4 对应 I/O 口的输入
通过选择后的真正的通道捕捉源
TI1FP1
来自通道 1 对应 I/O 的输入捕捉信号,作为通道 1 的捕捉源之一
TI1FP2
来自通道 1 对应 I/O 的输入捕捉信号,作为通道 2 的捕捉源之一
TI2FP2
来自通道 2 对应 I/O 的输入捕捉信号,作为通道 2 的捕捉源之一
TI2FP1
来自通道 2 对应 I/O 的输入捕捉信号,作为通道 1 的捕捉源之一
TI3FP3
来自通道 3 对应 I/O 的输入捕捉信号,作为通道 3 的捕捉源之一
TI3FP4
来自通道 3 对应 I/O 的输入捕捉信号,作为通道 4 的捕捉源之一
TI4FP4
来自通道 4 对应 I/O 的输入捕捉信号,作为通道 4 的捕捉源之一
TI4FP3
来自通道 4 对应 I/O 的输入捕捉信号,作为通道 3 的捕捉源之一
TRC
来自通道 1 对应 I/O 的输入双沿捕捉信号,作为通道 1 和通道 2 的捕捉源之一
表 9-16
Rev2.02
- 87 -
信号说明列表
2021-10-29
Fremont Micro Devices
FT62F08x
当一个通道被配置成输入捕捉通道并且输入捕捉事件有效时,可以将当前的计数值保存在 TIM1CCRx 寄
存器。每个通道都有一个数字滤波单元,可配置采样频率 (T1ICxF[3:0]),捕捉预分频 (T1IC1PSC[1:0]),
捕捉极性选择 (T1CCxP) 和捕捉触发源 (T1CCxS)。每个通道都有各自的捕捉源,如下表所示:
T1CCxS
通道 1
通道 2
通道 3
通道 4
2’b00
TI1FP1
TI2FP2
TI3FP3
TI4FP4
2’b01
TI2FP1
TI1FP2
TI4FP3
TI3FP4
2’b10
TRC
TRC
-
-
(捕捉源选择)
表 9-17 各通道输入捕捉源列表
当一个输入捕捉发生时:
⚫
TIM1CCR1H/L 寄存器得到捕捉发生时计数器的值。
⚫
输入捕捉标志位 (T1CCxIF) 被置位。如果当 T1CCxIF 保持为 1 时,又一次发生了输入捕捉事件,
那么溢出捕捉标志位 (T1CCxOF) 也会被置位。
⚫
如果 T1CCxIE 为 1,那么捕捉将产生一个中断事件。
配置为输入捕捉通道的示例步骤:
1.
使能 TIM1 模块时钟并选择 TIM1 时钟源
2.
将通道相应的端口配置为输入端口
3.
选择输入触发源 (T1CCxS)
4.
配置采样频率 (T1ICxF[3:0]),捕捉预分频 (T1IC1PSC[1:0])
5.
配置捕捉源的捕捉极性 (T1CCxP)
6.
使能捕捉通道 (T1CCxE)
7.
使能计数器 (T1CEN)
TI1
COUNTER
IC1 Capture
30
CCR1_SHAD
T1CCR1[15:0]
31
32
34
33
10
35
36
37
38
39
40
41
33
33
10
图 9-23
简单输入捕捉时序图
PWM 输入信号测量的应用:
利用捕捉输入模式和复位模式,并且将两个通道的输入捕捉源都选择为同一个通道的 PWM 信号输入;
这样就可以测量从通道输入的 PWM 信号的周期以及占空比。
Rev2.02
- 88 -
2021-10-29
Fremont Micro Devices
FT62F08x
PWM
input signal
T1ARR
0
TIME
IC1
IC1:
PWM周期测量
复位计数器
IC2
IC1
IC2
IC2:
PWM占空比测量
图 9-24 测量 PWM 信号的示意图
具体测量 PWM 的配置步骤如下:
1.
使能 TIM1 模块时钟并选择 TIM1 时钟源
2.
将通道 1/2 相应的端口配置为输入端口
3.
通道 1 配置将 IC1 映射在 TI1FP1 上;通道 2 配置将 IC2 映射在 TI2FP1 上
4.
配置通道 1 为上升沿捕捉 (T1CC1P=0);通道 2 为下降沿捕捉 (T1CC2P=1)
5.
配置采样频率 (T1ICxF[3:0]=4’b0000),捕捉预分频 (T1IC1PSC[1:0]=2’b00)
6.
将计数控制模式配置为复位模式 (T1SMS=101),计数触发源配置为 TI1FP1 (T1TS=101)
7.
使能计数器 (T1CEN)
8.
开启通道 1 和通道 2 的输入捕捉功能 (T1CC1E=1 且 T1CC2E=1)
注意:
因为捕捉沿先于复位触发源两个计数时钟周期,所以需要软件进行一下操作才能等到准确测量值:
⚫
当预分频为 0 时,PWM 周期 = T1CCR1H/L+2,占空比 = T1CCR2H/L+2
⚫
当预分频为 1 时,PWM 周期 = T1CCR1H/L+1,占空比 = T1CCR2H/L+1
⚫
当预分频大于 1 时,PWM 周期 = T1CCR1H/L,占空比 = T1CCR2H/
以下是一段示例代码:
BANKSEL
BSR
PCKEN
PCKEN,0
;
; 使能 TIM1 模块时钟
BANKSEL
LDWI
STR
TCKSRC
H’01’
TCKSRC
;
;
; 选择 TIM1 时钟源为 HIRC
BANKSEL
LDWI
STR
TRISA
H’FF’
TRISA
;
;
; 配置 PA0 为通道 1 的输入通道,PA1 为通道 2 的输入通道
BANKSEL
TIM1CCMR1
;
Rev2.02
- 89 -
2021-10-29
Fremont Micro Devices
FT62F08x
LDWI
STR
H’01’
TIM1CCMR1
;
; 配置通道 1 为 IC1 映射在 TI1FP1 上
LDWI
STR
H’02’
TIM1CCMR2
;
; 配置通道 2 的 IC2 映射在 TI1FP2 上
LDWI
STR
H’54’
TIM1SMCR
;
; 配置 TIM1 为复位控制模式,触发源为 TI1FP1
LDWI
STR
H’31’
TIM1CCER1
;
; 使能通道 1/2,通道 1 为上升沿捕捉,通道 2 为下降沿捕捉
BANKSEL
BSR
TIM1CR1
TIM1CR1,0
;
; 开启计数器计数使能位
上述示例代码对应波形图:
TI1
IC1/IC2
COUNTER
5
0
2
1
3
T1CCR1
5
T1CCR2
3
IC1:
周期测量
复位计数器
4
5
0
6
IC2:
脉冲宽度测量
图 9-25 测量 PWM 信号的时序图
Rev2.02
- 90 -
2021-10-29
Fremont Micro Devices
FT62F08x
9.3.3.2. 输出比较通道
Deadtime generation
DTG registers
OC1
OC1REF
output
control
DTG
OC1N
OC2
OC2REF
From capture/compare
channels
output
control
DTG
OC2N
OC3
OC3REF
output
control
DTG
OC4REF
output
control
OC3N
OC4
TIM1_CH1
TIM1_CH1N
TIM1_CH2
TIM1_CH2N
TIM1_CH3
TIM1_CH3N
TIM1_CH4
BI
TIM1_BKIN
Polarity Selection
Enable
图 9-26
通道输出框图
输出阶段产生立即响应的波形,用来作为参考波形,叫做 OCxREF 信号 (高有效)。刹车功能,极性选
择和其他输出控制位都在参考波形之后去做控制。
输出比较通道根据计数值与比较值 CCRx,产生 OCxREF 输出并送到死区产生模块,经过死区产生模块
后再经过其他输出控制位的控制将波形输出到端口。
具体的输出控制位以及可达到的输出效果可以查看章节 9.3.3.5 内容。
输出比较模式下,可选择不同的输出模式去输出 PWM 波形;输出模式由 T1OCxM[3:0]选择,总共有以
下 8 种不同的输出模式(最终的输出还需要取决于极性选择 (T1CCxP)):
(1) 冻结模式:输出冻结,输出实际比较值 (CCRx_SHAD) 与计数器 TIM1_CNT 间的比较对
OC1REF 不起作用
(2) 匹配有效:当计数值 CNT 与实际比较值 (CCRx_SHAD) 匹配时,OCxREF 为高电平;
(3) 匹配无效:当计数值 CNT 与实际比较值 (CCRx_SHAD) 匹配时,OCxREF 为低电平;
(4) 翻转:当计数值 CNT 与实际比较值 (CCRx_SHAD) 匹配时,输出翻转;
(5) 强制无效:OCxREF 强制为低电平;
(6) 强制有效:OCxREF 强制为高电平;
(7) PWM1:向上计数时,当 CNT < 实际比较值 (CCRx_SHAD) 时,OCxREF 有效;
向下计数时,CNT > 实际比较值 (CCRx_SHAD) 时,OCxREF 无效;
(8) PWM2:向上计数时,当 CNT < 实际比较值 (CCRx_SHAD) 时,OCxREF 无效;
向下计数时,CNT > 实际比较值 (CCRx_SHAD) 时,OCxREF 有效;
配置为输出比较通道的示例步骤和示例代码如下:
Rev2.02
- 91 -
2021-10-29
Fremont Micro Devices
FT62F08x
1.
使能 TIM1 模块时钟并选择 TIM1 时钟源
2.
将通道相应的端口配置为输出端口
3.
配置输出波形的周期 (T1ARR) 和占空比 (T1CCRx)
4.
配置输出比较模式 (T1OCxM) 和输出极性 (T1CCxP)
5.
使能比较输出通道 (T1CCxE)
6.
打开主输出自动使能位 (T1AOE),在更新事件发生时硬件会自动使能主输出 (T1MOE)
7.
使能计数器 (T1CEN)
BANKSEL
BSR
PCKEN
PCKEN,0
BANKSEL
LDWI
STR
TCKSRC
H’01’
TCKSRC
BANKSEL
LDWI
STR
TRISA
H’FE’
TRISA
;
; 使能 TIM1 模块时钟
;
;
; 选择 TIM1 时钟源为 HIRC
;
;
; 配置 PA0 为通道 1 的输出通道
BANKSEL
TIM1ARRL
LDWI
H’05’
STR
TIM1ARRL
;
;
; 将输出波形周期配置为 6
LDWI
STR
H’03’
TIM1CCR1L
;
; 将输出波形占空比配置为 3
BANKSEL
LDWI
STR
TIM1CCMR1
H’10’
TIM1CCMR1
;
;
; 配置通道 1 为匹配有效模式输出
LDWI
STR
H’01’
TIM1CCER1
;
; 使能通道 1
BANKSEL
BSR
TIM1BKR
TIM1BKR,6
;
; 打开主输出自动使能位 T1AOE
BANKSEL
BSR
TIM1CR1
TIM1CR1,0
;
; 开启计数器计数使能位
上述示例代码对应波形图:
CK_CNT
CNT_CEN
COUNTER
0
1
2
3
4
5
T1ARR
5
T1CCRx
3
0
1
2
3
4
5
OCxREF
T1AOE
T1MOE
OCx
图 9-27 T1OCxM 为匹配有效模式下的输出时序图
Rev2.02
- 92 -
2021-10-29
Fremont Micro Devices
FT62F08x
示例代码:
BANKSEL
BSR
PCKEN
PCKEN,0
;
; 使能 TIM1 模块时钟
BANKSEL
LDWI
STR
TCKSRC
H’01’
TCKSRC
BANKSEL
LDWI
STR
TRISA
H’FE’
TRISA
;
;
; 配置 PA0 为通道 1 的输出通道
BANKSEL
LDWI
STR
TIM1ARRL
H’05’
TIM1ARRL
;
;
; 将输出波形周期配置为 6
LDWI
STR
H’03’
TIM1CCR1L
;
; 将输出波形占空比配置为 3
BANKSEL
LDWI
STR
TIM1CCMR1
H’30’
TIM1CCMR1
;
;
; 配置通道 1 为翻转模式输出
LDWI
STR
H’01’
TIM1CCER1
;
; 使能通道 1
BANKSEL
BSR
TIM1BKR
TIM1BKR,6
;
; 打开主输出自动使能位 T1AOE
BANKSEL
BSR
TIM1CR1
TIM1CR1,0
;
;
; 选择 TIM1 时钟源为 HIRC
;
; 开启计数器计数使能位
上述示例代码对应波形图:
CK_CNT
CNT_CEN
COUNTER
0
1
2
3
4
5
T1ARR
5
T1CCRx
3
0
1
2
3
4
5
OCxREF
T1AOE
T1MOE
OCx
图 9-28
T1OCxM 为翻转模式下的输出时序图
示例代码:
BANKSEL
BSR
PCKEN
PCKEN,0
;
; 使能 TIM1 模块时钟
BANKSEL
LDWI
STR
TCKSRC
H’01’
TCKSRC
;
;
; 选择 TIM1 时钟源为 HIRC
Rev2.02
- 93 -
2021-10-29
Fremont Micro Devices
FT62F08x
BANKSEL
LDWI
STR
TRISA
H’FE’
TRISA
;
;
; 配置 PA0 为通道 1 的输出通道
BANKSEL
LDWI
STR
TIM1ARRL
H’05’
TIM1ARRL
;
;
; 将输出波形周期配置为 6
LDWI
STR
H’03’
TIM1CCR1L
;
; 将输出波形占空比配置为 3
BANKSEL
LDWI
STR
TIM1CCMR1
H’70’
TIM1CCMR1
;
;
; 配置通道 1 为 PWM2 模式输出
LDWI
STR
H’01’
TIM1CCER1
;
; 使能通道 1
BANKSEL
BSR
TIM1BKR
TIM1BKR,6
;
; 打开主输出自动使能位 T1AOE
BANKSEL
BSR
TIM1CR1
TIM1CR1,0
;
; 开启计数器计数使能位
上述示例代码对应波形图:
CK_CNT
CNT_CEN
COUNTER
0
1
2
3
4
5
T1ARR
5
T1CCRx
3
0
1
2
3
4
5
0
OCxREF
T1AOE
T1MOE
OCx
图 9-29
T1OCxM 为 PWM2 模式下的输出时序图
注意:
⚫
刹车事件的到来只会影响输出,并不影响 TIMER 本身的计数。
⚫
为了避免在计数器还未开启时,就开始输出脉冲;需要在计数器使能之后再开启 T1CCxE 和
T1CCxNE
9.3.3.3. 单次脉冲模式
开启单次脉冲模式和不开单次脉冲模式的区别在于:开启单次脉冲模式 (T1OPM=1) 并且下一次更新事
件到来时,硬件会自动关闭计数器使能位 (T1CEN),计数器停止计数。
想要产生一个正确的脉冲,比较值 (T1CCRx) 必须与计数器初始值 (T1ARR) 不同;所以在开始计数之
Rev2.02
- 94 -
2021-10-29
1
Fremont Micro Devices
FT62F08x
前必须满足以下配置:
⚫
在向上计数模式下:COUNTER < T1CCRx < T1ARR
⚫
在向下计数模式下:COUNTER > T1CCRx
想要产生一个正确的脉冲,还必须满足以下配置:
⚫
在输出模式为 PWM1 模式 (T1OCxM=110) 下:T1CCxP 必须为 1
如果输出模式为 PWM1 模式并且 T1CCxP 为 0,更新事件之后 PWM 输出会一直为有效值
⚫
在输出模式为 PWM2 模式 (T1OCxM=111) 下:T1CCxP 必须为 0
如果输出模式为 PWM2 模式并且 T1CCxP 为 1,更新事件之后 PWM 输出会一直为有效值
单次脉冲模式可以配合触发模式在特定的时间点产生单个特定的 PWM 输出;配置步骤如下所示:
1.
使能 TIM1 模块时钟并选择 TIM1 时钟源
2.
将通道 2 相应的端口配置为输入端口,通道 1 相应的端口配置为输出端口
3.
通道 2 配置 T1CC2S 为 01,IC2 映射在 TI2FP2 上;并配置通道 2 为上升沿捕捉 (T1CC2P=0)
4.
将计数控制模式配置为触发模式 (T1SMS=110),计数触发源配置为 TI2FP2 (T1TS=110)
5.
通道 1 配置为输出通道 (T1CC1S=00)
6.
通道 1 的比较输出模式配置为 PWM2 模式 (T1OC1M=111),输出极性配置为高电平有效
(T1CC1P=0)
7.
打开主输出使能 (T1MOE)并且使能计数器 (T1CEN)
8.
开启通道 2 的输入捕捉功能 (T1CC2E=1) 和通道 1 的输出比较功能 (T1CC1E)
以下是一段示例代码:
BANKSEL
BSR
PCKEN
PCKEN,0
;
; 使能 TIM1 模块时钟
BANKSEL
LDWI
STR
TCKSRC
H’01’
TCKSRC
;
;
; 选择 TIM1 时钟源为 HIRC
BANKSEL
LDWI
STR
TRISA
H’FE’
TRISA
;
;
; 配置 PA0 为通道 1 的输出通道,PA1 为通道 2 的输入通道
BANKSEL
LDWI
STR
TIM1CCMR1
H’70’
TIM1CCMR1
;
;
; 配置通道 1 为 PWM2 模式输出
LDWI
STR
H’01’
TIM1CCMR2
;
; 配置通道 2 的 IC2 映射在 TI2FP2 上
LDWI
STR
H’66’
TIM1SMCR
;
; 配置 TIM1 为触发控制模式,触发源为 TI2FP2
LDWI
STR
H’11’
TIM1CCER1
;
; 使能通道 1 和通道 2
BANKSEL
BSR
TIM1BKR
TIM1BKR,7
;
; 打开主输出使能 T1MOE
BANKSEL
BSR
TIM1CR1
TIM1CR1,0
;
; 开启计数器计数使能位
Rev2.02
- 95 -
2021-10-29
Fremont Micro Devices
FT62F08x
上述示例代码对应示意图:
TI2
OC1REF
OC1
T1ARR
T1CCR1
0
TIME
图 9-30
单次脉冲应用示意图
9.3.3.4. 死区产生
当把通道的互补输出使能时,就自动使能死区功能。每当一个输出信号 (正向输出信号或互补输出信号)
出现下降沿时,就会将另一个信号的上升沿后延一个死区时间长度。如图 9-31 和图 9-32 所示:
OCxREF
OCx
delay
OCxN
delay
图 9-31
正向输出插入死区时序图
OCxREF
delay
OCx
OCxN
delay
图 9-32 互补输出插入死区时序图
死区时间可以编程:根据寄存器位 T1DTG[7:0],可以配置死区时间长度,具体参考寄存器描述 TIM1DTR
的 T1DTG[7:0]。
有的 OCXREF 输出的脉冲时间很短 (小于死区时间),有可能某一脉冲信号 (正向输出信号或反向输出信
号) 会被死区覆盖,导致输出不变化。如图 9-29 和图 9-30 所示:
Rev2.02
- 96 -
2021-10-29
Fremont Micro Devices
FT62F08x
OCxREF
delay
OCx
OCxN
图 9-33 正向输出被死区覆盖时序图
OCxREF
OCx
delay
OCxN
图 9-34
互补输出被死区覆盖时序图
9.3.3.5. 输出控制
参考信号 OCxREF 产生后不直接输出到端口,而是先经过死区控制模块和极性选择,再由以下 5 位控制
信号 (T1MOE、T1OSSI、T1OSSR、T1CCxNE 和 CCxE) 进行组合控制之后送到端口上。具体的组合
控制内容请见表 9-10 Timer1 输出控制和状态”
输出的状态转换实际是刹车事件异步将 T1MOE 清零实现的。T1MOE 异步清零,但要注意刹车事件撤销
时需要同步 2 个 CK_CNT 时钟 (如果有时钟的情况下)。
9.3.4.
TIM1 中断
TIM1 有以下 7 个中断请求源:
⚫
刹车中断
⚫
触发中断
⚫
捕捉/比较 4 中断
⚫
捕捉/比较 3 中断
⚫
捕捉/比较 2 中断
Rev2.02
- 97 -
2021-10-29
Fremont Micro Devices
FT62F08x
⚫
捕捉/比较 1 中断
⚫
更新中断 (例如:上溢、下溢、计数初始化)
在用这些中断之前需要提前打开 TIM1IER 寄存器中的中断使能位 (T1BIE、
T1TIE、
T1CCxIE 和 T1UIE)。
不同的中断源还可以配置通过 TIM1EGR 寄存器来产生 (软件产生中断)。
9.3.5.
故障刹车源
TIM1 有以下 3 种刹车事件:
⚫
BKIN 管脚事件
⚫
LVD 事件
⚫
ADC 比较事件
当故障事件有效且被选择为刹车源 (由 BKS0~2 决定),如果 BKE 位为 1,PWM 输出管脚将被置于预设
的状态,预设状态由寄存器 TIM1OISR 决定。
当一个刹车事件发生时:
⚫
T1MOE 位会被异步清 0,强制输出进入无效状态,空闲状态或复位状态。甚至在 MCU 振荡器关闭
的情况下,T1MOE 也会被刹车事件清 0。
⚫
在 T1MOE=0 之后,每个输出通道都会先将输出值置为无效值,等死区时间到之后变成提前设置好
的 T1OISx 位的值。如果 T1OSSI=0,TIMER 会将输出关闭。
⚫
当互补输出使能时:
输出首先会设置为无效值 (根据极性选择位)。此操作是异步清 0 的,所以即使 TIM1 没有时钟驱动
也能进行。
如果 TIM1 是有时钟进行驱动的,那么死区时间到来之后就会进入由 T1OISx 和 T1OISxN 提前设定
的预设状态。(由于 T1MOE 的同步,所以此情况下真正的死区时间会比死区设置值长 2 个 CK_CNT
时钟)
⚫
刹车状态标志位 (T1BIF) 被置位。如果 T1BIE 位为 1,那么将会产生一个中断事件。
⚫
如果 T1AOE 位配置为 1,那么 T1MOE 位在下次更新事件 (UEV) 到来时,将会由硬件自动置位。
如果 T1AOE 位为 0,那么只能由软件将 T1MOE 位重新置位。
当故障事件有效时,T1MOE 清 0,PWM 输出将一直置于预设状态;
故障事件撤消后,如果 T1AOE=1,PWM 将在下一次更新事件后恢复正常输出,否则,软件需要自动打
开 T1MOE。
Rev2.02
- 98 -
2021-10-29
Fremont Micro Devices
FT62F08x
TIM1_REF
TIM1_CHx
BKIN
BIF
AOE
自动重启
MOE
图 9-35 PWM 的自动重启
TIM1_REF
TIM1_CHx
PWM恢复输出
BKIN
BIF
AOE
MOE
软件重启
图 9-36
Rev2.02
- 99 -
PWM 的软件重启
2021-10-29
Fremont Micro Devices
9.3.6.
FT62F08x
前沿消隐
BKIN
BKS0
LVDW
BKS1
to TIM1 break
logic
T1BKE
ADCMP
BKS2
EDGS
edge
detect
TIM1_CHx
to ADC trig
LEBCNT
9bit
LEBCH
T1CK
ADCLK
1
LEBADT
0
LEBEN
图 9-37
前沿消隐原理框图
在高速开关应用中,开关通常会产生极大的瞬变,这些瞬变可能会导致测量误差。利用前沿消隐 (LEB)
功能,应用程序可以忽略 PWM 输出边沿附近发生的瞬变。
TIM1_CHx(PWM)
TIM1_BKIN
LEBEN
LEBCNT
0
1
2
0
在此期间故障被屏蔽
BKDIS
图 9-38 前沿消隐时序示意图
LEBCH 用于选择被消隐 TIM1 的 PWM 通道,EDGS 选择边沿类型。当 LEBEN 为 1,PWM 边沿将触发
LEB 定时器计数,时钟源为 TIM1 时钟,直到计数值等于 LEBPR,LEB 定时器停止计数,这段时间为消
隐周期,期间所发生的刹车事件将被忽略;在消隐周期内如果再次发生有效的 PWM 边沿,则 LEB 定时
器将清 0,重新开始计数。
注意:
(1) LEB 定时器和 ADC 延时定时器复用了同一个 9bit 计数器,当 LEBEN 为 1 时,原 ADC 的延时触发功能
被禁止,但如果 LEBADT 为 1,LEB 定时器溢出将触发一次 AD 转换。
(2) 寄存器 ADCON3 中 ADCMPEN 位的关闭能将 ADCMP 产生的刹车事件清除。
Rev2.02
- 100 -
2021-10-29
Fremont Micro Devices
FT62F08x
10. 通用定时器 TIM2
10.1. 特性
Timer2 的功能除捕捉比较通道数量不同以外,其他相同:
◼ 16bit 的向上计数,支持自动重载;
◼ 计数时钟预分频;
◼ 支持 1/2 个独立的捕捉比较通道,通道可支持:
⚫
输入捕捉
⚫
输出比较
⚫
PWM 产生
◼ 中断事件:
⚫
更新事件:计数器溢出,计数器初始化
⚫
输入捕捉事件
⚫
输出比较事件
TIME BASE UNIT
CK_CNT
fMASTER
CK_PSC
UP-DOWN COUNTER
Auto-reload register
Prescaler
CAPTURE COMPARE ARRAY
CC1I UEV
TIM2_CH1
IC1
TI1
Prescaler
IC1PS
Capture/Compare 1 Register
OC1REF
OC1
TIM2_CH1
OC2
TIM2_CH2
OC3
TIM2_CH3
CC2I UEV
TIM2_CH2
TI2
INPUT
STAGE
IC2
Prescaler
IC2PS
Capture/Compare 2 Register
OC2REF
OUTPUT
STAGE
CC3I UEV
TIM2_CH3
TI3
IC3
Prescaler
IC3PS
图 10-1
Rev2.02
- 101 -
Capture/Compare 3 Register
OC3REF
TIM2 原理框图
2021-10-29
Fremont Micro Devices
FT62F08x
10.2. Timer2 相关寄存器汇总
名称
地址
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
复位值
PCKEN
0x9A
TKEN
I2CEN
UARTEN
SPIEN
TIM4EN
TIM2EN
TIM1EN
ADCEN
0000 0000
CKOCON
0x95
SYSON
CCORDY
CCOEN
0010 0000
TIM2CR1
0x30C
TIM2IER
0x30D
TIM2SR1
CCOSEL[2:0]
-
-
-
T2OPM
T2URS
T2UDIS
T2CEN
0--- 0000
-
-
-
-
T2CC3IE
T2CC2IE
T2CC1IE
T2UIE
---- 0000
0x30E
-
-
-
-
T2CC3IF
T2CC2IF
T2CC1IF
T2UIF
---- 0000
TIM2SR2
0x30F
-
-
-
-
T2CC3OF
T2CC2OF
T2CC1OF
-
---- 000-
TIM2EGR
0x310
-
-
-
-
T2CC3G
T2CC2G
T2CC1G
T2UG
---- 0000
T2OC1PE
-
T2CC1S[1:0]
- 0 0 0 0 - 00
T2IC1PSC[1:0]
T2CC1S[1:0]
0000 0000
-
T2CC2S[1:0]
- 0 0 0 0 - 00
T2IC2PSC[1:0]
T2CC2S[1:0]
0000 0000
-
T2CC3S[1:0]
- 0 0 0 0 - 00
T2IC3PSC[1:0]
T2CC3S[1:0]
0000 0000
TIM2CCMR1
(output mode)
TIM2CCMR1
(input mode)
TIM2CCMR2
(output mode)
TIM2CCMR2
(input mode)
TIM2CCMR3
(output mode)
TIM2_CCMR3
(input mode)
T2ARPE
DTYSEL
T2OC1M[2:0]
-
0x311
T2IC1F[3:0]
T2OC2M[2:0]
-
T2OC2PE
0x312
T2IC2F[3:0]
T2OC3M[2:0]
-
T2OC3PE
0x313
T2IC3F[3:0]
TIM2CCER1
0x314
-
-
TIM2CCER2
0x315
-
-
TIM2CNTRH
0x316
T2CNT[15:8]
0000 0000
TIM2CNTRL
0x317
T2CNT[7:0]
0000 0000
TIM2PSCR
0x318
TIM2ARRH
0x319
T2ARR[15:8]
1111 1111
TIM2ARRL
0x31A
T2ARR[7:0]
1111 1111
TIM2CCR1H
0x31B
T2CCR1[15:8]
0000 0000
TIM2CCR1L
0x31C
T2CCR1[7:0]
0000 0000
TIM2CCR2H
0x31D
T2CCR2[15:8]
0000 0000
TIM2CCR2L
0x31E
T2CCR2[7:0]
0000 0000
TIM2CCR3H
0x29E
T2CCR3[15:8]
0000 0000
TIM2CCR3L
0x29F
T2CCR3[7:0]
0000 0000
-
T2CC2P
-
表 10-1
Rev2.02
-
-
T2CC2E
-
-
-
-
-
T2CC1P
T2CC1E
--00 --00
-
T2CC3P
T2CC3E
---- --00
T2PSC[3:0]
Timer2 相关用户寄存器汇总
- 102 -
2021-10-29
---- 0000
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
TIM2CNTRH[7:0]
0x316
RW−0000 0000
低8位
TIM2CNTRL[7:0]
0x317
RW−0000 0000
TIM2PSCR[3:0]
0x318
RW−0000
高8位
TIM2ARRH[7:0]
0x319
RW−1111 1111
注:此值为 0 时,计数器不工作;
低8位
TIM2ARRL[7:0]
0x31A
RW−1111 1111
输出比较模式: TIM2_CH1 占空比
高8位
TIM2CCR1H[7:0]
0x31B
RW−0000 0000
(预装载值)
低8位
TIM2CCR1L[7:0]
0x31C
RW−0000 0000
输入捕获模式: 上一次捕获事件(IC1)捕
高8位
TIM2CCR1H[7:0]
0x31B
RO−0000 0000
获的计数值
低8位
TIM2CCR1L[7:0]
0x31C
RO−0000 0000
输出比较模式: TIM2_CH2 占空比
高8位
TIM2CCR2H[7:0]
0x31D
RW−0000 0000
(预装载值)
低8位
TIM2CCR2L[7:0]
0x31E
RW−0000 0000
输入捕获模式: 上一次捕获事件(IC2)捕
高8位
TIM2CCR2H[7:0]
0x31D
RO−0000 0000
获的计数值
低8位
TIM2CCR2L[7:0]
0x31E
RO−0000 0000
输出比较模式: TIM2_CH3 占空比
高8位
TIM2CCR3H[7:0]
0x29E
RW−0000 0000
(预装载值)
低8位
TIM2CCR3L[7:0]
0x29F
RW−0000 0000
输入捕获模式: 上一次捕获事件(IC3)捕
高8位
TIM2CCR3H[7:0]
0x29E
RO−0000 0000
获的计数值
低8位
TIM2CCR3L[7:0]
0x29F
RO−0000 0000
TIM2 计数值
T2PSC
TIM2 预分频器
输出比较模式:PWM 周期的自动重装
载寄存器(预装载值)
T2CCR1
T2CCR2
T2CCR3
复位值
高8位
T2CNT
T2ARR
地址
表 10-2 Timer2 周期相关寄存器
Rev2.02
- 103 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
TIM2EN
SYSON
状态
寄存器
1 = 使能
TIM2 模块时钟
0 = 关闭
睡眠模式下,系统时钟控
1 = 使能
制
0 = 关闭
地址
复位值
PCKEN[2]
0x9A
RW−0
CKOCON[7]
0x95
RW−0
TCKSRC[6:4]
0x31F
RW−000
Timer2 时钟源 (Fmaster)
T2CKSRC
000 = Sysclk
100 = 2x ( XT or EC ) (*)
001 = HIRC
101 = LIRC
010 = XT or EC (*)
110 = LP or EC (*)
011 = 2x HIRC
111 = 2x ( LP or EC) (*)
(*) FOSC
应相应配置成 LP/XT/EC 模式或选择
INTOSCIO 模式,否则振荡器将不会运行。
PWM 周期的自动预装载
T2ARPE
1 = 使能
(T2ARR 预装载值在更新事件到来时被加载)
TIM2CR1[7]
RW−0
TIM2CR1[3]
RW−0
0 = 禁止 (T2ARR 立即被加载)
单脉冲模式
T2OPM
1 = 使能 (下一次更新事件到来时,T2CEN 自动清
零,计数器停止)
0 = 关闭 (发生更新事件时,计数器不停止)
T2URS
当 T2UDIS=0 时,更新事件中断源
1 / 0 = 计数器上溢/下溢
0x30C
TIM2CR1[2]
RW−0
TIM2CR1[1]
RW−0
TIM2CR1[0]
RW−0
产生更新事件控制
T2UDIS
1 = 禁止
0 = 允许
T2CEN
TIM2 计数器
1 = 使能
0 = 关闭
表 10-3 Timer2 相关用户控制寄存器
Rev2.02
- 104 -
2021-10-29
Fremont Micro Devices
名称
地址
FT62F08x
bit7
bit6
bit5
bit4
bit3
bit2
bit1
Bit0
复位值
TIM2CCMR1
0x311
T2IC1F[3:0]
T2IC1PSC[1:0]
T2CC1S[1:0]
RW-0000 0000
TIM2CCMR2
0x312
T2IC2F[3:0]
T2IC2PSC[1:0]
T2CC2S[1:0]
RW-0000 0000
TIM2CCMR3
0x313
T2IC3F[3:0]
T2IC3PSC[1:0]
T2CC3S[1:0]
RW-0000 0000
名称
状态
寄存器
地址
复位值
通道 x 输入捕获采样频率和数字滤波器长度
Value
T2ICxF
采样频率
数字滤波器
(fSAMPLING)
长度 (N)
0000
Fmaster /2
0
0001
Fmaster
2
0010
Fmaster
4
0011
Fmaster
8
0100
Fmaster / 2
6
0101
Fmaster / 2
8
0110
Fmaster / 4
6
0111
Fmaster / 4
8
1000
Fmaster / 8
6
0x311/
1001
Fmaster / 8
8
0x312/
1010
Fmaster / 16
5
0x313
1011
Fmaster / 16
6
1100
Fmaster / 16
8
1101
Fmaster / 32
5
1110
Fmaster / 32
6
1111
Fmaster / 32
8
TIM2CCMRx[6:4]
RW−0000
x = 1, 2, 3
通道 x 输入捕获预分频器 (几个事件触发一次捕获)
00 = 1 个
T2ICxPSC
01 = 2 个
TIM2CCMRx[3:2]
10 = 4 个
RW−00
11 = 8 个
注: 当 T2CCxE = 0 时,该预分频器复位为 00
00 = 输出
T2CC1S
1
通道 1 模式选择
01 = 输入, 输入脚映射在 TI1FP1
10 = 输入, 输入脚映射在 TI2FP1
TIM2CCMR1[1:0]
0x311
11 = 保留
1
仅在通道 x 关闭时(即 T2CCxE = 0)可写,x = 1, 2, 3。
Rev2.02
- 105 -
2021-10-29
RW−00
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
TIM2CCMR2[1:0]
0x312
RW−00
TIM2CCMR3[1:0]
0x313
RW−00
00 = 输出
2
T2CC2S
通道 2 模式选择
01 = 输入, 输入脚映射在 TI2FP2
10 = 输入, 输入脚映射在 TI1FP2
11 = 保留
00 = 输出
T2CC3S
2
通道 3 模式选择
01 = 输入, 输入脚映射在 TI3FP3
1x = 保留
表 10-4 TIM2CCMRx 作为输入配置寄存器
名称
地址
bit7
TIM2CCMR1
0x311
−
TIM2CCMR2
0x312
TIM2CCMR3
0x313
bit6
bit5
bit4
bit3
bit2
bit1
Bit0
T2OC1M[2:0]
T2OC1PE
−
T2CC1S[1:0]
RW−-000 0-00
−
T2OC2M[2:0]
T2OC2PE
−
T2CC2S[1:0]
RW−-000 0-00
−
T2OC3M[2:0]
T2OC3PE
−
T2CC3S[1:0]
RW−-000 0-00
复位值
T2OCxM
输出模式描述
OCxREF (输出参考信号)
000
冻结 (不比较)
禁止
001
当 TIM2_CNT = CCRx_SHAD 时
1
010
当 TIM2_CNT = CCRx_SHAD 时
0
011
当 TIM2_CNT = CCRx_SHAD 时
电平翻转
100
强制为无效电平
0
101
强制为有效电平
1
110
PWM1 模式
111
PWM2 模式
TIM2_CNT < CCRx_SHAD
1
TIM2_CNT > CCRx_SHAD
0
TIM2_CNT < CCRx_SHAD
0
TIM2_CNT > CCRx_SHAD
1
1. OCxREF 与 T2CCxP 共同决定输出引脚 OCx 的值;
2. 在 PWM 模式仅当比较结果改变,或在输出比较模式从冻结模式切换到 PWM 模式时,OCxREF 电平才改
变;
表 10-5 T2OCxM 配置为输出比较模式
2
仅在通道 x 关闭时(即 T2CCxE = 0)可写,x = 1, 2, 3。
Rev2.02
- 106 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
通道 x 输出比较占空比的自动预装载
T2OCxPE
1 = 使能 (T2CCRx 预装载值在更新事件到来时加载)
0 = 禁止 (T2CCRx 立即被加载)
地址
TIM2CCMRx[3]
x = 1, 2, 3
复位值
0x311/
0x312/
RW−0
0x313
00 = 输出
3
T2CC1S
通道 1
01 = 输入, 输入脚映射在 TI1FP1
模式选择
10 = 输入, 输入脚映射在 TI2FP1
TIM2CCMR1[1:0]
0x311
RW−00
TIM2CCMR2[1:0]
0x312
RW−00
TIM2CCMR3[1:0]
0x313
RW−00
11 = 保留
00 = 输出
T2CC2S 3
通道 2
01 = 输入, 输入脚映射在 TI2FP2
模式选择
10 = 输入, 输入脚映射在 TI1FP2
11 = 保留
T2CC3S
3
00 = 输出
通道 3
01 = 输入, 输入脚映射在 TI3FP3
模式选择
1x = 保留
表 10-6 TIM2CCMRx 作为输出配置寄存器
名称
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
地址
复位值
TIM2CCER1
−
−
T2CC2P
T2CC2E
−
−
T2CC1P
T2CC1E
0x314
RW---00 --00
TIM2CCER2
−
−
−
−
−
−
T1CC3P
T1CC3E
0x315
RW----- --00
名称
功能
输出比较模式
输入捕获/触发模式
1 = 捕获 / 触发发生在 TIxF
T2CCxP
通道 x 引脚
1 = OCx 低电平有效
输出极性选择
0 = OCx 高电平有效
低电平或下降沿
0 = 捕获 / 触发发生在 TIxF
高电平或上升沿
T2CCxE
通道 x 引脚
使能
1 = 使能
1 = 使能 (捕获计数器的值到
(OCx 输出到对应的引脚)
TIM2CCRx 寄存器中)
0 = 禁止
0 = 禁止
注:通道输出电平由 T2OISx 和 T2CCxE 位的值共同决定
表 10-7 Timer2 通道输出和极性选择
名称
状态
寄存器
地址
复位值
TIM2 通道 1 管脚功能重映射
TIM2_CH1
1 = PB0
AFP1[2]
0x19F
RW−0
0 = PA5
表 10-8
3
Timer2 通道管脚功能重映射
仅在通道 x 关闭时(即 T2CCxE = 0)可写,x = 1, 2, 3。
Rev2.02
- 107 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
全局中断
1 = 使能
GIE
(PEIE, T2CCxIE, T2CCxG, T2UIE 适用)
INTCON[7]
RW−0
Bank
首地址
+0x0B
0 = 全局关闭 (唤醒不受影响)
外设总中断
PEIE
1 = 使能 (T2CCxIE, T2CCxG, T2UIE 适用)
INTCON[6]
RW−0
RW−0
0 = 关闭 (无唤醒)
T2CC3IE
通道 3 捕获/比较中断
TIM2IER[3]
T2CC2IE
通道 2 捕获或比较中断
TIM2IER[2]
T2CC1IE
通道 1 捕获或比较中断
1 = 使能
TIM2IER[1]
RW−0
通道 3 捕获/比较软件中断
0 = 关闭
TIM2EGR[3]
WO−0
T2CC3G
4
0x30D
RW−0
T2CC2G 4
通道 2 捕获/比较软件中断
TIM2EGR[2]
T2CC1G 4
通道 1 捕获/比较软件中断
TIM2EGR[1]
WO−0
TIM2SR1[3]
R_W1C−0
0x310
WO−0
通道 x 匹配/捕获中断标志位
T2CC3IF
5
•
输出模式:
1 = CNT 值与 T2CCRx 值匹配
0 = 不匹配
T2CC2IF 5
•
TIM2SR1[2]
输入模式:
0x30E
R_W1C−0
1 = 计数器值已被捕获至 TIM2CCR
0 = 无捕获产生
T2CC1IF 5
TIM2SR1[1]
R_W1C−0
TIM2SR2[3]
R_W1C−0
注: 软件清 0 或读 TIM2CCRxL 清 0
T2CC3OF 5
通道 x 重复捕获中断标志位
1 = 发生重复捕获 (计数器的值被捕获到 TIM2CCRx
T2CC2OF 5
寄存器时,T2CCxIF 的状态已经为 1)
TIM2SR2[2]
0x30F
R_W1C−0
0 = 无重复捕获
T2CC1OF
5
注:仅通道配置位捕获输入时有效
TIM2SR2[1]
R_W1C−0
T2UIE
允许更新中断
1 = 使能
TIM2IER[0]
0x30D
RW−0
T2UG 4
允许更新软件中断
0 = 关闭
TIM2EGR[0]
0x310
WO−0
TIM2SR1[0]
0x30E
R_W1C−0
更新中断标志位
T2UIF
5
1 = 更新事件等待响应
0 = 无更新事件
表 10-9 Timer2 中断使能和状态位
4
软件置 1, 硬件自动清 0。
5
写 1 清 0,写 0 无效。建议只使用 STR、MOVWI 指令进行写操作,而不要用 BSR 或 IOR 指令。
Rev2.02
- 108 -
2021-10-29
Fremont Micro Devices
FT62F08x
10.3. 功能描述
整个 TIM2 可以分为两个大的功能部分:计数基本单元和捕捉比较通道。计数基本单元分为向上计数器、
自动加载寄存器、预分频器;捕捉比较通道分为捕捉输入通道,输出比较通道和输出控制。
10.3.1. 计数基本单元
TIM2_ARRH,ARRL
UEV
Auto-reload register
UIF
CK_PSC
Prescaler
CK_CNT
TIM2_PSCR
16-bit Counter
UEV
TIM2_CNTRH,CNTRL
图 10-2 计数基本单元框图
计数基本单元包括:
⚫
16 位向上计数器
⚫
16 位自动重加载寄存器
⚫
4 位可编程预分频器
TIM2 没有重复计数器
10.3.1.1. 时钟源选择
时钟源可由 TCKSRC 寄存器进行配置:
⚫
T2CKSRC[2:0] = 000 时,系统时钟/主时钟为 TIM2 时钟
⚫
T2CKSRC[2:0] = 001 时,HIRC 为 TIM2 时钟
⚫
T2CKSRC[2:0] = 010 时,XT 时钟/外部时钟为 TIM2 时钟
⚫
T2CKSRC[2:0] = 011 时,HIRC 的 2 倍频为 TIM2 时钟
⚫
T2CKSRC[2:0] = 100 时,XT 时钟/外部时钟的 2 倍频为 TIM2 时钟
⚫
T2CKSRC[2:0] = 101 时,LIRC 为 TIM2 时钟
⚫
T2CKSRC[2:0] = 110 时,LP 时钟/外部时钟为 TIM2 时钟
⚫
T2CKSRC[2:0] = 111 时,LP 时钟/外部时钟的 2 倍频为 TIM2 时钟
Rev2.02
- 109 -
2021-10-29
Fremont Micro Devices
FT62F08x
10.3.1.2. 向上计数器
TIMx_ARR
0
Overflow
Overflow
Overflow
Overflow
Time
图 10-3 向上计数器
TIM2 计数器只能向上计数。计数器从 0 开始计数向上计数,计到 TIM1_ARR 寄存器所设数值。然后重
新从 0 开始计数并产生一个计数器上溢事件;如果 T2UDIS 设为 0,那么还会产生一个更新事件 UEV。
10.3.1.3. 预分频器
计数时钟可以进行 4bit 的时钟预分频:
fCK_CNT = Fmaster / 2 ( PSCR[3:0] )2(PSCR[3:0])
预分频支持分频自动更新,即在更新事件发生后,能够自动改变预分频值。当 T2CEN 为 0 时,写入预分
频寄存器的值也能直接加载实际应用的预分频寄存器中。
10.3.2. 捕捉比较通道
TIM2CCMRx 寄存器是复用寄存器。
当作为输出比较通道时,TIM2CCMRx 寄存器作为输出配置寄存器,并且第 7 位和第 2 位禁止配置,保
持为默认值;
当作为输入捕捉通道时,TIM2CCMRx 寄存器作为输入配置寄存器;
Rev2.02
- 110 -
2021-10-29
Fremont Micro Devices
FT62F08x
10.3.2.1. 捕捉输入通道
TI1F_ED
TRC
to clock/trigger
TIM2_CH1
TI1
TI1FP1
TI1FP2
Input Filter &
EdgeDetector
IC1
TRC
TIM2_CH2
TI2
TI2FP1
TI2FP2
Input Filter &
EdgeDetector
IC2
TRC
to capture/compare
channel
TIM2_CH3
TI3
Input Filter &
EdgeDetector
TI3FP3
IC3
图 10-4 输入通道框图
10.3.2.2. 输出比较通道
OC1REF
output
control
OC1
OC2REF
output
control
OC2
OC3REF
output
control
OC3
From capture/compare
channels
TIM2_CH1
TIM2_CH2
TIM2_CH3
图 10-5 输出通道框图
TIM2 的输出没有死区功能,没有互补输出功能,也没有刹车功能。
Rev2.02
- 111 -
2021-10-29
Fremont Micro Devices
FT62F08x
10.3.3. TIM2 中断
TIM2 有以下 4 个中断请求源:
⚫
捕捉/比较 3 中断
⚫
捕捉/比较 2 中断
⚫
捕捉/比较 1 中断
⚫
更新中断
在用这些中断之前需要提前打开 TIM2IER 寄存器中的中断使能位 (T2CCxIE 和 T2UIE)。
不同的中断源还可以配置通过 TIM2EGR 寄存器来产生 (软件产生中断)。
Rev2.02
- 112 -
2021-10-29
Fremont Micro Devices
FT62F08x
11. 基本定时器 TIM4
11.1. 特性
◼ 8bit 自动重载向上计数器
◼ 计数时钟可编程预分频
◼ 计数器溢出中断
TIME BASE UNIT
UEV
Auto-reload register
UEV
CK_CNT
fMASTER
UIF
UP-COUNTER
CK_PSC
Prescaler
图 11-1 TIM4 原理框图
11.2. TIM4 相关寄存器汇总
名称
地址
bit7
bit6
bit5
bit4
PCKEN
0x9A
TKEN
I2CEN
UARTEN
SPIEN
CKOCON
0x95
SYSON
CCORDY
TIM4CR1
0x111
T4ARPE
-
T4CKS[1:0]
TIM4IER
0x112
-
-
-
TIM4SR
0x113
-
-
TIM4EGR
0x114
-
-
TIM4CNTR
0x115
TIM4PSCR
0x116
TIM4ARR
0x117
bit2
bit1
bit0
-
-
复位值
TIM4EN TIM2EN TIM1EN
ADCEN 0000 0000
CCOSEL[2:0]
CCOEN 0010 0000
DTYSEL
T4OPM
T4URS
T4UDIS
T4CEN
0-00 0000
-
-
-
-
T4UIE
---- ---0
-
-
-
-
-
T4UIF
---- ---0
-
-
-
-
-
T4UG
---- ---0
T4CNT[7:0]
-
-
0000 0000
-
T4PSC[2:0]
T4ARR[7:0]
表 11-1
Rev2.02
bit3
1111 1111
Timer4 相关用户寄存器汇总
- 113 -
---- -000
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
1 = 使能
TIM4EN
TIM4 模块时钟
SYSON
睡眠模式下,系统时钟控制
0 = 关闭
1 = 使能
0 = 关闭
地址
复位值
PCKEN[3]
0x9A
RW−0
CKOCON[7]
0x95
RW−0
周期的自动预装载
T4ARPE
1 = 使能
(T4ARR 预装载值在更新事件到来时被加载)
TIM4CR1[7]
RW−0
TIM4CR1[5:4]
RW−00
0 = 禁止 (T4ARR 立即被加载)
Timer4 时钟源
T4CKS
00 = Sysclk
10 = LP (*)
01 = HIRC
11 = XT (*)
(*)
FOSC 应相应配置成 LP/XT 或选择 INTOSCIO 模
式, 否则振荡器将不会运行
单脉冲模式
T4OPM
1 = 使能 (下一次更新事件到来时,计数器停止)
TIM4CR1[3]
0x111
RW−0
0 = 关闭 (发生更新事件时,计数器不停止)
当 T4UDIS = 0 时,更新事件中断源
T4URS
1 = 计数器上溢
TIM4CR1[2]
RW−0
TIM4CR1[1]
RW−0
TIM4CR1[0]
RW−0
0 = 软件设置 T4UG 位或计数器上溢
产生更新事件控制
T4UDIS
1 = 禁止
0 = 允许
T4CEN
1 = 使能
TIM4 计数器
0 = 关闭
Timer4 预分频器
T4PSC
000 = 1
100 = 16
001 = 2
101 = 32
010 = 4
110 = 64
011 = 8
111 =128
TIM4PSCR[2:0]
0x116
RW-000
TIM4CNTR[7:0]
0x115
RW−0000 0000
TIM4ARR[7:0]
0x117
RW−1111 1111
注:必须产生更新事件或 T4CEN=0,更新的预分频
值才生效
T4CNT
T4ARR
Timer4 计数值
周期的自动重装载寄存器(预装载值)
注:此值为 0 时,计数器不工作
表 11-2 Timer4 相关用户控制寄存器
Rev2.02
- 114 -
2021-10-29
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
复位值
全局中断
GIE
1 = 使能 (PEIE, T4UIE, T4UG 适用)
INTCON[7]
0 = 全局关闭 (唤醒不受影响)
(T4UIE, T4UG 适用)
外设总中断
RW−0
首地址
+0x0B
1 = 使能
PEIE
Bank
INTCON[6]
RW−0
0 = 关闭 (无唤醒)
T4UIE
T4UG
T4UIF
1
允许更新中断
1 = 使能
TIM4IER[0]
0x112
RW−0
允许更新软件中断
0 = 关闭
TIM4EGR[0]
0x114
WO−0
TIM4SR[0]
0x113
R_W1C−0
更新中断标志位
1 = 更新事件等待响应
0 = 无更新事件
表 11-3 Timer4 中断使能和状态位
11.3. TIM4 时钟源
TIM4 有 4 种时钟源可选,由寄存器位 T4CKS 设置。在 TIM4 的被使能 (PCKEN.TIM4EN=1) 的情
况下,所选择的时钟源被自动使能。
注意:
1.
如果要选择 LP 晶体时钟,系统时钟配置寄存器位 FOSC 必须选择 LP 模式,否则对应的时钟源将
不被使能;
2.
同理,如果要选择 XT 晶体时钟,系统时钟配置寄存器位 FOSC 必须选择 XT 模式,否则对应的时
钟源将不被使能;
SLEEP 模式下,如果 SYSON 为 1,且 TIM4EN=1,则所选择的时钟源将保持振荡,TIM4 将继续工作;
否则,所选的时钟源取决于其他模块的设置情况。
11.4. 预分频器
计数时钟可以进行 3bit 的时钟预分频:
fCK_CNT = Fmaster / 2 ( PSCR[2:0] )
预分频支持分频自动更新,即在更新事件发生后,能够自动改变预分频值。当 T4CEN 为 0 时,写入预分
频寄存器的值也能直接加载实际应用的预分频寄存器中。
11.5. TIM4 中断
TIM4 只有一个中断请求源:
⚫
更新中断 (计数器上溢或计数器初始化)
在用这些中断之前需要提前打开 TIM4IER 寄存器中的中断使能位 (T4UIE)。不同的中断源还可以配置通
过 TIM4EGR 寄存器来产生 (软件产生中断 T4UG)。
1
软件置 1,硬件自动清 0。
Rev2.02
- 115 -
2021-10-29
Fremont Micro Devices
FT62F08x
12. 睡眠模式
睡眠模式下,指令时钟关闭,指令执行停止,大多数模块掉电以降低功耗。如表 12-1 所示,FT62F08x
可根据实际需求在睡眠时有选择地开启各个模块, 而无须指令介入,以使其相应功能如 LVR、LVD、
WDT、Timers、PWM、TOUCH 和 ADC 能在 SLEEP 模式下保持运行。一些模块也可配置成进入
SLEEP 后自动关闭,而无须由指令关闭。
SLEEP 模式下的各模块配置条件
模块
指令时钟
运行
自动关闭?
(始终关闭)
Yes
LVR
LVREN = 00 or (LVREN = 01 & SLVREN=1)
LVD
LVDEN = 1
No
WDT
WDTE or SWDTEN
No
TIMER1
SYSON = 1 & TIM1EN = 1
SYSON =0
TIMER2
SYSON = 1 & TIM2EN = 1
SYSON =0
TIMER4
SYSON = 1 & TIM4EN = 1
SYSON = 0
PWM
LVREN = 10
(跟随 Timer1 或 Timer2)
HIRC / LIRC / EC / LP / XT
(跟随使用它们的外设状态)
ADC
(当 ADCEN = 1 & ADON = 1 且 ADC 所选时钟源保持运行时,ADC 即
可运行)
SPI
(当 SPIEN = 1 且 SPI 所选时钟源保持运行时,SPI 即可运行)
I2C
(当 I2CEN = 1 且 I2C 所选时钟源保持运行时,I2C 即可运行)
USART
(当 UARTEN = 1 且 USART 所选时钟源保持运行时,USART 即可运行)
I/O
(除非 SLEEP 时使能 PWM,否则 I/O 将保持其进入 SLEEP 前的状态)
表 12-1 除指令时钟外,其他模块可根据需求在 SLEEP 模式下保持运行
12.1. 进入 SLEEP
CPU 通过执行 SLEEP 指令进入睡眠模式。进入睡眠时:
1.
若 WDT 使能,则 WDT 的后分频器和定时器将被清零,并重新开始计时
2.
超时标志位 (/TF) = 1
3.
掉电标志位 (/PF) = 0
4.
32kHz LIRC 不受影响,并且由其提供时钟的外设可以在休眠模式下继续工作
5.
LP 晶体振荡器不受影响 (当 TIMx 使用它作为工作时钟时)
6.
I/O 端口保持执行 SLEEP 指令之前的状态 (驱动为高电平、低电平或高阻态)
7.
WDT 之外的复位不受休眠模式影响
关于外设在休眠期间工作的更多详细信息,请参见各个章节。
Rev2.02
- 116 -
2021-10-29
Fremont Micro Devices
FT62F08x
要最大程度地降低电流消耗,应考虑以下条件:
1.
I/O 引脚不应悬空,I/O 作为输入时可打开内部的上拉或下拉
2.
外部电路从 I/O 引脚灌电流
3.
内部电路从 I/O 引脚拉电流
4.
内部弱上拉的引脚
5.
模块使用 32kHz LIRC
6.
模块使用 LP 振荡器
12.2. 睡眠的唤醒
可以通过下列任一事件将器件从休眠状态唤醒:
1.
MCLR 引脚上的外部复位输入 (如果使能)
2.
BOR 复位 (如果使能)
3.
POR 复位
4.
看门狗定时器 (如果使能)溢出
5.
任何外部中断
6.
能够在休眠期间运行的外设产生的中断 (更多信息请参见各个外设)
前 3 个事件会使器件复位,后 3 个事件认为是程序执行的延续。
当执行 SLEEP 指令时,下一条指令 (PC+1) 被预先取出。如果希望通过中断事件唤醒器件,则必须允
许相应的中断允许位。唤醒与 GIE 位的状态无关,如果 GIE 位被禁止,器件将继续执行 SLEEP 指令后
的指令。如果 GIE 位被允许,器件先执行 SLEEP 指令后的指令,然后将调用中断服务程序。如果不想
执行 SLEEP 指令后的指令,用户应该在 SLEEP 指令后面放置一条 NOP 指令。
器件从休眠模式唤醒时,WDT 清零,与唤醒的原因无关。
Rev2.02
- 117 -
2021-10-29
Fremont Micro Devices
FT62F08x
12.2.1. 使用中断唤醒
当禁止全局中断 (GIE 被清零),并且有任一中断源中断标志位置 1 且其中断被使能时,将会发生下列某
一事件:
⚫
⚫
如果在执行 SLEEP 指令之前发生中断
✓
SLEEP 指令将作为 NOP 执行
✓
WDT 和 WDT 预分频器不会清零
✓
STATUS 寄存器的 TO 位不会置 1
✓
STATUS 寄存器的 PD 位不会清零
如果在执行 SLEEP 指令期间或之后发生中断
✓
SLEEP 指令将完全执行
✓
器件将立即从休眠模式唤醒
✓
WDT 和 WDT 预分频器将清零
✓
STATUS 寄存器的 TO 位将置 1
✓
STATUS 寄存器的 PD 位将清零
要确定是否执行了 SLEEP 指令,可以测试 PD 位。如果 PD 位置 1,则说明 SLEEP 指令被作为一条 NOP
指令执行了。
12.3. 睡眠的系统时钟
进入睡眠状态后,CPU 时钟停止,PC 停留在 SLEEP 的下一条地址。默认情况下,系统时钟也会被关
闭。但如果 SYSON 位置 1 时,系统时钟将一直保持运行,在这种情况下,被选择为系统时钟的 HIRC,
XT,LIRC 振荡器将不会被关闭。
注意:如果要使用 PROM 或数据 EEPROM 的写完成中断唤醒,SYSON 必须置 1。
Rev2.02
- 118 -
2021-10-29
Fremont Micro Devices
FT62F08x
13. 中断
ADC_INT
CKMEA_INT
TOUCH_INT
TIM1_INT
to Wakeup
EEIE
EEIF
OSFIE
OSFIF
interrupt
to CPU
LVDIE
LVDIF
PEIE
GIE
USART_INT
PINx_INT
SPI_INT
I2C_INT
TIM2_INT
TIM4_INT
外设中断
图 13-1 中断逻辑框图
FT62F08X 有以下中断源,部分中断可以把 CPU 从睡眠状态唤醒:
⚫
外部管脚中断
⚫
ADC 中断
⚫
LVD 中断
⚫
EEPROM 写完成中断
⚫
慢时钟测量完成中断
⚫
时钟缺失中断
⚫
TIMx 中断
⚫
SPI 中断
⚫
I2C 中断
⚫
USART 中断
⚫
触摸中断
Rev2.02
- 119 -
2021-10-29
Fremont Micro Devices
FT62F08x
13.1. 中断相关寄存器汇总
复位值
名称
地址
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
INTCON
0x0B
GIE
PEIE
EEIE
LVDIE
OSFIE
EEIF
LVDIF
OSFIF
0000 0000
PIE1
0x91
−
−
−
−
−
TKIE
CKMIE
ADCIE
−−−− −000
PIR1
0x11
−
−
−
−
−
TKIF
CKMIF
ADCIF
−−−− −000
TIM1IER
0x215
T1BIE
T1TIE
−
T1CC4IE
T1CC3IE
T1CC2IE
T1CC1IE
T1UIE
00−0 0000
TIM1SR1
0x216
T1BIF
T1TIF
−
T1CC4IF
T1CC3IF
T1CC2IF
T1CC1IF
T1UIF
00−0 0000
TIM1SR2
0x217
−
−
−
T1CC4OF
T1CC3OF
T1CC2OF
T1CC1OF
−
−−−0 000−
TIM1EGR
0x218
−
−
−
T1CC4G
T1CC3G
T1CC2G
T1CC1G
−
−−−0 000−
TIM2IER
0x30D
−
−
−
−
T2CC3IE
T2CC2IE
T2CC1IE
T2UIE
−−−− 0000
TIM2SR1
0x30E
−
−
−
−
T2CC3IF
T2CC2IF
T2CC1IF
T2UIF
−−−− 0000
TIM2SR2
0x30F
−
−
−
−
T2CC3OF
T2CC2OF
T2CC1OF
−
−−−− 000−
TIM2EGR
0x310
−
−
−
−
T2CC3G
T2CC2G
T2CC1G
T2UG
−−−− 0000
TIM4IER
0x112
−
−
−
−
−
−
−
T4UIE
−−−− −−−0
TIM4SR
0x113
−
−
−
−
−
−
−
T4UIF
−−−− −−−0
TIM4EGR
0x114
−
−
−
−
−
−
−
T4UG
−−−− −−−0
SPIIER
0x1C
−
−
−
−
WAKUP
RXERR
RXNE
TXE
−−−− 0000
SPISTAT
0x1E
−
SMODF
SRXOVEN
SBUSY
SRXBMT
STXBMT
WKF
CRCERR
-000 1100
SPICTRL
0x16
SPIF
WCOL
MODF
RXOVRN
TXBMT
SPIEN
0000 0110
SPICFG
0x17
BUSY
MSTEN
CPHA
CPOL
SLAS
NSSVAL
SRMT
RXBMT
0000 0111
I2CITR
0x416
−
−
−
−
−
ITBUFEN
ITEVEN
ITERREN
−−−− −000
I2CSR1
0x417
IICTXE
IICRXNE
−
STOPF
ADD10F
−
ADDF
SBF
00-0 0-00
I2CSR2
0x418
−
−
−
TXARBT
OVR
AF
ARLO
BERR
---0 0000
I2CSR3
0x419
−
−
GCALL
−
−
RDREQ
ACTIVE
RXHOLD
--0- -000
URIER
0x48E
−
−
TCEN
−
IDELE
RXSE
URTE
URRXNE
−−0− 0000
URLSR
0x492
ADDRF
IDLEF
TXEF
BKF
FEF
PEF
OVERF
RXNEF
0010 0000
URTC
0x49C
−
−
−
−
−
−
−
TCF
---- ---1
EPIE0
0x94
外部中断控制寄存器
0000 0000
EPIF0
0x14
外部中断标志位寄存器
0000 0000
TRISA
0x8C
PORTA 方向控制
1111 1111
TRISB
0x8D
PORTB 方向控制
1111 1111
TRISC
0x8E
PORTC 方向控制
1111 1111
TRISD
0x8F
EPS0
0x118
外部中断 EINT3 ~ 0 管脚选择寄存器
0000 0000
EPS1
0x119
外部中断 EINT7 ~ 4 管脚选择寄存器
0000 0000
−
−
NSSM[1:0]
PORTD 方向控制
−−11 1111
表 13-1 中断相关寄存器地址和默认值
Rev2.02
- 120 -
(RW)
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
全局中断
GIE
1 = 使能 (PEIE, 各中断独立使能位适用)
INTCON[7]
RW−0
0 = 全局关闭 (唤醒不受影响)
外设总中断
PEIE
1 = 使能 (各中断独立使能位适用)
INTCON[6]
0 = 关闭 (无唤醒)
EEIE
EE 写完成中断
LVDIE
LVD 中断
OSFIE
时钟缺失中断
EEIF
1
LVD 中断标志位
OSFIF 1
时钟缺失中断标志位
INTCON[5]
1 = 使能
0 = 关闭 (无唤醒)
EE 写完成标志位
LVDIF 1
RW−0
Bank 首地址
1 = Yes (锁存)
0 = No
+0x0B
RW−0
INTCON[4]
RW−0
INTCON[3]
RW−0
INTCON[2]
R_W1C−0
INTCON[1]
R_W1C−0
INTCON[0]
R_W1C−0
表 13-2 INTCON 寄存器
名称
状态
寄存器
TKIE
触摸中断
1 = 使能
PIE1[2]
CKMIE
LIRC 和 HIRC 交叉校准完成中断
0 = 关闭
PIE1[1]
ADCIE
ADC 转换完成中断
TKIF 1
CKMIF
(无唤醒)
触摸中断标志位
1
ADCIF 1
LIRC 和 HIRC 交叉校准完成标志位
ADC 转换完成标志位
1 = Yes (锁存)
地址
RW−0
0x91
RW−0
PIE1[0]
RW−0
PIR1[2]
R_W1C−0
PIR1[1]
0 = No
复位值
0x11
PIR1[0]
R_W1C−0
R_W1C−0
表 13-3 PIE1 和 PIR1 寄存器
名称
状态
EPIEx
外部中断使能位
EPIF0x 1
外部中断标志位
1 = 使能
0 = 禁止
1 = Yes (锁存)
0 = No
寄存器
地址
复位值
EPIE0[7:0]
0x94
RW−00000000
EPIF0[7:0]
0x14
R_W1C−00000000
表 13-4 EPIE0 和 EPIF0 寄存器
1
写 1 清 0,写 0 无效。建议只使用 STR、MOVWI 指令进行写操作,而不要用 BSR 或 IOR 指令。
Rev2.02
- 121 -
2021-10-29
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
复位值
T1BIE
Timer1 刹车中断
TIM1IER[7]
RW−0
T1TIE
Timer1 触发中断
TIM1IER[6]
RW−0
T1CC4IE
Timer1 捕获/比较通道 4 中断
TIM1IER[4]
RW−0
T1CC3IE
Timer1 捕获/比较通道 3 中断
TIM1IER[3]
T1CC2IE
Timer1 捕获/比较通道 2 中断
TIM1IER[2]
RW−0
T1CC1IE
Timer1 捕获/比较通道 1 中断
TIM1IER[1]
RW−0
T1UIE
Timer1 更新事件中断
TIM1IER[0]
RW−0
T1BG
Timer1 刹车软件中断
TIM1EGR[7]
WO−0
Timer1 捕获/比较通道 4 软件中断
TIM1EGR[4]
WO−0
T1CC3G 2
Timer1 捕获/比较通道 3 软件中断
TIM1EGR[3]
T1CC2G 2
Timer1 捕获/比较通道 2 软件中断
1 = 使能
TIM1EGR[2]
WO−0
T1CC1G 2
Timer1 捕获/比较通道 1 软件中断
0 = 关闭 (无唤醒)
TIM1EGR[1]
WO−0
T2CC3IE
Timer2 捕获/比较通道 3 中断
TIM2IER[3]
RW−0
T2CC2IE
Timer2 捕获/比较通道 2 中断
TIM2IER[2]
T1CC4G
2
0x215
0x218
RW−0
WO−0
RW−0
0x30D
T2CC1IE
Timer2 捕获/比较通道 1 中断
TIM2IER[1]
RW−0
T2UIE
Timer2 更新事件中断
TIM2IER[0]
RW−0
T2CC3G 2
Timer2 捕获/比较通道 3 软件中断
TIM2EGR[3]
WO−0
T2CC2G 2
Timer2 捕获/比较通道 2 软件中断
TIM2EGR[2]
T2CC1G 2
Timer2 捕获/比较通道 1 软件中断
TIM2EGR[1]
WO−0
T2UG 2
Timer2 更新事件软件中断
TIM2EGR[0]
WO−0
T4UIE
Timer4 更新事件中断
TIM4IER[0]
0x112
RW−0
T4UG 2
Timer4 更新事件软件中断
TIM4EGR[0]
0x114
WO−0
WO−0
0x310
表 13-5 TIMx 中断控制寄存器
2
软件置 1, 硬件自动清 0。
Rev2.02
- 122 -
2021-10-29
Fremont Micro Devices
名称
T1BIF
3
FT62F08x
状态
寄存器
地址
复位值
Timer1 刹车中断标志位
TIM1SR1[7]
R_W1C−0
T1TIF 3
Timer1 触发事件中断标志位
TIM1SR1[6]
R_W1C−0
T1CC4IF 3
Timer1 捕获/比较通道 4 中断标志位
TIM1SR1[4]
R_W1C−0
T1CC3IF 3
Timer1 捕获/比较通道 3 中断标志位
TIM1SR1[3]
T1CC2IF 3
Timer1 捕获/比较通道 2 中断标志位
TIM1SR1[2]
R_W1C−0
T1CC1IF 3
Timer1 捕获/比较通道 1 中断标志位
TIM1SR1[1]
R_W1C−0
T1UIF 3
Timer1 更新事件中断标志位
TIM1SR1[0]
R_W1C−0
TIM1SR2[4]
R_W1C−0
TIM1SR2[3]
R_W1C−0
T1CC4OF 3
T1CC3OF 3
T1CC2OF 3
T1CC1OF 3
Timer1 捕获/比较通道 4 重复捕获
中断标志位
Timer1 捕获/比较通道 3 重复捕获
中断标志位
0x216
R_W1C−0
0x217
Timer1 捕获/比较通道 2 重复捕获
中断标志位
1 = Yes(锁存)
Timer1 捕获/比较通道 1 重复捕获
0 = No
中断标志位
TIM1SR2[2]
R_W1C−0
TIM1SR2[1]
R_W1C−0
R_W1C−0
T2CC3IF 3
Timer2 捕获/比较通道 3 中断标志位
TIM2SR1[3]
T2CC2IF 3
Timer2 捕获/比较通道 2 中断标志位
TIM2SR1[2]
T2CC1IF 3
Timer2 捕获/比较通道 1 中断标志位
TIM2SR1[1]
T2UIF 3
Timer2 更新事件中断标志位
TIM2SR1[0]
R_W1C−0
TIM2SR2[3]
R_W1C−0
T2CC3OF 3
T2CC2OF 3
T2CC1OF 3
T4UIF 3
Timer2 捕获/比较通道 3 重复捕获
中断标志位
Timer2 捕获/比较通道 2 重复捕获
中断标志位
Timer2 捕获/比较通道 1 重复捕获
中断标志位
Timer4 更新事件中断标志位
TIM2SR2[2]
0x30E
0x30F
TIM2SR2[1]
TIM4SR[0]
0x113
写 1 清 0,写 0 无效。建议只使用 STR、MOVWI 指令进行写操作,而不要用 BSR 或 IOR 指令。
Rev2.02
- 123 -
R_W1C−0
R_W1C−0
R_W1C−0
表 13-6 TIMx 中断标志寄存器
3
R_W1C−0
2021-10-29
R_W1C−0
Fremont Micro Devices
FT62F08x
名称
TXE
状态
1 = 使能
发送 BUF 为空中断
TXBMT
STXBMT
RXNE
接收 BUF 为非空中断
RXBMT
SRXBMT
接收 BUF 状态位
地址
复位值
SPIIER[0]
0x1C
RW−0
1= 空
SPICTRL[1]
0x16
RO−1
0 = 非空
SPISTAT[2]
0x1E
RO−1
SPIIER[1]
0x1C
RW−0
1= 空
SPICFG[0]
0x17
RO−1
0 = 非空
SPISTAT[3]
0x1E
RO−1
SPIIER[2]
0x1C
RW−0
SPICTRL[5]
0x16
RW0−0
SPISTAT[6]
0x1E
RO−0
1 = 溢出 (锁存)
SPICTRL[4]
0x16
RW0−0
0 = 正常
SPISTAT[5]
0x1E
RO−0
SPISTAT[0]
0x1E
RW0−0
SPIIER[3]
0x1C
RW−0
SPISTAT[1]
0x1E
RW0−0
0 = 关闭 (无唤醒)
发送 BUF 状态位
寄存器
1 = 使能
0 = 关闭 (无唤醒)
接收错误中断
RXERR
MODF
1 = 使能
(工作模式错误,接收
0 = 关闭 (无唤醒)
溢出,CRC 校验错误)
1 = 错误 (锁存)
4
工作模式错误标志位
SMODF
(主机模式下,NSS 脚使能
输入且为低电平,导致模式
错误)
0 = 正常
RXOVRN 4
SRXOVRN
接收溢出标志位
1 = 错误 (锁存)
CRCERR 4
CRC 校验错误标志位
WAKUP
从机唤醒中断
WKF 4
从 机 唤 醒 ( 接 收 到 数 1 = 已唤醒 (锁存)
据)标志位
0 = 未唤醒,或已被清零
0 = 正确,或已被清零
1 = 使能
0 = 关闭
表 13-7 SPI 中断使能和状态位
4
写 0 清零,写 1 无效
Rev2.02
- 124 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
ITBUFEN
IICTXE
5
IICRXNE
5
寄存器
地址
复位值
FIFO 状态中断
1 = 使能
(IICTXE = 1 或 IICRXNE = 1 时
产生中断)
0 = 关闭 (无唤醒)
I2CITR[2]
0x416
RW−0
TX-FIFO 状态
1= 空
0 = 非空
I2CSR1[7]
RX-FIFO 状态
1 = 非空
0= 空
I2CSR1[6]
RO−0
0x417
RO−0
1 = 使能
0 = 关闭 (无唤醒)
事件中断产生条件:
事件中断
ITEVEN
SBF = 1 (主机)
I2CITR[1]
0x416
RW−0
ADD10F = 1 (主机)
ADDF = 1 (主/从机)
STOPF = 1 (从机)
STOPF
6
ADD10F 6
从机检测 Stop 标
志
1 = 检测到 (ACK 后置位)
0 = 未检测到
I2CSR1[4]
RO−0
主机发送高有效位
1 = 已发送 (ACK 后置位)
0 = 未发送
I2CSR1[3]
RO−0
地址标志
主机发送地址 LSB:
ADDF 6
主机发送低有效位
地址 / 从机接收
地址匹配标志
1 = 完成 (ACK 后置位)
0 = 未完成
从机接收地址:
0x417
I2CSR1[1]
RO−0
I2CSR1[0]
RO−0
1 = 匹配或识别到 General Call
0 = 不匹配
注:NACK 后不会置位 ADDF
SBF 6
主机发送 Start 标
志
1 = 已发送
0 = 未发送
1 = 使能
0 = 关闭 (无唤醒)
错误中断产生条件:
ITERREN
错误中断
OVR = 1
I2CITR[0]
0x416
AF = 1
ARLO = 1
BERR = 1
5
写 DR 或 ENABLE = 0 时硬件自动清零。
6
读 I2CSR1 或 ENABLE = 0 时硬件自动清零。
Rev2.02
- 125 -
2021-10-29
RW-0
Fremont Micro Devices
FT62F08x
名称
TXARBT
7
传输终止标志 (发
送过程中出错或异
常原因导致)
状态
寄存器
地址
复位值
1 = 发生终止
0 = 未发生终止
I2CSR2[4]
RW0−0
I2CSR2[3]
RW0-0
1 = 产生
0 = 未发生
Overrun 产生条件:
OVR
7
Overrun 产生标志
TX-over:当 TX-FIFO 非空时仍写
DR;
RX-over:当 RX-FIFO 非空时仍接收
数据;
0x418
RX-under:当 RX-FIFO 空时进行读操
作;
AF 7
应答 ACK 状态
1 = NACK
0 = ACK
I2CSR2[2]
RW0−0
ARLO 7
主机仲裁失败标志
1 = 产生仲裁失败
0 = 未产生仲裁失败
I2CSR2[1]
RW0−0
BERR 7
总线错误状态 (检
测到错位的 Start /
Stop)
1 = 检测到 (字节传输阶段检测到
Start/Stop 时置位)
0 = 未检测到
I2CSR2[0]
RW0−0
表 13-8
名称
URTE
I2C 中断使能和状态位
状态
发送 BUF 为空中断
1 = 使能
0 = 关闭
寄存器
地址
复位值
URIER[1]
0x48E
RW−0
URLSR[5]
0x492
RO−1
URIER[0]
0x48E
RW−0
URLSR[0]
0x492
RO−0
URIER[5]
0x48E
RW−0
1= 空
TXEF
发送 BUF 状态
0 = 非空
注:写 DATAL(8bit) / DATAH(9bit)
清零
URRXNE
接收 BUF 非空中断
1 = 使能
0 = 关闭
1 = 非空
RXNEF
接收 BUF 状态
0 = 空,或已被清零
注:读 DATAL(8bit) / DATAH(9bit)
清零
TCEN
7
发送完成中断
1 = 使能
0 = 关闭
写 0 清零,或 ENABLE = 0 时硬件自动清零。
Rev2.02
- 126 -
2021-10-29
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
复位值
URTC[0]
0x49C
R_W1C−1
URIER[3]
0x48E
RW−0
URLSR[6]
0x492
RW0−0
URIER[2]
0x48E
RW−0
URLSR[4]
0x492
RW0−0
URLSR[3]
0x492
RW0−0
URLSR[2]
0x492
RW0−0
URLSR[1]
0x492
RW0−0
URMCR[2]
0x491
RW−0
URLSR[7]
0x492
RO−0
1 = 完成
TCF
发送完成标志
0 = 未完成
注:写 1 清零,或写 DATAL(8bit)
/DATAH(9bit)后清零
IDELE
IDLEF
空闲帧中断
8
检测到空闲帧标志
1 = 使能
0 = 关闭
1 = 检测到
0 = 未检测到
1 = 使能
0 = 关闭
接收状态中断产生条件:
RXSE
9
接收状态中断
BKF = 1
FEF = 1
PEF = 1
OVERF = 1
BKF 8
接收到断开帧标志
FEF 8
接收帧错误标志
PEF 8
接收奇偶校验错误
标志
OVERF 8
接收 BUF 溢出标志
WAKE
ADDRF
1 = 接收到
0 = 未接收到,或已被清零
1 = 错误
0 = 正确,或已被清零
1 = 错误
0 = 正确,或已被清零
1 = 溢出
0 = 正常,或已被清零
哑模式唤醒方式
1 = 地址匹配
选择
0 = IDLE 帧
哑模式地址匹配
1 = 匹配
标志
0 = 未匹配
表 13-9
8
9
USART 中断使能和状态位
写 0 清零,写 1 无效。
USART 接收到断开帧,帧错误,奇偶校验错误,接收溢出错误状态。
Rev2.02
- 127 -
2021-10-29
Fremont Micro Devices
FT62F08x
13.2. 外部中断管脚选择
名称
状态
EINT0
EINT0 管脚选择
EINT1
EINT1 管脚选择
EINT2
EINT2 管脚选择
EINT3
EINT3 管脚选择
EINT4
EINT4 管脚选择
EINT5
EINT5 管脚选择
EINT6
EINT6 管脚选择
EINT7
EINT7 管脚选择
寄存器
00 = PA0
10 = PC0
01 = PB0
11 = PD0
00 = PA1
10 = PC1
01 = PB1
11 = PD1
00 = PA2
10 = PC2
01 = PB2
11 = PD2
00 = PA3
10 = PC3
01 = PB3
11 = PD3
00 = PA4
10 = PC4
01 = PB4
11 = PD4
00 = PA5
10 = PC5
01 = PB5
11 = PD5
00 = PA6
10 = PC6
01 = PB6
11 = 保留
00 = PA7
10 = PC7
01 = PB7
11 = 保留
地址
复位值
EPS0[1:0]
RW−00
EPS0[3:2]
RW−00
0x118
EPS0[5:4]
RW−00
EPS0[7:6]
RW−00
EPS1[1:0]
RW−00
EPS1[3:2]
RW−00
0x119
EPS1[5:4]
RW−00
EPS1[7:6]
RW−00
表 13-10 外部中断管脚选择寄存器
13.3. 中断的使能
由图 13-1 可知,要想使用中断,除了该中断的相关使能位 (xxxIE) 需要置 1 外,总中断开关 (GIE) 也
需要打开。
ADC,慢时钟测量,触摸按键,TIMx,外部管脚,SPI,I2C 以及 USART 模块被归类了外设中断,除了
其自身的中断使能要打开外,另外一个外设总中断开关 PEIE 也需要置 1。
另外,各中断标志位的置起并跟中断使能位无关。
13.4. 中断的响应时间
中断响应延时定义为从发生中断事件到开始执行中断向量处的代码所需要的时间。正常情况下 (即不是
处于 EEPROM 或 PROM 的写周期),同步中断的响应延时为 3 或 4 个指令周期。对于异步中断,响应
延时为 3 至 5 个指令周期,具体取决于中断发生的时间和正在执行的指令。
13.5. 睡眠下的中断
由于睡眠状态下系统时钟被关闭,部分使用系统时钟作为时钟的外设将停止工作。可以将 CPU 唤醒的中
断源有:
⚫
外部管脚中断
Rev2.02
- 128 -
2021-10-29
Fremont Micro Devices
⚫
EEPROM 写完成中断
⚫
LVD 中断
⚫
TOUCH 中断
⚫
TIMx 中断 (使用慢时钟时)
⚫
ADC 中断
FT62F08x
注意:唤醒 CPU 不要求 GIE 使能。GIE 为 0 时,CPU 唤醒后将执行 SLEEP 指令后面的代码,而非中
断向量。
当 CKOCON.SYSON 为 1 时,系统时钟保持运行,所以其它直接使用系统时钟的外设也可以把 CPU 唤
醒,换言之,在这种条件下,所有中断都能唤醒 CPU。
13.6. 现场保护
进入中断时,中断控制单元将返回的 PC 地址保存在堆栈中。且,以下寄存器自动保存在影子寄存器中:
⚫
W 寄存器
⚫
STATUS 寄存器 (TO 和 PD 状态标志位除外)
⚫
BSREG 寄存器
⚫
FSR 寄存器
⚫
PCLATH 寄存器
退出中断服务程序时,这些寄存器将自动恢复。在 ISR 期间对这些寄存器所做的任何修改都将丢失。如
果需要修改任何这些寄存器,应修改相应的影子寄存器,并在退出 ISR 时恢复此新值。影子寄存器在
Bank31 中,可读写。根据用户应用程序的要求,可能还需要保存其他寄存器,这些额外的寄存器则需要
用户自行处理。
Rev2.02
- 129 -
2021-10-29
Fremont Micro Devices
FT62F08x
14. 数据 EEPROM 和 PROM
数据 EEPROM 和闪存程序存储器是可读可写的。这两种存储器没有直接映射到数据存储器空间,而是
通过特殊功能寄存器 (SFR) 间接寻址。有 7 个 SFR 用于访问这两种存储器:
⚫
EECON1
⚫
EECON2
⚫
EECON3
⚫
EEDATL
⚫
EEDATH
⚫
EEADRL
⚫
EEADRH
当与数据 EEPROM 模块接口时,EEDATL 寄存器存放要读写的 8 位数据,EEADRL 寄存器存放被访问
的 EEDATL 单元的地址。这些器件具有 256 字节的数据 EEPROM,地址范围从 0h 到 0FFh。
访问程序存储器模块时,EEDATH:EEDATL 寄存器对形成双字节字,存放要读/写的 14 位数据,而
EEADRL 和 EEADRH 寄存器形成双字节字,存放被读取的程序存储单元的 15 位地址。
EEPROM 数据存储器允许以字节为单位进行读写。EEPROM 字节写操作会自动擦除目标存储单元并写
入新数据 (在写入前擦除)。写入时间由片上定时器控制。写入和擦除电压由片上电荷泵产生,此电荷泵
能在器件电压范围内正常工作,用于字节或字操作。
器件能否对程序存储器的特定块执行写操作取决于配置字寄存器位 FSECPB0[7:0]的设置。然而,始终允
许程序存储器的读操作。
当器件被代码保护时,调试接口将不再能访问数据或程序存储器。在代码保护时,CPU 仍可继续读写数
据 EEPROM 存储器和闪存程序存储器。
14.1. DATA EEPROM 相关寄存器汇总
名称
状态
1
EEADR
EEDAT
2
EEPGD
寄存器
地址
复位值
PROM / DATA EEPROM 地址低 8 位
EEADRL[7:0]
0x191
RW−0000 0000
PROM / DATA EEPROM 地址高 7 位
EEADRH[6:0]
0x192
RW−000 0000
PROM / DATA EEPROM 数据低 8 位
EEDATL[7:0]
0x193
RW−xxxx xxxx
PROM / DATA EEPROM 数据高 6 位
EEDATH[5:0]
0x194
RW−xx xxxx
存储器选择位
1 = 访问 PROM
0 = 访问 DATA EEPROM
EECON1[7]
0x195
PROM / DATA EEPROM 或配置寄存器选择位
CFGS
1 = 访问配置寄存器 (读访问)
RW−0
EECON1[6]
RW−0
0 = 访问 PROM 或 DATA EEPROM
1
在写周期 (EEPROM: 3 ~ 5ms, PROM: 0.75 ~ 1.25ms) 内,该寄存器不可写。用该寄存器访问程序存储器时,地址范
围必须位于 0~0x1FFF,否则无法完成读写访问。
2
在写周期 (EEPROM: 3 ~ 5ms, PROM: 0.75 ~ 1.25ms) 内,该寄存器不可写。
Rev2.02
- 130 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
PROM 擦除使能位
1 = 在下一条 WR 命令执行擦除操作
FREE
3
(擦除完成后由硬件清零)
EECON1[4]
RW−0
EECON1[3]
RW−x
EECON1[2]
RW−0
EECON1[1]
RW1−0
EECON1[0]
RW1−0
0 = 在下一条 WR 命令执行写操作
注:仅当 CFGS = 0 且 EEPGD = 1 时有效
PROM / DATA EEPROM 擦除/写错误标志位
WRERR
1 = 中止 (除 POR 之外的任何复位)
0 = 正常完成
编程/擦除使能位
WREN
4
1 = 使能
0 = 禁止
PROM / DATA EEPROM 写控制位
WR
5
1 = 启动一次写或写正在进行中(完成后重置为 0)
0 = 完成
PROM / DATA EEPROM 读控制位
RD
1 = Yes (保持 4 个 SysClk 周期后清零)
0 = No
( 读操作只占用一个周期 )
PROM / DATA EEPROM 写操作解锁控制寄存器
EECON2
在 EECON1 寄存器的 WR 置位前,必须先写
0x55,随后是 0xAA,用于解锁写操作。这些写
EECON2[7:0]
0x196
WO−xxxx xxxx
EECON3[0]
0x198
RW−0
WProof3 [6]
0x391
RW−0
操作必须在连续的指令周期完成
PROM / DATA EEPROM 读使能
WREN3
1 = 使能 (置 1 后至少要等 0.2μs 才能发起 DATA
EEPROM 读)
0 = 禁止
DATA EEPROM 自动擦除 (≥I 版适用)
PONLY
1 = No (不擦除,只写)
0 = Yes (先擦除,再写)
表 14-1
3
4
5
EEPROM 相关用户控制寄存器
访问数据 EEPROM 时:该位不起作用,下一条 WR 命令将启动一个擦除周期和一个写周期。
在写周期内,禁止对该寄存器位写。
软件写 1 后至少要等 1 个系统时钟才能回读。
Rev2.02
- 131 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
1 = 使能
GIE
(PEIE, EEIE 适用)
全局中断
0 = 全局关闭
INTCON[7]
RW−0
(唤醒不受影响)
PEIE
外设总中断
EEIE
EEIF
1 = 使能 (EEIE 适用)
0 = 关闭 (无唤醒)
EEPROM 写完成中断
6
1 = 使能
0 = 关闭 (无唤醒)
EEPROM 写完成中断
1 = Yes (锁存)
标志位
0 = No
Bank
INTCON[6]
首 地 址
RW−0
+0x0B
INTCON[5]
RW−0
INTCON[2]
R_W1C−0
表 14-2 EEPROM 中断使能和状态位
14.2. EEADRL 和 EEADRH 寄存器
EEADRH:EEADRL 寄存器对可以寻址最大 256 字节的数据 EEPROM 或最大 32k 字的程序存储器。
当选择程序地址值时,地址的高字节写入 EEADRH 寄存器而低字节被写入 EEADRL 寄存器。当选择
EEPROM 地址值时,只将地址的低字节写入 EEADRL 寄存器。
14.2.1. EECON1 和 EECON2 寄存器
EECON1 是访问 EE 存储器的控制寄存器。
控制位 EEPGD 决定访问的是程序存储器还是数据存储器。当它为 0 时,任何后续操作都将针对 EEPROM
存储器进行。当置 1 时,任何后续操作都将针对程序存储器进行。复位后,EEPGD 清 0,即默认选中
EEPROM。
控制位 RD 和 WR 分别启动读和写。用软件只能将这些位置 1 而无法清零。在读或写操作完成后,由硬
件将它们清零。由于无法用软件将 WR 位清零,可避免因意外而过早地终止写操作。
当 WREN 位置 1 时,允许执行写操作。上电时,WREN 位被清零。在正常运行中当写操作被复位中断
时,WRERR 位置 1。在这些情况下,复位后用户可以检查 WRERR 位并执行相应的错误处理程序。当
写操作完成时,PIR2 寄存器的中断标志位 EEIF 被置 1。该标志位必须用软件清零。
读 EECON2 得到的是全 0。EECON2 寄存器仅在数据 EEPROM 写过程中使用。要使能写操作,必须将
特定模式写入 EECON2。
14.3. 使用数据 EEPROM
数据 EEPROM 是高耐久性、可字节寻址的阵列,已将其优化以便存储频繁更改的信息 (例如:程序变量
或其他经常更新的数据)。软件开发者应将不频繁更改的变量 (例如常量、ID 和校准值等) 存储在闪存程
序存储器中,以免超出 EEPROM 字节最大的写允许次数。
6
写 1 清 0,写 0 无效。建议只使用 STR、MOVWI 指令进行写操作,而不要用 BSR 或 IOR 指令。
Rev2.02
- 132 -
2021-10-29
Fremont Micro Devices
FT62F08x
14.3.1. 读数据 EEPROM 存储器
要读取数据存储单元,用户必须先把 EECON3 的 DRDEN 置 1 并等待 0.2μs,然后把地址写入 EEADRL
寄存器,清零 EECON1 寄存器的 EEPGD 和 CFGS 控制位,再置 1 控制位 RD。在紧接着的下一个周
期,EEDATL 寄存器中就有了数据;因此,该数据可由下一条指令读取。EEDATL 将把此值保持至下一
次读取或用户向该单元写入数据时 (在写操作过程中) 为止。
读数据 EEPROM,示例:
BANKSEL
BSR
EEADRL
;
EECON3, DRDEN
LDWI
STR
BCR
BCR
BSR
LDR
DATA_EE_ADDR
EEADRL
EECON1, CFGS
EECON1, EEPGD
EECON1, RD
EEDATL, W
;DRDEN= 1
;wait 0.2us here
;
;Data Memory Address to read
;Deselect Config space
;Point to DATA memory
;EE Read
;W = EEDATL
注意:
1.
无论 CPB 为何值,软件总是可以读取 EEPROM;
2.
所需数据读完后,用户要清 DRDEN 以节省功耗;
14.3.2. 写数据 EEPROM 存储器
要写 EEPROM 数据存储单元,用户应首先将该单元的地址写入 EEADRL 寄存器并将数据写入 EEDATL
寄存器。然后用户必须按特定顺序开始写入每个字节,且要确保 EECON3.DRDEN 清 0。
如果未完全按照上述顺序 (即,首先将 0x55 写入 EECON2,随后将 0xAA 写入 EECON2,最后将 WR
位置 1) 逐字节写入,将不会启动写操作。在该代码段中应禁止中断。
此外,必须将 EECON1 中的 WREN 位置 1 以使能写操作。这种机制可防止由于代码执行错误 (异常) 导
致误写数据 EEPROM。除了更新 EEPROM 时以外,用户应始终保持 WREN 位清零。WREN 位不能由
硬件清零。
一个写序列启动后,清零 WREN 位将不会影响此写周期。除非 WREN 位置 1,否则 WR 位将无法置 1。
写周期完成时,WR 位由硬件清零并且 EE 写完成中断标志位 (EEIF) 置 1。用户可以允许中断或查询此
位。EEIF 必须用软件清零。
注意:软件对 EECON1.WR 写 1 后,至少等待一个系统时钟 (NOP 或者任何别的指令) 软件才能对该位
进行读判断,否则将读回 0,进而影响程序的流程 (比如误认为写结束)。
14.3.3. 自动擦除功能
将数据写入字节(byte)的过程包括 2 步:先擦除字节,再编程字节。擦除操作将字节的所有 bits 擦成“1”,
而编程操作会有选择地将个别 bits 写成“0”。本芯片内置自动擦除功能(设置 PONLY = 0),即编程前会先
自动执行擦除操作。除高温环境外,建议使能自动擦除功能。
如果使能自动擦除,多次编程 FF 数据实际为多次擦除相应字节。然而多次编程非 FF 数据实际只对相应
字节进行了一次编程,因为每次编程前都会先自动擦除。只有当自动擦除功能关闭时,重复编程才会有
累积效应。某些情况下,比如在非常高的温度下,可能会需要关闭自动擦除功能,并进行重复编程以确保
Rev2.02
- 133 -
2021-10-29
Fremont Micro Devices
FT62F08x
编程成功。流程如下:
1. 确保自动擦除使能。
2. 擦除字节。
3. 读 DATA EEPROM。
4. 如果字节数据为 FF 则继续,否则返回步骤(2)。
5. 再执行相同次数的步骤(2)即擦除操作,以确保擦除强度。
6. 关闭自动擦除。
7. 编程期望值。
8. 读 DATA EEPROM。
9. 如果字节数据为期望值则继续,否则返回步骤(7)。
10. 再执行相同次数的步骤(7)即累积编程,以确保编程强度。
14.3.4. 防止误写操作的保护措施
有些情况下,用户并不希望向数据 EEPROM 存储器写入数据。为了防止 EEPROM 误写操作,器件内建
了各种保护机制。上电时,清零 WREN。同时,上电延时定时器 (64ms 的延时) 也会阻止对 EEPROM
进行写操作。
写启动序列和 WREN 位共同防止在以下情况下发生意外写操作:
⚫
欠压
⚫
电源故障
⚫
软件故障
14.3.5. 关于 GIE 的清 0
在启动 EEPROM 和 PROM 写之前,需要对 EECON2 顺序写 0x55 和 0xAA,且不能被打断。所以在做
该开锁动作前应把 GIE 清 0 以屏蔽可能的中断。而由于中断的响应延时为 2 个 NOP,故在第一次清 GIE
后,等两个 NOP 再次判断 GIE 是否为 0,如以下代码示:
GIE= 0;
NOP;
NOP;
while (GIE) { GIE= 0;};
MCLK
CLK_Q1
软件写DRDEN
DRDEN
EEADR
A0
在下一指令周期锁存
EEDAT
D0
0.2us
IREG
BSR EECON1, RD
DROM_RD
图 14-1 2T 模式下软件读 EEPROM 时序
Rev2.02
- 134 -
2021-10-29
Fremont Micro Devices
FT62F08x
写数据 EEPROM,示例:
该程序流
不能被中
断
BANKSEL EEADRL
LDWI DATA_EE_ADDR ;
STR EEADRL
LDWI DATA_EE_DATA ;
STR EEDATL
BCR EECON1, CFGS
BCR EECON1, EEPGD
BSR EECON1, WREN
;
BCR INTCON, GIE
NOP
NOP
BTSC INTCON, GIE
GOTO $-1
;Disable INTs.
LDWI 55h
STR EECON2
LDWI 0AAh
STR EECON2
;Data Memory Address to write
;Data Memory Value to write
;Deselect Configuration space
;Point to DATA memory
;Enable writes
;Test again
;
;Write 55h
;
;Write AAh
BSR EECON1, WR
BSR INTCON, GIE
BCR EECON1, WREN
BTSC EECON1, WR
LJUMP $-2
;Set WR bit to begin write
;Enable Interrupts
;Disable writes
;Wait for write to complete
;Done
注意:
1.
数据 EEPROM 写周期并不暂停指令的执行。
2.
清完 GIE 之后等待两个 NOP 再判断一个 GIE 是否被清掉,以避免因中断返回的 GIE 置 1。
14.4. 闪存程序存储器概述
了解闪存程序存储器结构对于擦除和编程操作非常重要。闪存程序存储器按行排列。每行包括固定数量
的 14 位程序存储器字。行是用户软件可擦除的最小块大小。只有当目标地址位于未受写保护的存储器段
内 (由配置字寄存器的 CPB 和 FSECPB0 定义),才能对闪存程序存储器进行写或擦除操作。擦除某行
后,用户可以对该行的部分或全部进行重新编程。写入程序存储器行的数据将被写入 14 位宽的数据写锁
存器中。用户不能直接访问这些写锁存器,但是可以通过对 EEDATH:EEDATL 寄存器对的连续写入来加
载写锁存器的内容。
数据写锁存器数并不等于行单元数,例如 FT62F08X 一行有 64 个单元,但只有 1 个写锁存器。编程时,
用户软件需要填充该组写锁存器并多次启动编程操作,才能完全重新编程擦除的行 (页)。例如,具有 64
字的行大小和 1 个写锁存器的器件需要将数据装入写锁存器并启动编程操作 64 次。
注:如果用户只想修改部分以前编程的行,那么必须读取整行的内容并保存在 RAM 中,然后进行擦除。
Rev2.02
- 135 -
2021-10-29
Fremont Micro Devices
FT62F08x
14.4.1. 读闪存程序存储器
要读程序存储单元,用户必须:
1)
将最低有效地址位和最高有效地址位写入 EEADRH:EEADRL 寄存器对
2)
将 EECON1 寄存器的 CFGS 位清零
3)
将 EECON1 寄存器的 EEPGD 控制位置 1
4)
然后,将 EECON1 寄存器的控制位 RD 置 1
一旦将读控制位置 1,闪存程序存储器控制器将使用第二个指令周期读取数据。这会导致紧跟“BSR
EECON1,RD”指令后的第二条指令被忽略。在紧接着的下一个周期,EEDATH:EEDATL 寄存器对中就有
数据了,因此可在随后的指令中将该数据读作两个字节。
EEDATH:EEDATL 寄存器对将把此值保存至下一次读操作或用户向该单元写入数据时为止。
注:
1.
要求程序存储器读操作后的两条指令为 NOP。这可以防止用户在 RD 位置 1 后的下一条指令执行双
周期指令;
2.
不管 CP 位的设置如何,软件都可以读取闪存程序存储器;
读程序存储器,示例
* This code block will read 1 word of program
* memory at the memory address: PROG_ADDR_HI: PROG_ADDR_LO
* data will be returned in the variables: PROG_DATA_HI, PROG_DATA_LO
BANKSEL EEADRL
LDWI PROG_ADDR_LO
STR EEADRL
; Select Bank for EEPROM registers
;
; Store LSB of address
LDWI PROG_ADDR_HI
STR EEADRH
;
; Store MSB of address
BCR EECON1,CFGS
BSR EECON1,EEPGD
; Do not select Configuration Space
; Select Program Memory
BCR INTCON,GIE
; Disable interrupts
BSR EECON1,RD
; Initiate read
NOP
NOP
; Executed(Figure 8.3.1)
; Ignored(Figure 8.3.1)
BSR INTCON,GIE
; Restore interrupts
LDR EEDATL,W
STR PROG_DATA_LO
; Get LSB of word
; Store in user location
LDR EEDATH,W
STR PROG_DATA_HI
; Get MSB of word
; Store in user location
Rev2.02
- 136 -
2021-10-29
Fremont Micro Devices
FT62F08x
14.4.2. 擦除闪存程序存储器
当执行代码时,程序存储器只能按行擦除。要擦除行:
1)
将要擦除的新行地址装入 EEADRH:EEADRL 寄存器对
2)
将 EECON1 寄存器的 CFGS 位清零
3)
将 EECON1 寄存器的 EEPGD、FREE 和 WREN 位置 1
4)
依次将 0x55 和 0xAA 写入 EECON2 (闪存编程解锁序列)
5)
将 EECON1 寄存器的控制位 WR 置 1,以开始擦除操作
6)
查询 EECON1 寄存器的 FREE 位,以确定行擦除何时结束
程序存储器的行擦除,示例
; This row erase routine assumes the following:
; 1. A valid address within the erase block is loaded in ADDRH:ADDRL
; 2. ADDRH and ADDRL are located in shared data memory 0x70 - 0x7F (common RAM)
BCR INTCON,GIE
; Disable ints so required sequences will execute properly
NOP
NOP
BTSC INTCON, GIE
GOTO $-1
BANKSEL EEADRL
LDR ADDRL,W
STR EEADRL
该程序流
不能被中
断
; Load lower 8 bits of erase address boundary
LDR ADDRH,W
STR EEADRH
; Load upper 6 bits of erase address boundary
BSR EECON1,EEPGD
BCR EECON1,CFGS
BSR EECON1,FREE
BSR EECON1,WREN
; Point to program memory
; Not configuration space
; Specify an erase operation
; Enable writes
LDWI 55h ; Start of required sequence to initiate erase
STR EECON2
; Write 55h
LDWI 0AAh
;
STR EECON2
; Write Aah
BSR EECON1,WR
NOP
NOP
; Set WR bit to begin erase
; Any instructions here are ignored as processor
; halts to begin erase sequence
; Processor will stop here and wait for erase complete.
; after Erase processor continues with 3rd instruction
BCR EECON1,WREN ; Disable writes
BSR INTCON,GIE
; Enable interrupts
在“BSR EECON1,WR”指令后,处理器需要两个周期来设置擦除操作。用户必须在 WR 位置 1 后,执行
两条 NOP 指令。处理器将暂停内部操作,通常为 1ms 擦除时间。这不是休眠模式,因为时钟和外设将
继续运行。擦除周期后,处理器从 EECON1 写指令后的第三条指令继续操作。
Rev2.02
- 137 -
2021-10-29
Fremont Micro Devices
FT62F08x
14.4.3. 写闪存程序存储器
使用以下步骤编程程序存储器:
1)
装入要编程的字的起始地址
2)
将数据装入写锁存器
3)
启动编程操作
4)
重复第 1 至 3 步,直到写入所有数据
写入程序存储器之前,要写入的字必须已擦除或者以前未写入过。程序存储器一次只能擦除一行。启动
写操作时不会自动擦除。
程序存储器一次只能写入一个字,请参见图 14-2 (对带 1 个写锁存器的程序存储器进行字写操作)。程序
存储器写操作完成时,写锁存器将复位为 0x3FFF。
应完成以下步骤,以装载写锁存器和编程程序存储块。可按以下步骤操作:装载数据到写锁存器,启动编
程序列。需要特殊的解锁序列才能将数据装入写锁存器或启动闪存编程操作,不应中断此解锁序列。
1)
将 EECON1 寄存器的 EEPGD 和 WREN 位置 1
2)
将 EECON1 寄存器的 CFGS 位清零
3)
将要写入的单元地址装入 EEADRH:EEADRL 寄存器对
4)
依次将 0x55 和 0xAA 写入 EECON2,然后将 EECON1 寄存器的 WR 位置 1 (闪存编程解锁序列)
5)
等待约 1ms 时间,锁存器数据写入程序存储器
7
5
0
7
EEDATH
0
EEDATL
14
写锁存器
14
程序存储器PROM
图 14-2 对带 1 个写锁存器的 PROM 进行写操作
注:完整的单字写序列,将初始地址装入 EEADRH:EEADRL 寄存器对,数据通过间接寻址载入。
示例中提供的代码序列必须重复多次,以完全编程擦除的程序存储器行。对于 FT62F08X 系列芯片,一
行 (页) 有 64 个 WORD,该代码序列需要重复 64 遍。
Rev2.02
- 138 -
2021-10-29
Fremont Micro Devices
FT62F08x
对包含 1 个写锁存器的 PROM 编程,示例:
; This write routine assumes the following:
; 1. The 2 bytes of data are loaded, starting at the address in DATA_ADDR
; 2. Each word of data to be written is made up of two adjacent bytes in DATA_ADDR, stored in little endian format
; 3. A valid starting address is loaded in ADDRH:ADDRL
; 4. ADDRH and ADDRL are located in shared data memory 0x70 - 0x7F (common RAM);
BCR INTCON,GIE
; Disable ints so required sequences will execute properly
NOP
NOP
BTSC INTCON, GIE
GOTO $-1
BANKSEL EEADRH
LDR ADDRH,W
STR EEADRH
LDR ADDRL,W
STR EEADRL
; Bank 3
; Load target address
;
;
;
LDWI LOW DATA_ADDR ; Load initial data address
STR FSR0L ;
LDWI HIGH DATA_ADDR ; Load initial data address
STR FSR0H ;
BSR EECON1,EEPGD ; Point to program memory
BCR EECON1,CFGS
; Not configuration space
BSR EECON1,WREN
; Enable writes
MOVIW FSR0++
STR EEDATL
MOVIW FSR0++
STR EEDATH
; Load first data byte into lower
;
; Load second data byte into upper
;
START_WRITE:
该程序流
不能被中
断
LDWI 55h
STR EECON2
LDWI 0AAh
STR EECON2
; Start of required write sequence:
; Write 55h
;
; Write Aah
BSR EECON1,WR
NOP
; Set WR bit to begin write
; Any instructions here are ignored as processor
; halts to begin write sequence
; Processor will stop here and wait for write complete.
; after write processor continues with 3rd instruction
NOP
BCR EECON1,WREN
BSR INTCON,GIE
; Disable writes
; Enable interrupts
14.5. 修改闪存程序存储器
修改程序存储器行中的现有数据,且该行内的数据需保留时,必须先读取它并将其保存在 RAM 映像中。
使用以下步骤修改程序存储器:
1)
装入要修改的行的起始地址
2)
从行中读取现有数据并将其保存到 RAM 映像中
3)
修改 RAM 映像以包含要写入到程序存储器的新数据
4)
装入要重新写入的行的起始地址
Rev2.02
- 139 -
2021-10-29
Fremont Micro Devices
FT62F08x
5)
擦除程序存储器行
6)
将来自 RAM 映像的数据装入写锁存器
7)
启动编程操作
根据需要重复第 6 至 7 步多次,以对擦除行进行重新编程。
14.6. 配置字 UCFGx/FCFGx 读访问
当 EECON1 寄存器中的 CFGS = 1 时,不是访问程序存储器或 EEPROM 数据存储器,而是访问配置字
UCFGx。这是 PC[15] = 1 时指向的区域,即当软件发起读操作时,地址是 [0x8000 + EADDR],但不是
所有的地址都可访问,对于未实现的单元,读返回未定义。
14.7. 写校验
根据具体应用,将写入数据 EEPROM 或者程序存储器中的值对照期望写入的值进行校验 (见如下例程)
是一个良好的编程习惯。
对数据 EEPROM 写校验,示例:
BANKSEL
LDR
BSR
XORWR
BTSS
LJUMP
EEDATL
EEDATL, W
EECON1, RD
EEDATL, W
STATUS, Z
WRITE_ERR
;
;EEDATL not changed from previous write
;YES, Read the value written
;
;Is data the same
;No, handle error
;Yes, continue
14.8. PROM 内容保护
PROM 控制器内置加密保护单元,具备以下特性:
⚫
⚫
⚫
全区加密,由 CPB 位控制
分扇区加密,1 扇区=1k words,由 FSECPB0 寄存器控制
解除加密只能通过执行一次包含 UCFG 页在内的全芯片擦除
全加密和分扇区加密区别如下表:
加密方式
CPU 取指
软件读
软件写
串口读
串口写
无
√
√
√(2)
√
√
全区
√
√
√(2)
(1)
(4)
分扇区
√
(1)
(3)
(3)
(5)
注意:
1)
EEDAT 保持旧值不变;
2)
软件不可以编程或擦除 UCFG 页;
3)
只可以读未加密的扇区;
4)
只允许串口做包括 UCFG 在内的全芯片擦除;
5)
只允许串口做包括 UCFG 在内的全芯片擦除,或者对未加密的扇区做页擦除,编程;
6)
任何情况下,软件都不可以做全芯片擦除以及 FCFG 区的编程和擦除
Rev2.02
- 140 -
2021-10-29
Fremont Micro Devices
FT62F08x
15. 12bit ADC 模块
模数转换器 (Analog-to-digital Converter,ADC) 可将模拟输入信号转换为相应的 12 位二进制表征值。
该系列器件采用多个模拟输入复用到一个采样保持电路。采样保持电路的输出与转换器的输入相连接。
转换器通过逐次逼近法产生 12 位二进制值,
并将转换结果保存在 ADC 结果寄存器 (ADRESL:ADRESH)
中。ADC 参考电压可用软件选择为 VDD、外部参考电压或内部产生的参考电压。ADC 可在转换完成时
产生中断。该中断可用于将器件从休眠唤醒。
INT_VREF
VDD
INT_VREF+EXT_CAP
EXT_VREF
PB7/AN0
0000
PC1/AN1
0001
PC0/AN2
0010
PA7/AN3
0011
PA6/AN4
0100
PA4/AN5
0101
PA3/AN6
0110
ADPREF=00
ADNREF=00
ADPREF=01
ADNREF=01
ADPREF=10
ADNREF=10
ADPREF=11
ADNREF=11
GND
INT_VREF+EXT_CAP
EXT_VREF
Vref+ Vref-
A/D
12
ADON / ADCAL
ADFM
0111
PB1/AN7
INT_VREF
左对齐/右对齐处理
1000
¼ VDD
16
GO/DONE
CHS
PWM0
000
PWM1
001
PWM2
010
PWM3
011
PWM4
100
PWM5
101
PWM6
110
ADC_ETR
111
ADRESH/L
[00]
[01]
ADDLY
ADEX
[10]
0.5V
00
2V
01
3V
10
float
11
INT_VREF
[11]
ADINTREF[1:0]
ETGSEL[2:0]
External Trigger
ETGTYP[1:0]
Int Vref
图 15-1 ADC 原理框图
Rev2.02
- 141 -
2021-10-29
Fremont Micro Devices
FT62F08x
15.1. ADC 相关寄存器汇总
名称
地址
bit 7
bit 6
bit 5
bit 4
bit 3
Bit 2
bit 1
bit 0
复位值
UARTEN
SPIEN
TIM4EN
TIM2EN
TIM1EN
ADCEN
0000 0000
CCOEN
0010 0000
PCKEN
0x9A
TKEN
I2CEN
CKOCON
0x95
SYSON
CCORDY
ADRESL
0x9B
A/D 转换结果低有效位
xxxx xxxx
ADRESH
0x9C
A/D 转换结果高有效位
xxxx xxxx
ADCON0
0x9D
ADCON1
0x9E
ADCON2
1
0x9F
ADDLY 1
0x1F
ADCON3 1
0x41A
ADCMPH
0x41B
LEBCON 1
0x41C
DTYSEL
CCOSEL[2:0]
CHS[3:0]
ADFM
ADCAL
ADCS[2:0]
ADINTREF[1:0]
ADEX
ADNREF[1:0]
ETGTYP[1:0]
ADDLY.8
GO/DONE
ADON
ADPREF[1:0]
ETGSEL[2:0]
ADCMPOP
ADCMPEN
ADCMPO
0000 0000
LEBADT
−
ELVDS[1:0]
ADCMPH[7:0]
LEBEN
LEBCH
0000 0000
0000 0000
ADDLY[7:0] / LEBPRL[7:0]
ADFBEN
0000 0000
0000 0−00
0000 0000
EDGS
BKS2
BKS1
BKS0
000− 0000
表 15-1 ADC 相关用户寄存器地址
名称
状态
寄存器
地址
复位值
全局中断
GIE
1 = 使能 (PEIE, ADCIE 适用)
INTCON[7]
0 = 全局关闭 (唤醒不受影响)
Bank 首地址
+ 0x0B
外设总中断
PEIE
RW−0
1 = 使能 (ADCIE 适用)
INTCON[6]
RW−0
0 = 关闭 (无唤醒)
ADC 转换完成中断
ADCIE
1 = 使能
PIE1[0]
0x91
RW−0
PIR1[0]
0x11
R_W1C−0
0 = 关闭 (无唤醒)
ADCIF
2
ADC 转换完成中断标志位
1 = Yes (锁存)
0 = No
表 15-2 ADC 中断使能和状态位
1
2
此寄存器在 ADCEN = 0 时 (PCKEN 寄存器),也可以读写。
写 1 清 0,写 0 无效。建议只使用 STR、MOVWI 指令进行写操作,而不要用 BSR 或 IOR 指令。
Rev2.02
- 142 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
ADC 转换结果低有效位 (LSB)
ADRESL
ADFM=0: ADRESL[7:4] = 低 4 位 (其余为“0”)
ADRESL[7:0]
0x9B
ADRESH[7:0]
0x9C
PCKEN[0]
0x9A
ADFM=1; ADRESL[7:0] = 低 8 位
ADC 转换结果高有效位 (MSB)
ADRESH
ADFM=0: ADRESH[7:0] = 高 8 位
ADFM=1: ADRESH[3:0] = 高 4 位 (其余为“0”)
ADCEN
1 = 使能
ADC 模块时钟
0 = 关闭
复位值
RW−0000
0000
RW−0000
0000
RW−0
ADC 模拟输入通道
CHS
0000 = AN0
0101 = AN5
0001 = AN1
0110 = AN6
0010 = AN2
0111 = AN7
0011 = AN3
1000 = 1/4 VDD
0100 = AN4
1xxx = 保留
ADCON0[7:4]
RW−0000
ADCON0[3]
RW−0
ADC 自动校准使能位 (ADON 为 0 时可设定)
ADCAL
1 = 开启校准 / 校准进行中 (校准完成后自动清零)
0 = 校准完成 / 未开始
0x9D
ADC 触发条件 (GO/DONE)
ADEX
1 = 由 PA4 或 PWM 置位 GO/DONE (硬件触发)
ADCON0[2]
RW−0
ADCON0[1]
RW−0
ADCON0[0]
RW−0
0 = 由指令置位 GO/DONE (软件触发)
ADC 转换启动和状态位
GO/DONE
1 = 由软件, PA4 或 PWM 启动 A/D 转换
(转换完成后自动清零)
0 = 转换完成 / 未进行转换
ADON
LFMOD
1 = ADC 使能
0 = ADC 关闭 (无电流消耗)
1: LIRC = 256 kHz
TCKSRC[7]
0: LIRC = 32 kHz
0X31F
RW−0
A/D 转换结果格式 (参阅 “ADRESH”)
ADFM
ADCON1[7]
1 = 右对齐
RW−0
0 = 左对齐
ADC 转换时钟源
ADCS
Rev2.02
000 = SysClk/2
100 = SysClk/4
001 = SysClk/8
101 = SysClk/16
010 = SysClk/32
110 = SysClk/64
011 = LIRC
111 = LIRC
- 143 -
0x9E
ADCON1[6:4]
2021-10-29
RW−000
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
VADC−REF – (负参考电压)
00 = 内部 VADC−REF
ADNREF
01 = GND
ADCON1[3:2]
RW−00
ADCON1[1:0]
RW−00
ADCON2[7:6]
RW−00
ADCON2[5:4]
RW−00
10 = 内部 VADC−REF + 外部电容 Cap
11 = 外部参考电压 (I/O)
VADC−REF + (正参考电压)
00 = 内部 VADC−REF
ADPREF
01 = VDD
10 = 内部 VADC−REF + 外部电容 Cap
11 = 外部参考电压 (I/O)
内部 VADC−REF
00 = 0.5
ADINTREF
01 = 2.0
10 = 3.0
11 = (未连接)
外部触发沿 (当 ADEX=1 时适用)
00 = (PWM 或 PA4−ADC_ETR) 下降沿
ETGTYP
01 = (PWM 或 PA4−ADC_ETR) 上升沿
10 = 一个 PWM 周期的中点
0x9F
11 = 一个 PWM 周期的终点
注:中点和终点触发仅中心对齐模式 PWM 输出使用
ADDLY.8
ADC 延迟计数器或 LEB 计数器的第 8 位
/ LEBPR9
(参阅 “ADDLY”)
ADCON2[3]
RW−0
ADCON2[2:0]
RW−000
外部触发源 (当 ADEX=1 时适用)
ETGSEL
000 = PWM1, TIM1_CH1
100 = PWM5, TIM2_CH1
001 = PWM2, TIM1_CH2
101 = PWM6, TIM2_CH2
010 = PWM3, TIM1_CH3
110 = PWM7, TIM2_CH3
011 = PWM4, TIM1_CH4
111 = ADC_ETR
ADC 延迟/ LEB (非软件触发,ADEX = 1)
ADDLY /
LEBPRL
(此为低 8 位, ADDLY.8 为高有效位)
延迟时间 = (ADDLY+6)/FADC
ADDLY[7:0]
0x1F
ADCON3[7]
0x41A
RW−0000 0000
(如果启用 PWM 输出触发 ADC, 在 PWM 运行过程中不得
更改 ADDLY)
ADC 阈值比较结果匹配事件触发 PWM 故障刹车
ADFBEN
1 = 使能
0 = 关闭
Rev2.02
- 144 -
2021-10-29
RW−0
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
复位值
ADC 阈值比较的极性
ADCMPOP
1 = ADC 结果的高 8 位 < ADCMPH[7:0]
ADCON3[6]
RW−0
ADCON3[5]
RW−0
ADCON3[4]
RO−0
ADCON3[3]
RW−0
0 = ADC 结果的高 8 位 ≥ ADCMPH[7:0]
ADC 阈值比较
ADCMPEN
1 = 使能
0 = 关闭
ADCMPO
ADC 比较结果输出位
输出比较结果 (每次 AD 转换结束都会更新输出)
LEB 结束后,ADC 开始自动转换
LEBADT
1 = 触发 ADC 转换
0 = 不触发 ADC 转换
ADCMPH
ADC 比较阈值 (仅高 8 位,0.4% steps)
ADCMPH[7:0]
0x41B RW−0000 0000
ADC 触发和 BKIN 的 LEB 使能位
1 = 使能
LEBEN
(当 GO/DONE=1 时进行切换将产生不可预知的结果)
LEBCON[7]
RW−0
0 = 关闭
LEB 信号源
LEBCH
00 = TIM1_CH1
10 = TIM1_CH3
01 = TIM1_CH2
11 = TIM1_CH4
LEBCON[6:5]
0x41C
RW−00
LEB 触发沿
EDGS
1 = 下降沿
LEBCON[3]
RW−0
0 = 上升沿
表 15-3
ADC 相关用户寄存器
15.2. ADC 的配置
配置和使用 ADC 时,必须考虑以下功能:
⚫
校准 ADC
⚫
端口配置
⚫
通道选择
⚫
触发方式选择
⚫
触发源选择
⚫
触发类型选择
⚫
触发延时配置
⚫
ADC 参考电压的选择
⚫
ADC 转换时钟源
⚫
中断控制
Rev2.02
- 145 -
2021-10-29
Fremont Micro Devices
⚫
转换结果的格式
⚫
阈值比较
FT62F08x
注意:
在进行各项配置更改的时候,
需要确保 AD 转换并未正在进行或外部触发功能未开启。建议在 ADON
关闭时进行更改。
15.2.1. 校准 ADC
ADC 在启动转换之前建议至少进行一次校准。校准值会一直保存但不可见,任何复位都会导致其丢失。
ADCON0 寄存器的 ADCAL 设定为 1 可启动自动校准,不可以与 ADON 同时设定为 1。
自校准实现 ADC 偏移误差的自修正,实现原理是断开输入电压 Vin 选择的端口,将其与内部比较器的负
参考电压 Vref-端口连接,以保证输入电压为 Vref-时能够输出零点转换值。
更多信息请参见章节 15.3 “ADC 的工作原理”。
15.2.2. 端口配置
ADC 可用于转换模拟和数字信号。转换模拟信号时,应将相关的 TRIS 和 ANSELA 位置 1 将 I/O 引脚应
配置为模拟功能。更多信息请参见相应的端口章节。
注意:如果定义为数字输入的引脚上存在模拟电压,会导致输入缓冲器传导过大的电流。
15.2.3. 通道选择
ADCON0 寄存器的 CHS 位决定将哪个通道连接到采样保持电路。改变通道时,根据采样稳定的需要可
在启动转换前加入一定延时,硬件已固定有 1.5TAD 的采样延时。更多信息请参见章节 15.3 “ADC 的工作
原理”。
15.2.4. 触发方式选择
ADCON0 寄存器的 ADEX 位决定是否使用外部触发信号。
若 ADEX=0 时,GO/DONE 位可由程序置位,AD 转换完成自动清零。
若 ADEX=1 时,GO/DONE 位将由外部硬件触发置位,AD 转换完成清零。
注意:若选择了前沿消隐触发 ADC,即 LEBADT 设为 1 时,需要先置位 ADEX 和 ADON。
15.2.5. 触发源选择
在设定 ADEX 后,ADCON2 寄存器的 ETGSEL 位决定使用哪个外部触发信号。其中可选 I/O 引脚触发,
需要配置相关寄存器。具体请参见相应的端口章节。
15.2.6. 触发类型选择
ADCON2 寄存器的 ETGTYP 位决定外部触发信号的触发类型。
其中选择 PWM 的中点或终点类型时,触发源将会默认选择 TIM1 中心对齐的 PWM 输出信号。具体请参
见相应的 TIM1 章节。
15.2.7. 触发延时配置
ADCON2 寄存器的 ADDLY.8 位和 ADDLY 寄存器组成 9 位延时计数器,共同决定外部触发信号的触发
延时时间。由于需要同步异步信号,实际延迟时间为:(ADDLY+6)/FADC。
Rev2.02
- 146 -
2021-10-29
Fremont Micro Devices
FT62F08x
注意:若选择了前沿消隐触发功能时,则实际延迟时间为:(ADDLY+3)/FTIM1 + 3/FADC。
15.2.8. ADC 参考电压
ADCON1 寄存器的 ADPREF 位提供对正参考电压的控制,ADNREF 位提供对负参考电压的控制。正/负
参考电压可以是内部参考电压、VDD/GND、内部参考电压加外部电容、外部参考电压。正/负参考电压可
以有各种组合,但不可以同时选择内部参考电压。若发生则强制负参考电压选择 GND。
ADCON2 寄存器的 ADINTREF 位提供对内部参考电压的控制。内部参考电压可以选择 0.5V、2V、3V 或
者悬空。
15.2.9. 转换时钟
ADCS
3
FOSC
ADCLK
DIVIDER
ADC
FRC
图 15-2 ADC 的时钟配置原理
转换时钟源可通过 ADCON1 寄存器的 ADCS 位用软件选择。有以下 7 种时钟选项:
⚫
⚫
⚫
⚫
⚫
⚫
⚫
FOSC/2
FOSC /4
FOSC /8
FOSC /16
FOSC /32
FOSC /64
FRC (内部慢时钟振荡器)
完成一位 (bit) 的转换时间定义为 TAD。完成 12 位转换需要 15 个 TAD 周期 (包括 1.5TAD 的采样时间和
1TAD 的数据传输处理时间),如图 9.3 和 9.6 所示。
进行正确的转换必须满足相应的 TAD 规范。更多信息请参见章节 24.7“电气特性”中的 A/D 转换要求。表
15-4 所示为正确选择 ADC 时钟的示例。
注意:
1.
除非使用的是 FRC,否则任何系统时钟频率的变化均会改变 ADC 时钟频率,这将对 ADC 结果产生
Rev2.02
- 147 -
2021-10-29
Fremont Micro Devices
FT62F08x
负面影响;
2.
FRC 可以是 256kHz 或者是 32kHz,取决于 LFMOD 为何值;
ADC 时钟周期 (TAD)
ADC
系统时钟频率 (Sysclk)
ADCS[2:0]
16MHz
8MHz
4MHz
1MHz
FOSC /2
000
0.125μs
0.25μs
0.5μs
2.0μs
FOSC /4
100
0.25μs
0.5μs
1.0μs
4.0μs
FOSC /8
001
0.5μs
1.0μs
2.0μs
8.0μs
FOSC /16
101
1.0μs
2.0μs
4.0μs
16.0μs
FOSC /32
010
2.0μs
4.0μs
8.0μs
32.0μs
FOSC /64
110
4.0μs
8.0μs
16.0μs
64.0μs
FRC
x11
4.0μs
4.0μs
4.0μs
4.0μs
时钟源
表 15-4 ADC 时钟周期和器件工作频率
TCY to TAD
TAD1
TAD2
TAD3
TAD4
TAD5
TAD6
TAD7
TAD8
b11
b10
b9
b8
b7
b6
TAD10
TAD11
b5
b4
b3
保持电容连接到模拟管脚
ADCMPO比较输出
转换开始
GO置1
TAD9
TAD12
b2
TAD13
TAD14
b1
TAD15
b0
ADIF置1
GO位清0
装载ADRESH和ADRESL
保持电容从模拟输入断开
图 15-3 模数转换 TAD 周期
15.2.10. 中断
ADC 模块可使中断在模数转换完成时产生。ADC 中断标志为 PIR1 寄存器中的 ADIF 位。ADC 中断使能
为 PIE1 寄存器中的 ADIE 位。ADIF 位必须用软件置 1 清零。
注意: 1、无论 ADC 中断是否被打开,ADIF 位在每次正常转换完成时均置 1。
2、自动校准完成、软件停止 AD 转换都不会置位 ADIF。
3、仅当在选择了 FRC 振荡器或打开 SYSON bit 时,ADC 才能在休眠期间工作。
器件工作或处于休眠状态时均可产生中断。如果器件处于休眠状态,中断可唤醒器件。从休眠唤醒时,始
终执行 SLEEP 指令后的那条指令。如果用户试图唤醒器件并恢复顺序执行代码,必须禁止全局中断。如
果允许全局中断,代码执行将转至中断服务程序。
15.2.11. 转换结果的格式
12 位 A/D 转换结果有两种格式,即左对齐和右对齐。ADCON1 寄存器的 ADFM 位控制输出格式。
AD 自动校准值也受输出格式影响。
两种输出格式:
Rev2.02
- 148 -
2021-10-29
Fremont Micro Devices
FT62F08x
ADRESH
ADFM=1
ADRESL
MSB
LSB
bit7
bit0
bit7
bit0
12位ADC结果
ADRESH
ADFM=0
ADRESL
MSB
LSB
bit7
bit0
bit7
bit0
12位ADC结果
图 15-4 ADC 转换结果格式示意图
15.2.12. 阈值比较
ADCMPH 寄存器为 ADC 结果比较阈值,ADCON3 寄存器的 ADCMPEN 位控制比较功能使能,
ADCMPOP 位控制比较极性,ADCMPO 指示比较结果。
ADC 可以在每次转换完成时进行比较。比较结果会一直保持,直到下次转换完成被更新。ADCMPEN
或 ADON 的清零可以关闭比较功能或 AD 模块,同时可以清零 ADCMPO。进入睡眠不会清零
ADCMPO。
在每次比较完成时可以产生故障刹车事件,由 ADCON3 寄存器的 ADFBEN 控制。
ADC_DATA[11:4]
+
0
ADCMPH[7:0]
-
1
ADCMPOP
ADCMPO
ADCMPEN
ADC compare event
ADFBEN
图 15-5 ADC 阈值比较功能框图
15.3. ADC 的工作原理
15.3.1. 启动自动校准
要启动 ADC 模块的自动校准功能,必须将 ADCON0 寄存器的 ADCAL 位置 1。
校准完成后会自动将 ADCAL 清零,并且将校准值更新到 ADRESH/L。
校准完成后 ADC 模块处于已校准状态,直到器件掉电或复位前均有效。
注意:ADCAL 不能跟 ADON 同时为 1。
校准步骤:
1.
查询 ADON 位是否为 1,为 1 则清零;
2.
配置正确的 VREFP 和 VREFN,这点尤其重要,因为校准结果直接影响后面的 ADC 转换;
3.
把 ADCAL 位置 1;
4.
等待 ADCAL 位清 0,至此,自动校准过程结束;
Rev2.02
- 149 -
2021-10-29
Fremont Micro Devices
FT62F08x
15.3.2. 启动转换
要使能 ADC 模块,必须将 ADCON0 寄存器的 ADON 位置 1。
若 ADEX=0 时,将 ADCON0 寄存器的 GO/DONE 位置 1 将启动 AD 转换,。
若 ADEX=1 时,需要外部触发信号才能启动,并且硬件置位 GO/DONE 位,程序置位 GO/DONE 位无
效。
注意:
1. 不应在打开 ADC 的那条指令中将 GO/DONE 位置 1。请参见章节 15.3.7“A/D 转换步骤”
2.
不应在启动 ADC 转换后或等待外部触发时更改 AD 配置。
3.
置位 GO/DONE 位后需要等待一个系统周期才可读回 GO/DONE 标志位。
15.3.3. 转换完成
转换完成时,ADC 模块将:
⚫
将 GO/DONE 位清零
⚫
将 ADIF 标志位置 1
⚫
用新的转换结果更新 ADRESH:ADRESL 寄存器
⚫
若使能阈值比较功能,则更新 ADCMPO 比较结果
15.3.4. 终止转换
如果转换必须在完成前被终止,可用软件将 GO/DONE 位清零。ADRESH:ADRESL 将使用部分完成的
模数转换结果进行更新。未完成位将用最后转换的一位填充。
终止转换需要处理时间,实际处理时间为 4/FAD ,即在这个时间后才会更新 AD 转换结果,若终止时 AD
还未开始转换,则不更新 AD 转换结果。
终止转换不会产生中断。
注意:器件复位将强制所有寄存器回到其复位状态。这样,ADC 模块就被关闭,并且任何待处理的转换
均被终止。
15.3.5. 休眠模式下 ADC 的工作
ADC 模块可在休眠期间工作,这要求将 ADC 时钟源置于 FRC 选项或打开 SYSON 位。
ADC 需要等待 4*TAD 后才开始转换。这允许软件在设置 GO/DONE 位后,执行一个 SLEEP 指令置 MCU
于 SLEEP 模式,从而降低 ADC 转换期间的系统噪声。通过配置 ADC 时钟为 FRC 和清零 SYSON,可进
一步降低系统噪声。
如果允许 ADC 中断,转换完成后器件将从休眠唤醒。如果禁止 ADC 中断,ADC 模块在转换完成后关
闭,尽管 ADON 位保持置 1 状态。
如果 ADC 时钟源不是 FRC 并且 SYSON 未打开,执行一条 SLEEP 指令将使当前转换强制中止,ADC 模
块被直接关闭,尽管 ADON 位保持置 1 状态。
如果需要在休眠模式下搭配其它模块一起使用,具体请参见相应的功能配置章节,如 TIMER、GPIO、
CLK 管理模块。
Rev2.02
- 150 -
2021-10-29
Fremont Micro Devices
FT62F08x
15.3.6. 外部触发器
除了通过软件启动 AD 转换外,还可以通过硬件触发方式启动 AD 转换。在 ADEX 置 1 后,可选择 PWM
通道的边沿或周期、管脚边沿等触发信号自动触发启动 AD 转换 (硬件自动置位 GO/DONE 位)。这允许
在没有软件介入的情况下,定期进行 AD 转换。
通过 ETGSEL (ADCON2[2:0]) 和 ETGTYP (ADCON2[5:4]) 设置来选择触发源和触发类型。同时,还可
以在外部触发信号与启动 AD 转换之间插入触发延时。
在 AD 模块转换过程中 (GO/DONE = 1),任何软件或硬件触发信号都是无效的。若这时停止转换,清零
GO/DONE 位并不会停止触发延时计数。可清零 ADEX 停止触发延时计数。
只有配置 TIMER 为 PWM 输出模式并且使能 PWM 输出时,才会产生 AD 触发信号。更多信息请参见相
应的 TIMER 章节。
注意:
当 LEBEN=1 时,外部触发器被禁止。这种情况下,可以选择把 LEBADT 置 1,此时 ADON 和 ADEX 必
须设置为 1。在消隐周期结束后会触发一次 AD 转换 (硬件自动置位 GO/DONE 位)。
15.3.7. A/D 转换步骤
以下是使用 ADC 进行模数转换的步骤示例:
1.
配置端口:
⚫ 禁止引脚输出驱动器 (见 TRIS 寄存器)
⚫ 将引脚配置为模拟
2.
配置 ADC 模块:
⚫
⚫
⚫
⚫
⚫
⚫
3.
选择 ADC 转换时钟
配置参考电压
选择 ADC 输入通道
配置触发源、类型及延时
选择转换结果的格式
配置 ADC 结果阈值比较
配置 ADC 中断 (可选):
⚫
⚫
⚫
⚫
将 ADC 中断标志清零
允许 ADC 中断
允许外设中断
允许全局中断
4.
进行 ADC 自校准 (可选):
⚫ 将 ADCAL 置 1 启动自校准
⚫ 等待并查询 ADCAL 位,为 0 则校准结束
5.
打开 ADC 模块,并等待所需稳定时间 TST(1);
6.
将 GO/DONE 位置 1 启动转换或等待硬件触发;
7.
等待一个系统周期才可回读 GO/DONE 位;
8.
通过以下情况之一等待 ADC 转换完成:
⚫ 查询 GO/DONE 位
⚫ 等待 ADC 中断 (允许中断时)
Rev2.02
- 151 -
2021-10-29
Fremont Micro Devices
9.
FT62F08x
读取 ADC 结果;
10. 将 ADC 中断标志清零 (在允许了中断的情况下这一步是必需的)。
以下是一段示例代码:
BANKSEL
BSR
TRISB
TRISB,7
;
;Set PB7 to input
BANKSEL
BSR
ANSELA
ANSELA,0
;
;Set PB7 to analog
BANKSEL
LDWI
STR
BANKSEL
ADCON1
B’11110101’
ADCON1
ADCON0
;
;Right justify, ADC Frc clock
;Vref+ VDD , Vref- GND
;
LDWI
STR
B’00000000’
ADCON0
;Select channel AN0,
;
BSR
ADCON0,ADCAL
;Start ADC Self-Calibration
BTSC
GOTO
ADCON0,ADCAL
$-1
;Is Self-Calibration done?
;No, test again
BSR
CALL
ADCON0,ADON
StableTime
;Turn ADC On
;ADC stable time
BSR
NOP
ADCON0,GO
;Start conversion
;GO/DONE ReadBack WaitTime
BTSC
GOTO
ADCON0,GO
$-1
;Is conversion done?
;No, test again
BANKSEL
LDR
STR
BANKSEL
LDR
STR
ADRESH
ADRESH,W
RESULTHI
ADRESL
ADRESL,W
RESULTLO
;
;Read upper 4 bits
;store in GPR space
;
;Read lower 8 bits
;Store in GPR space
注意:
1.
TST 时间是 ADC 的稳定时间,当使用内部参考时,ADC 首次启动还需要考虑参考电压的稳定时间
TVRINT,等待时间应取两者的较大者,即 max (TVRINT, TST);
Rev2.02
- 152 -
2021-10-29
Fremont Micro Devices
FT62F08x
15.4. A/D 采集时间要求
ADCAL
6*TAD
ADC_CLK
1
2
3
108
109
110
3*TSYS
CALI_END
ADRES
Old Data
New Data
图 15-6 ADC 自校准时序图
ADON
TST
GO/DONE
3*TAD
ADC_CLK
1
2
3
13
14
15
CONV_END
ADIF
ADRES
Old Data
New Data
ADCMPO
ADCMPEVT
图 15-7 ADC 软件触发转换时序图
为了使 ADC 达到规定的精度,必须使充电保持电容 (CHOLD) 充满至输入通道的电平。模拟输入模型请
参见图 15-8。源阻抗 (RS) 和内部采样开关 (RSS)阻抗直接影响电容 CHOLD 的充电时间。采样开关
(RSS) 阻抗随器件电压 (VDD) 的变化而变化,参见图 15-8。建议模拟信号源的最大阻抗为 10kΩ。采
集时间随着源阻抗的降低而缩短。在选择 (或改变) 模拟输入通道后,必须在开始转换前完成采集。
Rev2.02
- 153 -
2021-10-29
Fremont Micro Devices
FT62F08x
VDD
采样开关
Rs < 10K
+
VA
-
Ain
VT=0.6V
CPIN
5pF
RIC
SS
Rs
s
CHOLD
ILEAKAGE
±500 nA
VSS/VREF
VSS
图注:
CPIN
VT
ILEAKAGE
RIC
SS
CHOLD
= 输入电容
=门限电压
=结点漏电流
=互联电阻
=采样开关
=采样保持电容
图 15-8 模拟输入模型
Rev2.02
- 154 -
2021-10-29
Fremont Micro Devices
FT62F08x
16. SPI 接口
SPI 接口可通过 SPI 协议与外部设备进行通信,特性如下:
•
全双工、半双工同步传输
•
主机模式、从机模式
•
可编程主机模式通信速率
•
可编程时钟极性和相位
•
可编程数据传输格式: 优先发送 LSB 或 MSB
•
主机和从机模式下均可由硬件或软件管理 NSS 引脚:主/从模式的动态切换
•
硬件 CRC 校验
•
支持 SPI 接口 MOSI / MISO 开漏输出
•
发送/接收 buffer 为空/非空中断
•
工作模式错误中断、接收溢出中断、硬件 CRC 校验错误中断
•
从机模式唤醒中断
Address and data bus
rxovr
miso
crcerr
modf
wkflag
rxbuf
mosi
Shift register
master
control
txbuf
ssm
nss
ctrl
ssi 1
lsbfirst
slave control
bdm
bdoe
rxonly
crcen
0
sck
baud generate
scr
master
cpha
图 16-1 SPI 结构框图
Rev2.02
- 155 -
2021-10-29
cpol
crcnxt
Fremont Micro Devices
FT62F08x
SPI 接口有 4 个引脚:
名称
功能
主机模式
从机模式
MOSI
主机输出/从机输入
数据发送
数据接收
MISO
主机输入/从机输出
数据接收
数据发送
SCK
串行时钟
时钟输出
时钟输入
NSS
从机片选脚
–
输入,低电平有效
表 16-1
SPI 接口引脚说明
注:
1.
本章节中的 MOSI / MISO / SCK / NSS 分别对应引脚图中的 SPI_MOSI / SPI_MISO / SPI_SCK /
SPI_NSS。
2.
从机片选 NSS 引脚配置:
•
NSS 引脚可配置成输入、输出或禁用三种状态 (参阅 ”NSSM”);
•
NSS 用作输入时,其输入值 NSSVAL 为端口电平值(硬件)或 SSI 值(软件,参阅 ”SSM”);
•
从机模式下,只有当 NSS 使能输入且为低电平时,才能接收数据;
•
主机模式下,如果 NSS 使能输入且为低电平,则会导致工作模式错误(置位 MODF),此时 SPI
模块自动切换至从机模式,此特性可用于兼容多主机通信;
SPI 接口支持全双工(四线/三线)和半双工(二线)同步数据传输,
默认为全双工,
SPI 通信总是由主机发起。
全双工模式,在同一时钟信号 (主机输出的串行时钟) 下,数据输出和数据输入同步进行。半双工模式下,
主机模式的数据脚为 MOSI,从机模式的数据脚为 MISO。
Master
Master
MISO
MISO
MOSI
MOSI
SCK
SCK
NSS
NSS
MISO
MISO
MOSI
MOSI
SCK
SCK
NSS
MISO
Master
(1)
四线全双工
Slave
三线全双工
Slave
二线半双工
NSS
MISO
(2)
MOSI
(2)
SCK
MOSI
SCK
NSS
(1)
图 16-2
Rev2.02
Slave
NSS
注:
(1) 硬件或软件管理;
(2) GPIO;
SPI 接口引脚连接示意图
- 156 -
2021-10-29
Fremont Micro Devices
FT62F08x
16.1. SPI 相关寄存器汇总
名称
状态
寄存器
地址
复位值
数据发送/接收 BUF (TXBUF/RXBUF)
DATA
写时:将新数据写入到 TXBUF 中
读时:返回 RXBUF 中未读的数据
SPIDATA[7:0]
0x15
RW−0000 0000
数据传输完成标志
SPIF
3
1 = 完成 (锁存)
0 = 未完成,或已被清零
SPICTRL[7]
RW0−0
SPICTRL[6]
RW0−0
BUF 写入失败(非空时写入)标志
WCOL 3
1 = 失败 (锁存)
0 = 正常
0x16
NSS 引脚模式选择
NSSM
SPIEN
00 = 禁用
01 = 输入 (输入值 NSSVAL 与 SSM,端口电
平及 SSI 有关)
1x = 输出 (输出值 = NSSM[0])
SPI 接口
1 = 使能
BUSY
SPI 状态
SBUSY
1 = 忙碌中
0 = 关闭
0 = 空闲
SPICTRL[3:2]
RW−01
SPICTRL[0]
RW−0
SPICFG[7]
0x17
RO−0
SPISTAT[4]
0x1E
RO−0
工作模式
MSTEN
1 = 主机模式 (MASTER)
0 = 从机模式 (SLAVE)
SPICFG[6]
RW−0
SPICFG[5]
RW−0
SPICFG[4]
RW−0
SCK 相位选择 (数据采样点)
CPHA
CPOL
1 = 第 2 个时钟转换沿
0 = 第 1 个时钟转换沿
SCK 极性选择 (SPI 空闲时,SCK 时钟状态)
1 = 高电平
0 = 低电平
从机选中标志位
SLAS
SPICFG[3]
1 = 被选中
0 = 未被选中
0x17
RO−0
NSS 引脚输入值
NSSVAL
当 SSM=0 时,NSSVAL = NSS 引脚端口电平
值
当 SSM=1 时,NSSVAL = SSI
SPICFG[2]
RO−1
SPICFG[1]
RO−1
内部串行移位寄存器状态
SRMT
3
1= 空
0 = 非空
写 0 清零,写 1 无效。
Rev2.02
- 157 -
2021-10-29
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
复位值
SPI 模块时钟
SPICKEN
1 = 使能
0 = 关闭
PCKEN[4]
0x9A
RW−0
CKOCON[7]
0x95
RW−0
SPISCR[7:0]
0x18
RW−0000 0000
睡眠模式下,系统时钟控制
SYSON
1 = 保持运行
0 = 关闭
SCK 速率设置 (仅主机模式有效)
SCR
速率 = Fmaster/(2*(SCR+1))
(SPI 外设时钟 Fmaster = Sysclk)
半双工
BDM
1 = 使能
0 = 关闭
SPICTRL2[7]
RW−0
SPICTRL2[6]
RW−0
SPICTRL2[5]
RW−0
SPICTRL2[4]
RW−0
半双工工作模式
BDOE
1 = 发送
0 = 接收
全双工工作模式
RXONLY
1 = 只允许接收
0 = 允许发送和接收
NSS 引脚软件输入值 (仅当 SSM = 1 时有效)
SSI
1 = 输入值为 1
0 = 输入值为 0
0x1D
从机模式下,NSS 引脚输入值管理
SSM
1 = 软件
0 = 硬件
SPICTRL2[3]
RW−0
SPICTRL2[2]
RW−0
SPICTRL2[1]
RW−0
RW−0
发送 TXCRC 值到 TXBUF
CRCNXT
1 = 发送 (完成后自动清零)
0 = 不发送
硬件 CRC 校验模块
CRCEN
1 = 关闭
0 = 使能
数据传输格式
LSBFIRST
1 = 优先发送低比特位 (LSB)
0 = 优先发送高比特位 (MSB)
SPICTRL2[0]
CRCPOL
CRC 计算多项式 (默认值: 0x07)
SPICRCPOL[7:0]
0x19
RW−0000 0111
RXCRC
接收数据的 CRC 计算结果
(CRCEN 由 0 变 1,此位自动清零)
SPIRXCRC[7:0]
0x1A
RO−0000 0000
TXCRC
发送数据的 CRC 计算结果
(CRCEN 由 0 变 1,此位自动清零)
SPITXCRC[7:0]
0x1B
RO−0000 0000
表 16-2 SPI 相关寄存器
Rev2.02
- 158 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
1 = 使能
GIE
(PEIE, TXE, RXNE,
RXERR, WAKUP 适用)
全局中断
INTCON[7]
Bank
0 = 全局关闭 (唤醒不受影响)
首地址
+0x0B
1 = 使能
PEIE
(TXE, RXNE, RXERR,
WAKUP 适用)
外设总中断
RW−0
INTCON[6]
RW−0
0 = 关闭 (无唤醒)
TXE
1 = 使能
发送 BUF 为空中断
TXBMT
STXBMT
RXNE
发送 BUF 状态位
接收 BUF 为非空中断
RXBMT
SRXBMT
SPIIER[0]
0x1C
RW−0
1= 空
SPICTRL[1]
0x16
RO−1
0 = 非空
SPISTAT[2]
0x1E
RO−1
SPIIER[1]
0x1C
RW−0
1= 空
SPICFG[0]
0x17
RO−1
0 = 非空
SPISTAT[3]
0x1E
RO−1
SPIIER[2]
0x1C
RW−0
SPICTRL[5]
0x16
RW0−0
SPISTAT[6]
0x1E
RO−0
1 = 溢出 (锁存)
SPICTRL[4]
0x16
RW0−0
0 = 正常
SPISTAT[5]
0x1E
RO−0
SPISTAT[0]
0x1E
RW0−0
SPIIER[3]
0x1C
RW−0
SPISTAT[1]
0x1E
RW0−0
0 = 关闭 (无唤醒)
接收 BUF 状态位
1 = 使能
0 = 关闭 (无唤醒)
接收错误中断
RXERR
1 = 使能
(工作模式错误,接收
0 = 关闭 (无唤醒)
溢出,CRC 校验错误)
1 = 错误 (锁存)
MODF
4
工作模式错误标志位
SMODF
(主机模式下,NSS 脚使能
输入且为低电平,导致模式
错误)
0 = 正常
RXOVRN 4
SRXOVRN
接收溢出标志位
1 = 错误 (锁存)
CRCERR 4
CRC 校验错误标志位
WAKUP
从机唤醒中断
WKF 4
从 机 唤 醒 ( 接 收 到 数 1 = 已唤醒 (锁存)
据)标志位
0 = 未唤醒,或已被清零
0 = 正确,或已被清零
1 = 使能
0 = 关闭
表 16-3 SPI 中断使能和状态位
4
写 0 清零,写 1 无效。
Rev2.02
- 159 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
AFP0[5]
SPI_NSS
AFP2[4]
SPI_SCK
AFP2[3]
SPI_MOSI
AFP2[2]
SPI_MISO
寄存器
1 = PD0
地址
AFP0[5]
0 = PB5
1 = PD3
0x19E
AFP2[4]
0 = PB0
1 = PB7
1 = PC1
0x11D
AFP2[2]
0 = PA1
RW−0
RW−0
AFP2[3]
0 = PA0
复位值
RW−0
RW−0
SPI_MISO,SPI_MOSI 开漏输出
SPIOD
1 = 使能
ODCON0[2]
0x21F
RW−0
0 = 关闭
表 16-4
名称
SPI 接口引脚控制
功能
默认值
复用引脚位置
• [I2C_SDA] = PA0,[I2C_SCL] = PA1
[I2C_SDA] = PA0,
[I2C_SCL] = PA1,
[SPI_MOSI] = PB3,
[SPI_MISO] = PB2
[SPI_MOSI] = PB3,[SPI_MISO] = PB2
(≥ I 版本芯片可选)
• [I2C_SDA] = PB3,[I2C_SCL] = PB2
[SPI_MOSI] = PA0,[SPI_MISO] = PA1
(<I 版本芯片默认,不可更改)
I2CRMAP
表 16-5 SPI 接口初始化配置寄存器
地址
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
复位值
PCKEN
0x9A
TKEN
I2CEN
UARTEN
SPIEN
TIM4EN
TIM2EN
TIM1EN
ADCEN
0000 0000
CKOCON
0x95
SYSON
CCORDY
CCOEN
0010 0000
SPIDATA
0x15
SPICTRL
0x16
SPIF
WCOL
MODF
RXOVRN
SPICFG
0x17
BUSY
MSTEN
CPHA
CPOL
SPISCR
0x18
SCR[7:0]
0000 0000
SPICRCPOL
0x19
CRCPOL[7:0]
0000 0111
SPIRXCRC
0x1A
RXCRC[7:0]
0000 0000
SPITXCRC
0x1B
TXCRC[7:0]
0000 0000
SPIIER
0x1C
SPICTRL2
0x1D
BDM
BDOE
RXONLY
SPISTAT
0x1E
—
SMODF
SRXOVRN
名称
DTYSEL
DATA[7:0]
0000 0000
NSSM
SLAS
NSSVAL
TXBMT
SPIEN
0000 0110
SRMT
RXBMT
0000 0000
WAKUP
RXERR
RXNE
TXE
SSI
SSM
CRCNXT
CRCEN
LSBFIRST
0000 0000
SBUSY
SRXBMT
STXBMT
WKF
CRCERR
-000 1100
—
表 16-6
Rev2.02
CCOSEL[2:0]
SPI 相关寄存器地址
- 160 -
2021-10-29
---- 0000
Fremont Micro Devices
FT62F08x
16.2. SPI 配置
主机和从机的 SPI 配置流程基本相同:
1.
使能 SPI 模块时钟 (参阅” SPICKEN”);
2.
选择主机或从机模式 (参阅” MSTEN”);
3.
配置 NSS 引脚 (参阅” NSSM”, ” SSM”, ” SSI”和” NSSVAL”);
4.
SCK 通信速率, 主机模式的速率可设置为 Fmaster/(2*(SCR+1)),从机模式的速率高达 Fmaster/4;
5.
设置 SCK 的相位和极性 (参阅” CPOL”和” CPHA”);
6.
选择数据传输格式 (参阅” LSBFIRST”);
7.
设置全双工 (参阅”RXONLY”) 或半双工工作模式 (参阅” BDM”和” BDOE”);
8.
如需要,可使能硬件 CRC 校验模块 (参阅” CRCPOL”和” CRCEN”);
9.
使能 SPI 模块 (参阅” SPIEN”);
10. 如需要,可使能相应的中断 (参阅” GIE”, ” PEIE”, ” RXERR” , ” RXNE” , ” TXE”和” WAKUP”);
注:
•
SPI 外设时钟 Fmaster = Sysclk;
•
SPI 使能时,引脚 MOSI / MISO / SCK / NSS 接口功能自动使能;
•
主机发送 SCK 时钟之前,需要先使能 SPI 从机;
•
主机作为发送端时,SPI 使能且 TXBUF 为非空时,主机自动发起传输;
•
主机作为只接收模式 (RXONLY=1 或 BDM=1& BDOE=0) 时,SPI 使能后,主机自动发起传输并一
直发送 SCK;
•
主机发起传输之前,从机的数据寄存器中需提前写入需发送的数据 (连续通信时,需要在正在进行中
的传输结束之前继续向从机的数据寄存器写入数据);
•
当 SPIEN 由 0 变 1 时,SPIF / MODF / RXOVRN / CRCERR / WKF 自动清零,TXBMT / RXBMT
自动置位;
16.2.1. 通信时钟 SCK 设置
时钟 SCK 的极性和相位可配置为图 16-3 所示的 4 种情况 (参阅” CPOL”, ” CPHA”)。
图 16-3
Rev2.02
SCK 时钟极性和相位时序图
- 161 -
2021-10-29
Fremont Micro Devices
FT62F08x
16.2.2. 数据处理流程
数据通信流程分为阻塞模式和非阻塞模式,处理方式一致,区别在于非阻塞模式在中断中进行。
流程
发送数据
接收数据
阻塞模式
非阻塞模式
向 DATA(TXBUF)写入数据后,查询
TXBMT,当其置 1 时,写入下一个数
据
向 DATA(TXBUF)写入数据后,当
TXE = 1 时,TXBMT 置 1 后会进入
中断
查询 RXBMT,当其为 0 时,则可读
取 DATA(RXBUF)的值
当 RXNE = 1 时,RXBMT 置 0 则会
进入中断
查 询 RXOVRN 和 CRCERR , 当
RXOVRN 或 CRCERR 置 1 时,需
软件清零相应的错误标志位
当 RXERR = 1 时,RXOVRN 或
CRCERR 置 1 后会进入中断 (需软
件清零相应的错误标志位)
-
进入中断后,查询相应的状态标志
位并处理发送接收流程,处理完成后
退出中断
备注
表 16-7
图 16-4
SPI 数据处理流程
数据处理时序图 (以单字节数据传输为例)
以全双工通信流程为例,无论阻塞模式还是非阻塞模式,通信过程中的相关标志位变化如图 16-4 所示:
1.
向 DATA 寄存器写入数据后,TXBMT 由 1 变为 0;
2.
TXBUF 中的数据传送到内部移位寄存器,SRMT 由 1 变为 0;
3.
移位寄存器中的数据完全移出后,SRMT 由 0 变为 1;
4.
发送过程中,BUSY 一直为 1;
5.
当前字节数据传输完成后,SPIF 由 0 变为 1,同时 RXBMT 由 1 变为 0,此时可读取 DATA 寄存器
的值;
注:
全双工或半双工模式下,需在完成发送/接收全部数据(TXBMT=1 / RXBMT=0)后,且 SPI 处于空
闲状态(BUSY=0)时,才能关闭 SPI 模块;
Rev2.02
- 162 -
2021-10-29
Fremont Micro Devices
FT62F08x
16.2.3. 硬件 CRC 校验
CRC 校验模块用于增强数据传输的可靠性。
图 16-5
CRC 模块的工作时序图
配置 CRCEN = 1,使能硬件 CRC 校验模块:
•
•
发送端:
1.
每次正常写入到 TXBUF 的值,会被送到 CRC 模块,连同多项式 CRCPOL 生成 TXCRC 的值;
2.
当正常数据全部发送完成后,配置 CRCNXT = 1,下一次传输时将自动发送最后的 CRC 校验码
值,即自动将 TXCRC 值写入到 TXBUF(本次写入到 TXBUF 中的值不会再被送到 CRC 模块进
行计算),CRCNXT 的值自动清零;
接收端:
1.
每次正常写入到 RXBUF 的值,
会被送到 CRC 模块,
连同多项式 CRCPOL 生成 RXCRC 的值;
2.
当正常数据全部接收完成后,下一次将自动接收对方的 CRC 检验码值 (本次接收到的数据不会
再写入到 RXBUF) 并与 RXCRC 值进行比较,如果不匹配则会置位 CRCERR
注: 当 CRCEN 由 0 变 1 时,会对 CRC 模块进行初始化 (TXCRC 和 RXCRC 被清零),但不影响 CRC
计算多项式 CRCPOL 的值 (默认为 0x07)。
CRC 校验码值传输同样分为阻塞模式和非阻塞模式:
流程
阻塞模式
非阻塞模式
发送 CRC 校验码
当最后一个数据传输完成时:
1. 查询 TXBMT,当其置 1 时则置位
CRCNXT;
2. 查询 CRCNXT,当其为 0 时清零 SPIF;
3. 查询 SPIF,当其置 1 时表示 CRC 校验码
发送完成;
接收 CRC 校验码
当 RXERR = 1 时,CRCERR 置 1
查询 CRCERR,当其为 1 时,表示 CRC 校验码
会进入中断 (需软件清零相应的标
不匹配,需软件清零相应的标志位
志位)
表 16-8
Rev2.02
当 TXE = 1 时,TXBMT 置 1 会进入
中断,如果数据已经发送完整,则软
件置位 CRCNXT;
CRC 校验码处理流程
- 163 -
2021-10-29
Fremont Micro Devices
FT62F08x
图 16-6
CRC 模块标志位时序图
16.2.4. 从机模式的睡眠唤醒
睡眠模式下,如果 SPICKEN、SYSON、WAKEUP、PEIE 同时使能,从机在接收到第 1 个比特数据时,
即可唤醒 MCU。
图 16-7
Rev2.02
- 164 -
睡眠唤醒时序图
2021-10-29
Fremont Micro Devices
FT62F08x
17. I2C 接口
I2C 为双线接口 (数据线 SDA 和串行时钟线 SCL),可通过 I2C 协议与外部设备进行通信,特性如下:
•
主机模式、从机模式
•
多主机兼容
•
标准模式(100kHz)、快速模式(400kHz)
•
7 位或 10 位地址格式、广播呼叫 (General Call)
•
数据从高位开始发送/接收
•
可选时钟拉低扩展 (Clock stretching)
•
支持 I2C 接口 SCL / SDA 开漏输出
•
支持软件复位
•
事件中断:
TX-FIFO / RX-FIFO 状态为空/非空中断
✓
主机模式下:发送 Start 中断、地址发送完成中断、发送 10 位地址高 2 位中断
✓
从机模式下:接收地址匹配中断、识别到 General call 中断、检测到 Stop 中断
✓
检测到错位的 Start / Stop 中断
✓
主机仲裁失败中断
✓
NACK 中断
✓
产生 Overrun 中断
SDA_in
SCL_in
SCL_oe
错误中断:
SDA_oe
•
✓
sclk_gen
i2c_rst_n
RX_FIFO
rx_shift
master
_fsm
slave
_fsm
TX_FIFO
tx_shift
i2c_clk
registers
int_ctrl
ic_int
I2C
SFR总线
图 17-1
Rev2.02
- 165 -
I2C 结构框图
2021-10-29
Fremont Micro Devices
17.1.
I2C 接口相关寄存器汇总
名称
MST10B
FT62F08x
状态
1
主机发送地址格式
1 = 10 位
0=7位
寄存器
地址
复位值
I2CCR1[4]
RW−0
I2CCR1[3]
RW−0
从机响应地址格式
SLV10B 1
1 = 10 位
0=7位
I2C 通信速度
SPEED
1
I2CCR1[1]
1 = 快速模式 (400kHz)
0 = 标准模式 (100kHz)
0x40C
RW−0
工作模式
MASTER 1
1 = 主机模式
0 = 从机模式
I2CCR1[0]
RW−0
I2CCR2[6]
RW−0
I2CCR2[5]
RW−0
软件复位 (当 ACTIVE = 1 时可写)
SOFTRST
1 = 复位 I2C 模块
0 = 无意义
广播呼叫 (General call)
主机模式:
AGCALL
1
1 = 发送 General call 地址 (0x00)
0 = 发送正常的从机地址
从机模式:
0x40D
1 = 响应 General call
0 = 不响应 General call
接收应答
SNACK
1
1 = 发送 NACK
0 = 发送 ACK (地址匹配或接收到数据)
I2CCR2[4]
RW−0
I2CCR2[1]
RW−0
I2CCR3[2]
RW−0
时钟拉伸 (当 RX-FIFO 非空时)
RXHLD 1
1 = 使能 (拉低 SCL)
0 = 禁止 (新接收的数据将会丢失)
时钟拉伸 (当 SBF / ADDF / ADD10F 置位后)
EVSTRE
1 = 使能 (拉低 SCL)
0 = 禁止
0x40E
I2C 接口
ENABLE
1
I2CCR3[0]
1 = 使能
0 = 关闭
当 ENABLE = 0 时可写。
Rev2.02
- 166 -
2021-10-29
RW−0
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
I2COARL[7:0]
0x40F
RW−0000
0000
I2COARH[1:0]
0x410
RW−00
PCKEN[6]
0x09A
RW−0
CKOCON[7]
0x095
RW−0
I2CFRWQ[5:0]
0x411
RW−0000
00
I2CCCRH[6]
0x415
RW−0
I2CCCRL[7:0]
0x414
RW−0000
0000
I2CCCRH[3:0]
0x415
RW−0000
从机地址低有效位 (LSB)
ADD[7:0]
2
7 位地址:ADD[6:0]有效,ADD[7]忽略;
10 位地址:ADD[7:0] = 低 8 位;
注:主机模式下为目标从机地址,从机模式下为本机地址;
从机地址高有效位 (MSB)
ADD[9:8] 2
7 位地址:ADD[9:8]忽略;
10 位地址:ADD[9:8] = 高 2 位;
注:主机模式下为目标从机地址,从机模式下为本机地址;
I2C 模块时钟
I2CEN
1 = 打开
0 = 关闭
睡眠模式下,系统时钟控制
SYSON
1 = 保持运行
0 = 关闭
I2C 外设时钟频率 Fmaster
FREQ[5:0] 2
000000 = 禁止
000001 = 1MHz
000010 = 2MHz
……
011000 = 24MHz
> 011000 = 禁止
注:Fmaster 必须与 SysClk 相同
快速模式下,占空比设置
1 = SCLL / SCLH = 16 / 9
0 = SCLL / SCLH = 2 / 1
注:标准模式下,SCLL / SCLH = 1 / 1
DUTY 2
CCR[7:0] 2
主机模式下,SCL 时钟周期低 8 位
主机模式下,SCL 时钟周期高 4 位
SCL 时钟周期公式:
模式
CCR[11:8] 2
标准模式
快速模式
(DUTY=0)
快速模式
(DUTY=1)
2
周期
SCLL
SCLH
2*CCR*Fmaster
CCR*Fmaster
CCR*Fmaster
3*CCR*Fmaster
2*CCR*Fmaster
CCR*Fmaster
25*CCR*Fmaster
16*CCR*Fmaster
9*CCR*Fmaster
当 ENABLE = 0 时可写。
Rev2.02
- 167 -
2021-10-29
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
复位值
I2CDR[7:0]
0x412
RW−0000
0000
数据寄存器
DR[7:0]
写时:将新数据写入到 TX-FIFO 中
读时:返回 RX-FIFO 中未读的数据
注:
TX-FIFO 和 RX-FIFO 的深度均为 1
写数据时,需先写 DR,再写 I2CCMD
主机发送 Start / Restart
RESTART
1 = 发送
I2CCMD[2]
WO−0
0 = 不发送
主机发送 Stop (字节传输后,或主机拉伸 SCL 时)
STOP
1 = 发送 (发送成功后自动清零)
I2CCMD[1]
0x413
WO−0
0 = 不发送
主机模式,数据传输方向 (读写位 R/W)
MSTDIR
1 = 读取
I2CCMD[0]
WO−0
I2CSR3[5]
RO−0
I2CSR3[2]
RO−0
0 = 发送
从机模式接收到 General call 标志
GCALL
1 = Yes (接收且 ACK 后置位)
0 = No
注:检测到 Start/Stop 或 ENABLE = 0 时硬件自动清零;
从机模式,数据传输方向标志
RDREQ
1 = 发送 (从机接收地址字节的读写位为 1 时置位)
0 = 接收
注:检测到 Start/Stop 或 ENABLE = 0 时硬件自动清零;
0x419
主/从机状态
1 = Busy (繁忙)
ACTIVE
0 = IDLE (空闲)
I2CSR3[1]
RO−0
I2CSR3[0]
RO−0
注:从机模式,地址匹配成功后即置位,接收到 Start / Restart /
Stop 后清零;
RX-FIFO 非空保持标志
RXHOLD
1 = 非空 (SCL 被拉低,读 DR 后释放)
0 = 空 (SCL 未被拉低)
表 17-1
Rev2.02
- 168 -
I2C 相关寄存器
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
GIE
PEIE
ITBUFEN
IICTXE
3
IICRXNE
3
寄存器
地址
复位值
全局中断
1 = 使能
(PEIE, ITBUFEN, ITEVEN,
ITERREN 适用)
0 = 全局关闭
(唤醒不受影响)
INTCON[7]
外设总中断
1 = 使能
(ITBUFEN, ITEVEN, ITERREN
适用)
0 = 关闭 (无唤醒)
INTCON[6]
(N=0~5)
RW−0
FIFO 状态中断
1 = 使能
(当 IICTXE = 1 或 IICRXNE = 1 时
产生中断)
0 = 关闭 (无唤醒)
I2CITR[2]
0x416
RW−0
TX-FIFO 状态
1= 空
0 = 非空
I2CSR1[7]
RX-FIFO 状态
1 = 非空
0= 空
I2CSR1[6]
0xN0B
0xN8B
0x60B
0xF8B
RW−0
RO−0
0x417
RO−0
1 = 使能
0 = 关闭 (无唤醒)
事件中断产生条件:
事件中断
ITEVEN
SBF = 1 (主机)
I2CITR[1]
0x416
RW−0
ADD10F = 1 (主机)
ADDF = 1 (主/从机)
STOPF = 1 (从机)
STOPF
4
ADD10F 4
ADDF 4
SBF 4
主/从机模式,
1 = Yes
Stop 标志
0 = No
主机模式,目标从机
1 = 匹配 (ACK 后置位)
地 址 高 有 效 位 MSB
0 = 不匹配,或未发送地址
匹配标志
主机模式,目标从机
地址低有效位 LSB
匹配标志
RO−0
I2CSR1[3]
RO−0
1 = 匹配 (ACK 后置位)
0 = 不匹配,或未发送地址
从机模式,本机地址
匹配标志
1 = 匹配或识别到 General Call
0 = 不匹配
主机发送 Start 标志
1 = 已发送
0 = 未发送
3
写 DR 或 ENABLE = 0 时硬件自动清零。
4
读 I2CSR1 或 ENABLE = 0 时硬件自动清零。
Rev2.02
I2CSR1[4]
- 169 -
0x417
I2CSR1[1]
RO−0
I2CSR1[0]
RO−0
2021-10-29
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
I2CITR[0]
0x416
复位值
1 = 使能
0 = 关闭 (无唤醒)
错误中断产生条件:
ITERREN
错误中断
OVR = 1
RW-0
AF = 1
ARLO = 1
BERR = 1
TXARBT
5
传输 终止标志 (发
送过程中出错或异
常原因导致)
1 = 发生终止
0 = 未发生终止
I2CSR2[4]
RW0−0
I2CSR2[3]
RW0-0
1 = Yes
0 = No
Overrun 产生条件:
Overrun 产生标志
OVR 5
TX-over: 当 TX-FIFO 非空时仍写 DR;
RX-over: 当 RX-FIFO 非空时仍接收数
据;
0x418
RX-under: 当 RX-FIFO 空时进行读操
作;
AF 5
ARLO 5
BERR 5
主/从机模式,接收
应答状态
1 = NACK
0 = ACK
I2CSR2[2]
RW0−0
主机模式,总线仲裁
失败标志
1 = 仲裁失败
0 = 未发生仲裁失败
I2CSR2[1]
RW0−0
总线 错误 (检测到
错位的 Start / Stop)
标志
1 = 检测到 (字节传输阶段检测到
Start/Stop 时置位)
0 = 未检测到
I2CSR2[0]
RW0−0
表 17-2
名称
I2C 中断使能和状态位
状态
寄存器
地址
复位值
I2C_SDA 引脚
AFP0[0]
1 = PB6
0 = PB3
AFP0[0]
0x19E
RW−0
AFP1[4]
0x19F
RW−0
ODCON0[1]
0x21F
RW−0
I2C_SCL 引脚
AFP1[4]
1 = PA2
0 = PB2
I2C_SCL,I2C_SDA 引脚开漏输出设置
I2COD
1 = 使能
0 = 关闭
表 17-3
5
I2C 接口引脚控制
写 0 清零,或 ENABLE = 0 时硬件自动清零。
Rev2.02
- 170 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
功能
默认值
复用引脚位置
• [I2C_SDA] = PA0,[I2C_SCL] = PA1
• [I2C_SDA] = PA0,
[SPI_MOSI] = PB3,[SPI_MISO] = PB2
(≥ I 版本芯片可选)
• [I2C_SDA] = PB3,[I2C_SCL] = PB2
[SPI_MOSI] = PA0,[SPI_MISO] = PA1
(<I 版本芯片默认,不可更改)
I2CRMAP
表 17-4
名称
地址
[I2C_SCL] = PA1,
[SPI_MOSI] = PB3 ,
[SPI_MISO] = PB2
I2C 接口初始化相关配置
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
复位值
UARTEN
SPIEN
TIM4EN
TIM2EN
TIM1EN
ADCEN
0000 0000
CCOEN
0010 0000
PCKEN
0x9A
TKEN
I2CEN
CKOCON
0x95
SYSON
CCORDY
DTYSEL
CCOSEL[2:0]
I2CCR1
0x40C
—
—
—
MST10B
SLV10B
—
SPEED
MASTER
---0 0-00
I2CCR2
0x40D
—
SOFTRST
AGCALL
SNACK
—
—
RXHLD
—
-000 —0-
I2CCR3
0x40E
EVSTRE
—
ENABLE
---- -000
I2COARL
0x40F
I2COARH
0x410
—
—
I2CFREQ
0x411
—
—
I2CDR
0x412
I2CCMD
0x413
I2CCCRL
0x414
I2CCCRH
0x415
I2CITR
0x416
I2CSR1
0x417
IICTXE
IICRXNE
—
STOPF
I2CSR2
0x418
—
—
—
I2CSR3
0x419
—
—
GCALL
—
ADD[7:0]
—
—
—
—
ADD[9:8]
FREQ[5:0]
—
—
—
—
0000 0000
—
RESTART
STOP
MSTDIR
CCR[7:0]
—
DUTY
—
---- --00
--00 0000
DR[7:0]
---- -000
0000 0000
—
CCR[11:8]
—
表 17-5
Rev2.02
0000 0000
-0—0000
ITBUFEN
ITEVEN
ITERREN
ADD10F
—
ADDF
SBF
00-0 0-00
TXABRT
OVR
AF
ARLO
BERR
---0 0000
—
—
RDREQ
ACTIVE
RXHOLD
--0- -000
I2C 相关寄存器地址
- 171 -
2021-10-29
---- -000
Fremont Micro Devices
17.2.
FT62F08x
I2C 配置
主机和从机的 I2C 配置流程基本相同:
1.
使能 I2C 模块时钟 (参阅” I2CEN”);
2.
选择主机或从机模式 (参阅” MASTER”);
3.
设置主从机的时钟频率 Fmaster,需与 SysClk 相同 (参阅” FREQ[5:0]”);
4.
主机的通信速率设置为标准模式或快速模式 (参阅” SPEED”);
5.
主机配置 SCL 占空比及时钟周期 (参阅” DUTY”, “CCR[7:0]”和“CCR[11:8]”);
6.
主从机选择 7 位或 10 位地址格式 (参阅” MST10B” 和 “SLV10B”);
7.
设置主机的数据传输方向为发送或接收 (参阅” MSTDIR”),从机则由接收地址字节的读写位控制;
8.
如需要,可选择 General call 模式 (参阅” AGCALL”);
9.
使能 I2C 模块 (参阅” ENABLE”);
10. 如需要,可使能相应的中断 (参阅” GIE”, ” PEIE”, ” ITBUFEN” , ” ITEVEN”和” ITERREN”);
注:
•
当 ENABLE =1 时,引脚 SCL / SDA 接口功能自动使能,SCL / SDA 分别对应引脚图中的 I2C_SCL
/ I2C_SDA;
•
为了产生正确的时序,I2C 模块的输入时钟 Fmaster 和时钟周期 CCR,必须满足以下设置条件:
•
寄存器
标准模式
快速模式 (DUTY=0)
快速模式 (DUTY=1)
主机和从机
FREQ[5:0]
≥ 2MHz
≥ 8MHz
≥ 8MHz
主机
CCR[11:0]
≥9
≥9
—
如果 I2C 模块因异常原因导致一直处于活动状态(ACTIVE=1),可以置位 SOFTRST 对发送和接收模
块进行复位,对寄存器值无影响;
I2C 通信由主机发起数据传输并产生时钟信号,且由主机控制 Start 和 Stop 信号。串行数据传输以 Start
条件开始并以 Stop 条件结束,数据和地址均按 8 位/byte 进行传输,高位在前。
从机在检测到 Start 条件后,能识别自己的地址(可编程,7 位或 10 位) 和 General Call 地址,且具有
Stop 检测功能。
在一个字节传输后的第 9 个时钟期间,接收器需回送一个应答位(ACK)给发送器。
I2C 模块的四种工作模式为:主机发送、主机接收、从机发送、从机接收。
Rev2.02
- 172 -
2021-10-29
Fremont Micro Devices
FT62F08x
17.2.1. 主机发送
主机发送模式下,输出时钟到 SCL,发送串行数据到 SDA。
7 位地址(MST10B = 0),主机发送的第 1 个 byte 包括地址和读写位(0),然后开始发送 8 位串行数据。
10 位地址(MST10B = 1),主机发送的第 1 个 byte 包括地址头段序列和读写位(0),第 2 个 byte 为低有
效位地址,然后开始发送 8 位串行数据。
7bit 地址:
0
S Address R/W A
Data1
A
Data2
A
DataN
A
P
DataN
A
P
...
E1
E3
E1
E1
10bit 地址:
11110xx
S
0
Header R/W A
Address
A
Data1
A
...
E1
E2
E3
E1
注:xx为高有效位
图 17-2
主机发送流程
注:
S:Start 信号;
A:ACK 信号;
P:Stop 信号;
E1:IICTXE=1,TX-FIFO 为空,写 DR 和 I2CCMD 将清零该标志;
E2:ADD10F=1,读 I2CSR1 将清零该标志;
E3:ADDF=1,读 I2CSR1 将清零该标志;
Rev2.02
- 173 -
2021-10-29
Fremont Micro Devices
FT62F08x
17.2.2. 主机接收
主机接收模式下,输出时钟到 SCL,从 SDA 线上接收串行数据。
7 位地址(MST10B = 0),主机发送的第 1 个 byte 包括地址和读写位(1),然后开始接收 8 位串行数据。
10 位地址(MST10B = 1),主机发送的第 1 个 byte 包括地址头段序列和读写位(0),第 2 个 byte 为低有
效位地址,然后重新发送 Start 信号和地址头段序列和读写位(1),开始接收 8 位串行数据。
7bit 地址:
1
S Address R/W A
Data1
A
Data2
A
DataN
NA P
...
E1
E3
E1 E4
E1
E4
10bit 地址:
11110xx
S
0
11110xx
Header R/W A
Address
A
S
1
Header R/W A
Data1
A
DataN
...
E1
E2
E3
E2
E1
注:xx为高有效位
图 17-3
主机接收流程
注:
S:Start 信号;
A:ACK 信号;
P:Stop 信号;
E1:IICTXE=1,TX-FIFO 为空,写 DR 和 I2CCMD 将清零该标志;
E2:ADD10F=1,读 I2CSR1 将清零该标志;
E3:ADDF=1,读 I2CSR1 将清零该标志;
E4:IICRXNE=1,RX-FIFO 非空,读 DR 将清零该标志;
Rev2.02
- 174 -
2021-10-29
E4
NA P
Fremont Micro Devices
FT62F08x
17.2.3. 从机发送
从机发送模式下,发送串行数据到 SDA。
7 位地址(SLV10B = 0),从机接收的第 1 个 byte 包括地址和读写位(1),然后开始发送 8 位串行数据。
10 位地址(SLV10B = 1),从机接收的第 1 个 byte 包括地址头段序列和读写位(0),第 2 个 byte 为低有效
位地址,然后重新检测 Start 信号并接收地址头段序列和读写位(1),开始发送 8 位串行数据。
7bit 地址:
1
S Address R/W A
Data1
A
Data2
A
DataN
NA P
...
E1 E2
E2
E2
E3
10bit 地址:
11110xx
S
0
Header R/W A
11110xx
Address
A
S
1
Header R/W A
Data1
A
DataN
NA P
...
E1
E1 E2
E2
注:xx为高有效位
图 17-4
从机发送流程
注:
S:Start 信号;
A:ACK 信号;
P:Stop 信号;
E1:ADDF=1,拉低 SCL 线,读 I2CSR1 将清零该标志;
E2:IICTXE=1,TX-FIFO 为空,拉低 SCL 线,读 RDREQ 为 1,写 DR 和 I2CCMD 将清零该标志;
E3:AF=1,写 0 清零;
Rev2.02
- 175 -
2021-10-29
E3
Fremont Micro Devices
FT62F08x
17.2.4. 从机接收
从机接收模式下,从 SDA 线上接收串行数据。
7 位地址(SLV10B = 0),从机接收的第 1 个 byte 包括地址和读写位(0),然后开始接收 8 位串行数据。
10 位地址(SLV10B = 1),从机接收的第 1 个 byte 包括地址头段序列和读写位(0),第 2 个 byte 为低有效
位地址,然后开始接收 8 位串行数据。
7bit 地址:
0
S Address R/W A
Data1
A
Data2
A
DataN
A
P
...
E1
E2
E2 E3
10bit 地址:
11110xx
S
0
Header R/W A
Address
A
Data1
Data1
A
A
DataN
A
P
...
E1
E2 E3
E2
注:xx为高有效位
图 17-5
从机接收流程
注:
S:Start 信号;
A:ACK 信号;
P:Stop 信号;
E1:ADDF=1,读 I2CSR1 将清零该标志;
E2:IICRXNE=1,RX-FIFO 非空,读 DR 将清零该标志;
E3:STOPF =1,读 I2CSR1 将清零该标志;
17.2.5. 广播呼叫 (General Call)
主机/从机置位 AGCALL 后使能 General Call 模式:
•
主机向 0x00 地址发送数据,通信流程同主机发送;
•
从机响应主机发来的 General Call,向 0x00 地址写入数据,通信流程同从机接收;
Rev2.02
- 176 -
2021-10-29
Fremont Micro Devices
FT62F08x
18. USART 接口
•
同步模式
✓
•
•
•
•
多芯片通信模式
✓
哑模式唤醒之后,才可以接收数据
✓
可以通过地址匹配和 IDLE 帧唤醒哑模式
异步模式
✓
可编程的 7, 8, 9 比特数据模式
✓
支持 1, 2, 1.5 bit 停止位
✓
支持红外 1.0 模式
✓
单线半双工
✓
发送接收使能控制
✓
16bit 波特率设置
✓
RXNE 中断,TXE 中断,IDLE 帧中断,break 帧中断,奇偶校验错误,overrun 中断,发送完
成中断
智能卡模式
✓
bit 停止位
✓
时钟输出
✓
guard time
LIN 主机模式
✓
•
产生同步时钟输出
支持断开帧的发送与检测
自动波特率检测
Data and address bus
txbuf
shift register
uart_tx
baud gen
regsiters
tx module
rxbuf
uart_ck
shift register
ctrl
uart_rx
rx module
SYNEN
SDEN
HDSEL TXEN
图 18-1
Rev2.02
RXEN
SIREN
LINEN
USART 结构框图
- 177 -
2021-10-29
Fremont Micro Devices
FT62F08x
18.1. USART 接口相关寄存器汇总
名称
DATAL
状态
数据发送/接收 BUF 低 8 位 (不适宜位操作)
寄存器
地址
复位值
URDATAL[7:0]
0x48C
RW−0000
0000
URDATAH[0]
0x48D
RW−0
PCKEN[6]
0x9A
RW−0
CKOCON[7]
0x95
RW−0
当 EXTEN=1:数据发送/接收 BUF 高 1 位
注:要先写 URxDATAL,再写 URxDATAH
DATAH
当 EXTEN=0:
1 = URxDATAL 为地址
0 = URxDATAL 为数据
UARTEN
USART 模块时钟
SYSON
睡眠模式下,系统时钟控制
1 = 打开
0 = 关闭
1 = 保持运行
0 = 关闭
发送断开帧
1 = 使能,或正在发送中
BKREQ
0 = 关闭,或已发送完成
URLCR[6]
RW−0
URLCR[4]
RW−0
注意:发送完成后该位自动清零,不能在断开帧发送过
程中对该位写 0, 发送断开帧之前请先设置断开帧的长
度
EVEN
PEN
奇/偶校验
校验位
1 = 偶校验
0 = 奇校验
1 = 使能
0 = 关闭
0x48F
URLCR[3]
RW−0
URLCR[2]
RW−0
URLCR[0]
RW−0
URLCREXT[1]
RW−0
停止位长度
URSTOP
1 = 1.5 bit (智能卡模式) 或 2 bit
0 = 1 bit
通信数据长度 (不包括校验位)
LTH
1 = 8 bit
0 = 7 bit
多处理器模式下,接收唤醒进入哑模式
RWU
1 = 使能
0 = 关闭,或已退出
0x490
通信数据长度
EXTEN
1 = 9 bit
URLCREXT[0]
RW−0
0 = 7 bit 或 8 bit (由 LTH 决定)
SIRLP
Rev2.02
红外低功耗模式
1 = 使能
0 = 关闭
- 178 -
URMCR[5]
0x491
2021-10-29
RW−0
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
复位值
串口发送
TXEN
1 = 使能 (相应 IO 会被用作 TX 引脚)
URMCR[4]
RW−0
URMCR[3]
RW−0
URMCR[2]
RW−0
URMCR[1]
RW−0
URMCR[0]
RW−0
0 = 关闭
串口接收
RXEN
1 = 使能 (相应 IO 会被用作 RX 引脚)
0 = 关闭
1 = 地址匹配
WAKE
哑模式唤醒方式
HDSEL
半双工
SIREN
红外模式
RAR
多处理器模式下的本机地址[3:0]
0 = IDLE 帧
1 = 使能
0 = 关闭
1 = 使能
0 = 关闭
URRAR[3:0]
0x493
RW−0000
URDLL[7:0]
0x494
RW−0000
0000
DLH
注:Fmaster = Sysclk。{DLH, DLL} 最小值 = 0x0001,
URDLH[7:0]
当其为 0x0000 时, USART 不工作;
0x495
RW−0000
0000
ABRE
波特率检测溢出标志
DLL
波特率分频计数器低 8 位和高 8 位
波特率 = Fmaster / (16 * {DLH, DLL})
1 = 溢出
0 = 正常
URABCR[3]
RW−0
URABCR[2]
RW−0
波特率检测模式
ABRM
1 = 检测长度为 [(起始位+第 1bit 数据) / 2]
(数据的第 1bit 必须为 1, 第 2bit 必须为 0)
0 = 只检测起始位长度 (第 1bit 数据必须为 1)
检测到波特率标志位
0x496
1 = 检测到
ABRF
0 = 未检测到
URABCR[1]
RW−0
URABCR[0]
RW−0
注:写 0 清零,该位清零后,会立即再次进入波特率检
测,
为了保证每次检测到的都是起始位,建议在 RXNEF
被置位后,再清零此位
ABREN
自动波特率检测
1 = 使能
0 = 关闭
同步模式下,发送最后 1bit 数据(MSB)对应的时钟输出
LBCL
1 = 使能
URSYNCR[3]
0x497
0 = 关闭
Rev2.02
- 179 -
2021-10-29
RW−0
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
同步模式时钟相位 (数据采样点)
URCPHA
1 = 第 2 个时钟转换沿
URSYNCR[2]
RW−0
URSYNCR[1]
RW−0
URSYNCR[0]
RW−0
URLINCR[4]
RW−0
0 = 第 1 个时钟转换沿
同步模式时钟极性 (总线空闲时,SCK 的状态)
URCPOL
1 = 高电平
0 = 低电平
同步模式
SYNEN
1 = 使能 (相应 IO 会被用作同步时钟输出)
0 = 关闭
LINEN
1 = 使能
LIN Master 模式
0 = 关闭
0x498
断开帧长度 (bit)
BLTH
注: BLTH>0 有效, 建议设置为 12 或 13bit 长度, 太短
会被认为接收到的为正常帧
URLINCR[3:0]
RW−0000
URSDCR0[6]
RW−0
智能卡模式,检测到奇偶校验出错时回复 NACK
NACK
1 = 发送 NACK
0 = 不发送 NACK
智能卡时钟源输出
CKOE
1 = 使能 (需配置 PSC 寄存器为有效值)
URSDCR0[5]
0x499
RW−0
0 = 关闭
SDEN
1 = 使能 (停止位必须为 1.5bit)
智能卡模式
0 = 关闭
URSDCR0[4]
RW−0
智能卡模式, 保护时间 (两字符之间的波特时钟间隔)
注意:最小值为 1 (即使设置 GT=0, 两个字符之间也有
URSDCR1[7:0]
1 个波特周期的间隔),保护时间过后,发送完成标志才
被置位
GT
0x49A
RW−0000
0000
0x49B
RW−0000
0000
对系统时钟进行分频,给智能卡或红外低功耗提供时钟
PSC
智能卡时钟源
红外低功耗时钟源
0
无效
无效
1
2 分频
1 分频
2
3 分频
2 分频
3
4 分频
3 分频
…
…
…
256 分频
255 分频
255
表 18-1
Rev2.02
URSDCR2[7:0]
USART 相关寄存器
- 180 -
2021-10-29
Fremont Micro Devices
名称
FT62F08x
状态
AFP0[7]
USART_CK
AFP2[1]
USART_RX
AFP2[0]
USART_TX
UROD
USART_TX 开漏输出
寄存器
1 = PD1
名称
AFP0[7]
0 = PA5
1 = PA2
0x19E
AFP2[1]
0 = PA7
复位值
RW−0
RW−0
0x11D
1 = PB6
AFP2[0]
0 = PA6
1 = 使能
RW−0
ODCON0[0]
0 = 关闭
表 18-2
地址
0x21F
RW−0
USART 接口引脚控制
状态
寄存器
地址
复位值
1 = 使能
GIE
全局中断
(PEIE, URTE, URRXNE,
TCEN, IDELE, RXSE 适用)
INTCON[7]
0 = 全局关闭
Bank
(唤醒不受影响)
首地址
+0x0B
1 = 使能
PEIE
外设总中断
(URTE, URRXNE, TCEN,
IDELE, RXSE 适用)
RW−0
INTCON[6]
RW−0
0 = 关闭 (无唤醒)
URTE
发送 BUF 为空中断
1 = 使能
0 = 关闭
URIER[1]
0x48E
RW−0
URLSR[5]
0x492
RO−1
URIER[0]
0x48E
RW−0
URLSR[0]
0x492
RO−0
URIER[5]
0x48E
RW−0
1= 空
TXEF
发送 BUF 状态
URRXNE
接收 BUF 非空中断
0 = 非空
注:写 DATAL(8bit) / DATAH(9bit)清
零
1 = 使能
0 = 关闭
1 = 非空
RXNEF
接收 BUF 状态
TCEN
发送完成中断
Rev2.02
0 = 空,或已被清零
注:读 DATAL(8bit) / DATAH(9bit)清
零
1 = 使能
0 = 关闭
- 181 -
2021-10-29
Fremont Micro Devices
名称
FT62F08x
状态
寄存器
地址
复位值
1 = 完成
TCF
发送完成标志
0 = 未完成
注:写 1 清零,或写 DATAL(8bit)
URTC[0]
0x49C
R_W1C−1
URIER[3]
0x48E
RW−0
URLSR[6]
0x492
RW0−0
URIER[2]
0x48E
RW−0
URLSR[4]
0x492
RW0−0
URLSR[3]
0x492
RW0−0
URLSR[2]
0x492
RW0−0
URLSR[1]
0x492
RW0−0
URMCR[2]
0x491
RW−0
URLSR[7]
0x492
RO−0
/DATAH(9bit)后清零
IDELE
IDLEF
空闲帧中断
1
检测到空闲帧标志
1 = 使能
0 = 关闭
1 = 检测到
0 = 未检测到
1 = 使能
0 = 关闭
接收状态中断产生条件:
RXSE
接收状态中断
BKF = 1
FEF = 1
PEF = 1
OVERF = 1
BKF 1
接收到断开帧标志
FEF 1
接收帧错误标志
PEF 1
1 = 接收到
0 = 未接收到,或已被清零
1 = 错误
0 = 正确,或已被清零
接收奇偶校验错误
1 = 错误
标志
0 = 正确,或已被清零
OVERF 1
接收 BUF 溢出标志
WAKE
哑模式唤醒方式选择
ADDRF
哑模式地址匹配标志
1 = 溢出
0 = 正常,或已被清零
1 = 地址匹配
0 = IDLE 帧
1 = 匹配
0 = 未匹配
表 18-3
1
USART 中断使能和状态位
写 0 清零,写 1 无效。
Rev2.02
- 182 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
地址
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
复位值
PCKEN
0x9A
TKEN
I2CEN
UARTEN
SPIEN
TIM4EN
TIM2EN
TIM1EN
ADCEN
0000 0000
CKOCON
0x95
SYSON
CCORDY
CCOEN
0010 0000
DTYSEL
CCOSEL[2:0]
URDATAL
0x48C
DATA[7:0]
0000 0000
URDATAH
0x48D
URIER
0x48E
URLCR
0x48F
URLCREXT
0x490
URMCR
0x491
URLSR
0x492
URRAR
0x493
URDLL
0x494
DLL[7:0]
0000 0000
URDLH
0x495
DLH[7:0]
0000 0000
URABCR
0x496
—
ABRE
ABRM
ABRF
ABREN
---- 0000
URSYNCR
0x497
—
LBCL
URCPHA
URCPOL
SYNEN
---- 0000
URLINCR
0x498
URSDCR0
0x499
URSDCR1
0x49A
GT[7:0]
0000 0000
URSDCR2
0x49B
PSC[7:0]
0000 0000
URTC
0x49C
DATAH
—
—
BKREQ
—
TCEN
—
IDELE
RXSE
URTE
URRXNE
--0- 0000
—
EVEN
PEN
URSTOP
—
LTH
-0-0 00-0
RWU
EXTEN
---- --00
—
—
ADDRF
IDLEF
SIRLP
TXEN
RXEN
WAKE
HDSEL
SIREN
---0 0000
TXEF
BKF
FEF
PEF
OVERF
RXNEF
0010 0000
RAR[3:0]
—
—
—
NACK
---- ---0
CKOE
LINEN
BLTH[3:0]
SDEN
—
---0 0000
-000 ----
TCF
—
表 18-4
---- 0000
USART 相关寄存器地址
18.2. 功能描述
18.2.1. 一般描述
串口模块总共有三只引脚:
1.
USART_RX:用作串口数据的输入引脚
2.
USART_TX:用作串口数据的输出引脚,在用作半双工模式时也用作串行数据的输入引脚
3.
USART_CK:在同步模式时用作同步时钟输出,在智能卡模式时用系统作分频时钟输出
该模块支持同步模式,异步模式,半双工模式,LIN Master 模式,红外模式和智能卡模式,默认的状态
是工作于异步全双工模式,在确定使用一种模式后,请确保其他模式的相关使能位已关闭。
18.2.2. 异步工作模式
异步工作模式的串口采用异步的方式进行通信,配置的步骤如下:
1.
配置 DLH/DLL 产生相应的波特率进行通信,DLH 和 DLL 共同组成 16 位的波特率分频器,通信的
波特率 = fmaster / (16 * (DL*) ),其中 fmaster 为系统时钟,16 位的波特率分频器的值最小位 1,
Rev2.02
- 183 -
2021-10-29
---- ---1
Fremont Micro Devices
FT62F08x
DL*表示的是 DLL 和 DLH 的组合,设置为零时串口不工作;
2.
配置 LCR 寄存器中的 LTH 位和 LCREXT 寄存器中的 EXTEN 来设置通信的数据长度,配置 LCR 寄
存器中的 STOP 位来配置停止位的长度,配置 LCR 寄存器中的 PEN 和 EVEN 来配置奇偶校验位,
配置 IER 寄存器中的中断使能位来允许中断;
3.
配置 MCR 寄存器中的 TXEN 和 RXEN 来使能允许发送和接收;
异步模式通信的数据格式是先发送低位数据位,最后发送高比特位,如下图所示的 8 比特数据格式不带
奇偶校验和带奇偶校验的帧格式。
1
2
uart_tx PEN=0 LTH=1
3
4
start bit
uart_tx PEN=1 LTH=1
start bit
5
6
7
8
9
10
11
12
13
0
1
2
3
4
5
6
7
1 stop
start bit
0
1
2
3
4
5
6
7
parity
1 stop
14
15
start bit
bit rate
图 18-2 异步模式时序图
异步模式的数据处理流程包括阻塞模式处理和非阻塞模式处理,大致的处理流程如下:
1.
配置完波特率和相关控制位以后,发送端可以向 DATAL/H 发送 buf 寄存器写入数据,在阻塞模式
下可以查询 TXEF 标志位,如果查询到 TXEF 为 1,则可以继续向 DATAL/H 写入需要发送的数
据;在非阻塞模式下,使能发送为空中断,则在 TXEF 为 1 时,就会自动进入中断,向 DATAL/H
写入数据就可清除 TXEF 标志位,当在向 txbuf 写入最后一个要发送的数据时,禁用发送为空中
断;
2.
接收端在阻塞模式下可以查询 RXNEF 标志位,在查询到该标志位为 1 时,表示接收到了数据,通
过读取 DATAL/H 来清零 RXNEF 标志位;采用非阻塞模式接收数据时,需要使能 RXNE 中断,在
串口接收到数据后,直接进入中断,读取 rxbuf 后清零 RXNEF 标志位;在采用非阻塞模式接收数
据时,建议打开 RXSE 中断使能,在接收数据的过程中如遇到接收错误就会直接进入中断进行相关
的处理;
3.
在串口发送数据的时候也可以使用 TCF 标志位来处理,在 TCF 标志位为 1 时,表示当前的数据发
送已经完成,可以向 txbuf 写入下一个要发送的数据,这时 TCF 标志位会自动清零;
1
uart_rx
2
3
4
5
6
7
8
9
10
11
start bit
0
1
2
3
4
5
6
7
1 stop
start bit
0
1
2
3
4
5
6
7
1 stop
12
13
14
15
start bit
RXNEF
uart_tx
TXEF
TCF
图 18-3 异步模式标志位时序图
Rev2.02
- 184 -
2021-10-29
Fremont Micro Devices
FT62F08x
18.2.3. 同步工作模式
同步工作模式用于串口模拟 SPI 通信的功能,在串口数据输出的同时,输出一个与数据相关的同步时钟,
同步时钟的极性和相位可以通过 URSYNCR 寄存器中的 CPOL 和 CPHA 来配置;URSYNCR 寄存器中
的 LBCL 控制的是最后一比特数据的时钟是否输出,该位为零时,只输出数据长度减一个有效同步时钟,
最后一个有效时钟不会输出;SYNEN 就是同步时钟输出使能位,在该位为 1 时相应的 IO 会用作同步时
钟输出;该模块只能模拟 SPI 主机模式,数据输出是先发送低位数据,然后发送的高位数据,并且时钟
引脚只能输出同步时钟,并不能用作时钟输入;
1
2
3
4
5
6
7
8
9
10
ck cpol=0 cpha=1
*
ck cpol=1 cpha=1
*
ck cpol=0 cpha=0
* *
ck cpol=1 cpha=0
* *
start
tx
rx
0
1
2
3
4
5
6
0
1
2
3
4
5
6
11
12
7
7
MSB
LSB
* lbcl control this pulse
图 18-4 同步模式时序图
如图所示八比特数据格式的同步时钟输出,同步模式中如果没有使能 TXEN 也会产生同步脉冲输出,这
时候同步模式只用于接收数据,写入到 DATAL/H 寄存器中的数据会发送到内部的移位寄存器中,用于产
生同步脉冲输出,tx 引脚的值一直保持为 1,在同步发送的同时如果使能了 RXEN 接收位,则可以同步
接收数据。
18.2.4. 半双工模式
半双工模式属于异步工作方式的一种,只是在通信时只用到了 tx 引脚,tx 引脚 IO 应该配置成开漏模
式,发送与接收的处理由软件控制 RXEN 和 TXEN 来实现;需要注意的是如果在发送过程中同时使能
了接收,则发送的数据也会被本机接收到;置位 HDSEL 即可启用半双工模式。
18.2.5. 红外工作模式
红外模式用于红外通信,置位 SIREN 位可以使能红外模式,同时 LTH 位置位为 1,启用八比特数据格
式;通信的波特率设置跟异步串口的配置方法相同。
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
tx sir
start bit 0
rx sir
3/16 braudrate
tx
1
0
1
0
图 18-5 红外模式时序图
Rev2.02
- 185 -
2021-10-29
Fremont Micro Devices
FT62F08x
如图所示红外模块发送的脉冲宽度是比特周期的 3/16,当发送的数据为零时会产生一个高脉冲;接收时
的低脉冲会被解释成零;接收与发送的总线极性是相反的,发送空闲时总线保持低电平,接收空闲时总
线保持为高电平。
红外模式可以工作在低功耗模式,红外模式通常工作在系统的时钟频率下,红外的通信波特率
=fmaster/(16*DL*);当使能了 SIRLP 以后,红外的通信波特率 = fmaster / ( PSC * 16 * DL*);这里的
DL*表示 DLL 和 DLH 的组合,在 psc 设置为 0 或 1 时,psc 分频模块无效,波特产生模块直接使用
Fmaster,如下图所示。
Psc 分频
=fmaster/psc
Fmaster
usart braud gen
图 18-6 红外低功耗模式原理框图
18.2.6. 智能卡模式
智能卡模式属于半双工模式,支持 ISO7816-3 标准,置位 SDEN 来启用智能卡模式,除此之外根据协
议要求需要使能 1.5 比特停止位 STOP 和奇偶校验位 PEN,同时需要配置相应的 IO 为开漏模式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
nack
uart_tx
start bit
0
1
2
3
4
5
6
7
P
bit rate
1.5 stop
guard time
TCF
图 18-7 智能卡模式时序图
在使能了 NACK 位以后,接收方在检测到奇偶校验出错以后,会在 0.5 个停止位之后拉低总线一个比特
周期,同时发送方会在停止位处检测总线是否被拉低,若检测到总线被拉低,则会产生帧错误标志
FEF,发送方根据要求可以选择重发当前的数据,发送次数由用户决定。在没有使能 NACK 位时,接收
方在检测到奇偶校验错误时,不会拉低总线而是会产生一个奇偶检验错误标志位 PEF。
智能卡模式的发送方发送完成数据后,TCF 标志位会在经过 GT 个波特周期后置位;发送与接收的处理
由软件控制 TXEN 和 RXEN 来处理。
智能卡模式中,可以通过使能 CKOE 来输出一个时钟供给使能卡使用,输出的时钟频率详见
URSDCR2 寄存器说明;需要注意的是在置位 CKOE 后,请配置 PSC 的值为有效值,否则不应该置位
CKOE。
Rev2.02
- 186 -
2021-10-29
Fremont Micro Devices
FT62F08x
18.2.7. LIN Master 模式
串口模块支持 LIN Master 模式,使能 LINEN 后进入 LIN Master 模式,在发送断开帧之前请先配置一下
断开帧的长度 BLTH;如图所示,在置位 BKREQ 后,tx 引脚会发送 BLTH 个连续的低电平,发送完成
后自动清零,在使能该位后,可以查询 BKREQ 的状态,等到 BKREQ 为 0 时则表示断开帧发送完成;
在发送断开帧的过程中请勿手动清零 BKREQ。
接收端在接收到大于起始位+数据长度+停止位个数的连续低电平以后,会被认为接收到了断开帧,BKF
会被置 1。
1
2
3
4
5
6
7
8
9
10
BKREQ
tx
BLTH BIT LENGTH
rx
> start bit + data bit + stop bit
BKF
图 18-8 LIN Master 模式时序图
需要注意的是断开帧的接收与发送并不局限于 LIN mode,其他异步模式,红外模式等也是可以应用。
18.2.8. 多芯片通信模式
多处理器通信用于一个芯片用作主机模式,其他芯片用作从机模式,从机的发送引脚通过逻辑与的方式
连接到主机的 RX 引脚,这种模式中主机希望接收特定的消息,只有在特定的条件触发后才会接收数据。
置位 RWU 后即可进入哑模式,屏蔽一切接收,根据 WAKE 的配置,可以唤醒接收主机接收数据:
1.
WAKE 置零,在接收到起始位+数据位+停止位总个数波特周期后唤醒;
2.
WAKE 置一,在接收到匹配的地址后唤醒;
⚫
地址空闲唤醒,在置位 RWU 后,如果总线数据一致繁忙,则不唤醒接收,在检测到连续的一帧空闲
时间 (起始位+数据位+停止位)后唤醒开始接收数据。
1
2
RWU
RX
3
4
5
6
DATA1
DATA2
7
8
9
10
Normal Mode
Mute Mode
DATA3
IDLE
DATA4
DATA5
RXNEF
图 18-9 哑模式空闲唤醒时序图
Rev2.02
- 187 -
2021-10-29
Fremont Micro Devices
⚫
FT62F08x
地址匹配唤醒,在置位 RWU 后,每次接收到数据后都会判断数据的高位是否为 1,若为 1 则把数据
的低四位与 URRAR 的值进行比较,若相等则退出哑模式开始接收之后的数据,后续如果再次接收
到地址数据 (该模式下数据的高位为 1 则表示接收到的数据为地址数据),则还是会与本机的地址
URRAR 进行比较,若不同立即进入哑模式;该模式下每次匹配到地址后 ADDF 会被置 1,反之没有
匹配到地址时一直为零。
1
2
3
RWU
4
5
6
7
8
RX
addr=1
DATA3
DATA2
9
10
Normal Mode
Mute Mode
IDLE
addr=2
DATA4
11
Mute Mode
DATA5
addr=3
DATA6
RXNEF
ADDRF
图 18-10 哑模式地址匹配唤醒时序图
18.2.9. 自动波特率检测
自动波特率检测功能用于接收端校准通信波特率,保持与发送端波特率相同,串口模块实现的波特率检
测模块有两种模式:
1.
检测起始位的长度 (model0);此模式要求数据的第一比特为一,例如数据 0x03、0x55 等;
2.
检测起始比特和第一比特的长度 (model1);此模式要求第一比特的数据为 1,第二比特的数据为 0,
例如数据 0x55,0x01 等;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
data = 0x55
start bit
rx
model 0
model 1
abrf model0
abrf model1
abre
图 18-11 自动波特率检测时序图
使用波特率检测功能,首先使能 ABREN,然后根据自己使用的检测模式配置 ABRM,读取 ABRF 是否
为 1 (上次使用过后未清零),如果为 1,则写零清零;然后开始接收数据,波特率检测完成后 ABRF 就会
置 1,在 ABRF 置 1 后,不要立即清零 ABRF,因为清理 ABRF 会立即在当前传输的位置 (可能已经不
是起始比特的位置) 进行波特率检测,这样会导致错误的结果;当前数据接收完成后会产生 RXNEF 标志
位,然后可以清零 ABRF,开始下一次波特率的检测,假如不清零 ABRF 标志位,则下次接收数据时不
Rev2.02
- 188 -
2021-10-29
Fremont Micro Devices
FT62F08x
会启动波特率检测;如果波特率检测超出了范围则会产生 ABRE 标志位 ,表示波特率检测出错。
波特率检测完成后,如果后续还需要检测波特率则不需要立即清零 ABRF,只有在需要再次检测的时候
清零 ABRF 即可。
需要注意的是波特率检测的数据是用来配置 DLL/DLH 寄存器用的,如果发送方波特率数据不靠近
Fbraudrate = Fmaster / ( 16 * {DLH, DLL} ),则波特率检测模块会自动配置本机为靠近支持的波特率,
串口模块并不支持小数波特率,因此该模块的波特率检测存在误差。
Rev2.02
- 189 -
2021-10-29
Fremont Micro Devices
FT62F08x
19. 电容按键模块
19.1. 触摸按键功能
该系列单片机均提供多触控按键功能,触控按键功能完全内部集成只需外接少量元件,可通过对内部寄
存器的简单操作来实现此功能。
19.2. 触摸按键结构
触控按键与 I/O 引脚共用,通过相应选择寄存器的位来选择此功能。按键被分成两组,每组为 2 个模块,
M0 与 M1 结构相同为第 1 组,M3 与 M4 结构不同为第 2 组。第 1 组包含 8 个触控按键第 2 组包含 7 个
触控按键,每一个按键使用一个振荡器。每个模块具有单独的控制逻辑电路和配套的寄存器系列。M0 的
KEY1-KEY4 与 M1 的 KEY5-KEY8 的控制逻辑电路和配套的寄存器系列不同。M2 的 KEY9-KEY12 与
M3 的 KTY13-KEY15 的控制逻辑电路和配套的寄存器系列不同。
Key OSC
Key OSC
TKMn16DH/TKMn16DL
M
U
X
Multrfrequency
Filter
Key OSC
MnFILEN
fCFTMCK
16-bit C/F Counter
TKCFOV
MnDFEN
Key OSC
MnK4IO~MnK1IO
MnKOEN
MnMXS1~MnMXS0
Mn TSS
fSYS/4
1'B1
TKTMR
M
U
X
8-bit Time Slot
Counter
TKTMR
8-bit Time Slot
Counter Preload
Register
5-bit unit period
counter
TKRCOV
Overflow
图 19-1 第 1 组触控按键功能方框图 (n=0, 1)
Rev2.02
- 190 -
2021-10-29
Fremont Micro Devices
FT62F08x
Key OSC
Key OSC
M
U
X
Key OSC
Key OSC
TKM j16DH/ TKMj16DL
MjK4IO~MjK1IO
Mj KOEN
Mj MXS1~Mj MXS0
M
U
X
Filter
fCFTMCK
Multrfrequency
16-bit C/F Counter
计数器1
Key OSC
Mj FILEN
Mj DFEN
M3M4EN
Key OSC
TKCFOV
TKRCOV
M
U
X
Key OSC
MkK3IO~MkK1IO
MkKOEN
MkMXS1~Mk MXS0
TKMk16DH/ TKMk16DL
Key OSC
Filter
Multrfrequency
fCFTMCK
16- bit C/F Counter
计数器2
MkK4IO
Mk FILEN
MkKOEN
Mk DFEN
TKRCOV
图 19-2 第 2 组触控按键功能方框图 (j=2 k=3)
注:
1. 虚线方框内时隙计数器部分为模块 0 和模块 1 的结构;
2. .当 M0TSS = 0 时选择的时钟为 fSYS / 4,时隙计数器才能正常计数。
Rev2.02
- 191 -
2021-10-29
TKCFOV
Fremont Micro Devices
FT62F08x
19.3. 触摸按键相关寄存器汇总
名称
状态
TKEN
1 = 使能
TOUCH 模块时钟
0 = 关闭
寄存器
地址
PCKEN[7]
0x9A
复位值
RW−0
触控按键时隙计数器溢出标志位
TKRCOV
1
1 = 溢出
TKC0[6]
RW−0
0 = 无溢出
触控按键检测开启控制位
0 = 停止或无操作 (CFnOUTxL/H, TKMn16DL/H, 触控
按键功能 16-bit 计数器和 5-bit 时隙单位周期计数器自动
TKST
清 0,除了 TKTMR)
TKC0[5]
0x38D
RW−0
0 → 1 = 开始检测 (CFnOUTxL/H,TKMn16DL/H,触控
按键功能 16-bit 计数器,5-bit 时隙单位周期计数器和
TKTMR 自动开启,
并使能按键振荡器驱动相应的计数器)
TKCFOV
TDMY
16-bit C/F 计数器溢出标志
1 = 溢出
(必须软件清零)
0 = 无溢出
保留
TKC0[4]
RW−0
TKC0[2:0]
RW−000
TKC1[6:5]
RW−00
时隙计数器计数次数选择
SEG
00 = 1 次
01 = 2 次
10 = 3 次
11 = 4 次
0x38E
Filter 模块的滤毛刺大小选择位 (滤波使能开启时)
OPTION
00 = 0.5ns
01 = 3.5ns
10 = 6.5ns
11 = 9.5ns
TKC1[1:0]
RW−00
TKMnC0[7:6]
RW−00
多路复用按键选择
MnMXS
00 = KEYOSC1
10 = KEYOSC3
01 = KEYOSC2
11 = KEYOSC4
按键振荡器倍频功能控制位
MnDFEN
1 = 使能
TKMnC0[5]
0 = 关闭
+2n
滤波器功能控制位
MnFILE
RW−0
0x396
1 = 使能
n =0~3
TKMnC0[4]
RW−0
TKMnC0[3]
RW−0
0 = 关闭
C/F 振荡器跳频功能控制位
MnSOFC
1 = 由硬件电路控制
0 = 由 MnSOF 位控制
1
不可软件写 1,写 0 清 0。当按键时隙计数器溢出时,TKRCOV 和 TKIF 被同时置“1”,且所有模块按键振荡器停止,
CFnOUTxL/H、TKMn16DL/H、TKTMR 和 5-bit 时隙单位周期计数器都会自动关闭。
Rev2.02
- 192 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
状态
寄存器
地址
复位值
按键振荡器跳频选择位 (内部等效电容=20pF)
MnSOF
00 = 0.821MHz
10 = 0.860MHz
01 = 0.841MHz
11 = 0.876MHz
TKMnC0[1:0]
RW−00
TKMnC1[7]
RW−0
注意:仅 MnSOFC = 0 零时有效。
上述频率会随着外部或内部电容值变化。若按键振荡器
频率选择 1MHz,用户选择其它频率时可依比例调整。
n
描述
值
0
1
MnTSS
时隙计数器计数使
1 = 禁止
能位
0 = 使能
保留,寄存器 TDMY6
1 = 按键 13 ~ 15 的时钟
2
给 M4 模块
M3/M4 模块的第 1
个计数器时钟选择
0x397
0 = 按键 9 ~12 的时钟给
+2n
M3 模块
3
n =0~3
保留,寄存器 TDMY7
MnKOEN
按键振荡器使能控制位
MnK4IO
KEY4 使能控制
MnK3IO
KEY3 使能控制
MnK2IO
KEY2 使能控制
MnK1IO
KEY1 使能控制
名称
1 = 使能
TKMnC1[4]
RW−0
TKMnC1[3]
RW−0
1 = 使能
TKMnC1[2]
RW−0
0 = 禁止 (I/O 或其它功能)
TKMnC1[1]
RW−0
TKMnC1[0]
RW−0
0 = 关闭
状态
寄存器
地址
复位值
触控按键时隙计数器预载寄存器
用于确定触控按键时隙溢出时间。时隙单位周期通
过一个 5-bit 计数器获得,等于 32 个时隙时钟周期。
D[7:0]
时隙计数器溢出时间计算公式:
TKTMR[7:0]
0x38C
RW−0000 0000
( 256 - TKTMR[7:0] ) × 32 tTSC
(tTSC 为时隙计数器时钟周期)
D[15:0]
2
D[15:0] 2
2
CFnOUT1L
保存 16-bit C/F 计数器第 1 次计数
CFnOUT1L
0xF8E +8n
RO−0000 0000
CFnOUT1H
值 (时隙计数器第 1 次溢出时)
CFnOUT1H
0xF8F +8n
RO−0000 0000
CFnOUT2L
保存 16-bit C/F 计数器第 2 次计数
CFnOUT2L
0xF90 +8n
RO−0000 0000
CFnOUT2H
值 (时隙计数器第 2 次溢出时)
CFnOUT2H
0xF91 +8n
RO−0000 0000
当 TKST = 0 时,该寄存器将被清零。
Rev2.02
- 193 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
D[15:0] 2
D[15:0] 2
状态
寄存器
地址
复位值
CFnOUT3L
保存 16-bit C/F 计数器第 3 次计数
CFnOUT3L
0xF92 +8n
RO−0000 0000
CFnOUT3H
值 (时隙计数器第 3 次溢出时)
CFnOUT3H
0xF93 +8n
RO−0000 0000
TKMn16DL
0xF94 +8n
RO−0000 0000
TKMn16DH
0xF95 +8n
RO−0000 0000
TKMn16DL
TKMn16DH
保存 16-bit C/F 计数器的值
表 19-1 触摸按键相关寄存器
注意:
1.
每个触控按键模块包含 8 个触控按键功能,且都有其配套的寄存器。以下表格显示了每个触控按键模块。
2.
N = 0 - 3。寄存器名称里的 n,当 n = 0 时代表 KEY1 - KEY4,当 n = 1 时代表 KEY5 - KEY8,当 n = 2
时代表 KEY9 - KEY12,当 n = 3 时代表 KEY13 - KEY15。
名称
地址
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
复位值
PCKEN
0x9A
TKEN
I2CEN
UARTEN
SPIEN
TIM4EN
TIM2EN
TIM1EN
ADCEN
0000 0000
CKOCON
0x95
SYSON
CCORDY
CCOEN
0010 0000
TKTMR
0x38C
TKC0
0x38D
—
TKC1
0x38E
—
TKM0C0
0x396
M0MXS1
M0MXS0
TKM0C1
0x397
M0TSS
TKM1C0
0x398
TKM1C1
DTYSEL
CCOSEL[2:0]
TKTMR[7:0]
TKRCOV
TKST
0000 0000
TKCFOV
—
TDMY2
TDMY1
TDMY0
0
—
—
—
option1
option0
0
M0DFEN
M0FILEN
M0SOFC
—
M0SOF1
M0SOF0
0000 0-00
—
—
M0KOEN
M0K4IO
M0K3IO
M0K2IO
M0K1IO
0—0 0000
M1MXS1
M1MXS0
M1DFEN
M1FILEN
M1SOFC
—
M1SOF1
M1SOF0
0000 0-10
0x399
TDMY6
—
—
M1KOEN
M1K4IO
M1K3IO
M1K2IO
M1K1IO
0—0 0000
TKM2C0
0x39A
M2MXS1
M2MXS0
M2DFEN
M2FILEN
M2SOFC
—
M2SOF1
M2SOF0
0000 0—0
TKM2C1
0x39B
M3M4EN
—
—
M2KOEN
M2K4IO
M2K3IO
M2K2IO
M2K1IO
0—0 0000
TKM3C0
0x39C
M3MXS1
M3MXS0
M3DFEN
M3FILEN
M3SOFC
—
M3SOF1
M3SOF0
0000 0-11
TKM3C1
0x39D
TDMY7
—
—
M3KOEN
M3K4IO
M3K3IO
M3K2IO
M3K1IO
0—0 0000
SEG[1:0]
表 19-2 触摸按键寄存器汇总
19.4. 触摸按键操作
手指接近或接触到触控面板时,面板的电容量会增大,电容量的变化会轻微改变内部感应振荡器的频率,
通过测量频率的变化可以感知触控动作。参考时钟通过内部可编程分频器能够产生一个固定的时间周期。
在这个时间周期内,通过在此固定时间周期内对感应振荡器产生的时钟周期计数,可确定触控按键的动
作。
触控按键模块 0,1,2 分别包含 4 个与 I/O 引脚共用的触控按键,触控按键模块 3 包含 3 个与 I/O 引脚
共用的触控按键,通过寄存器可设置相应引脚功能。每个触控按键用一个感应振荡器,因此 15 个触控按
键包含 15 个感应振荡器。
在参考时钟固定的时间间隔内,感应振荡器产生的时钟周期数是可以测量的。测到的周期数可以用于判
断触控动作是否有效发生。在此固定的时间间隔结束后,会产生一个触控按键中断信号。
Rev2.02
- 194 -
2021-10-29
Fremont Micro Devices
FT62F08x
所有模块共用同一个时隙计数器,且所有触控按键模块共用一个起始信号,即 TKC0 寄存器中的 TKST。
在此位清零时,所有模块的 16-bit C/F 计数器、触控按键功能 16-bit 计数器和 5-bit 时隙单位周期计数器
会自动清零,而 8-bit 可编程时隙计数器不清零,由用户设置溢出时间。在 TKST 位由低变高时,16-bit
C/F 计数器、触控按键功能 16-bit 计数器、5-bit 时隙单位周期计数器和 8-bit 时隙计数器会自动开启。
当时隙计数器溢出,所有模块的按键振荡器都会自动停止且 16-bit C/F 计数器、触控按键功能 16-bit 计
数器、5-bit 时隙单位周期计数器和 8-bit 时隙计数器也会自动停止。时隙计数器时钟源可通过 TKMnC1
寄存器中的 M0TSS 位选择来自参考振荡器或 fSYS/4。通过设置 TKMnC1 寄存器中的 MnKOEN 为“1”,
可使能按键振荡器。
当时隙计数器溢出时,将产生一个触控按键中断,所有的触控按键振荡器停止工作,这里所有的触控按
键振荡器是指已使能的触控按键振荡器。
触控按键分为 2 组,KEY1 ~ KEY8 为第 1 组,KEY9 ~ KEY15 为第 2 组,第 1 组和第 2 组的架构不相
同。
19.5. 触摸按键中断
触控按键只有一个中断,当时隙计数器溢出时将置位中断标志位。此时所有模块的 16-bit C/F 计数器、
16-bit 计数器、5-bit 时隙单位周期计数器和 8-bit 时隙计数器会自动清零。
任何一个触控按键模块的 16-bit C/F 计数器溢出就会把 16-bit C/F 计数器溢出标志位 TKCFOV 置高。由
于此标志位无法被自动清零,需通过应用程序将此位清零。16-bit 计数器溢出就会把其溢出标志位
TK16OV 置高。由于此标志位无法被自动清零,需通过应用程序将此位清零。
19.6. 编程注意事项
相关寄存器设置后,将 TKST 位由低电平变为高电平会启动触控按键检测。此时所有相关的振荡器将使
能并同步。当时隙计数器溢出时,时隙计数器标志位 TKRCOV 将变为高电平,同时还会产生一个中断信
号。当外部触控按键的大小和布局确定时,其相关的电容将决定感应振荡器的频率。
19.7. 工作模式
19.7.1. 单次扫描
使用默认的 TKC1 寄存器设置可以实现单次扫描的功能。TKST 从 0 到 1 跳变后触控按键模块 16-bit C/F
计数器、5-bit 时隙单位周期计数器和 8-bit 时隙计数器从 0 开始计数。当时隙计数器溢出,则 TKRCOV
位及触控按键中断请求标志位 TKIF 将会被置位且所有模块按键振荡器将自动停止。
19.7.2. 多次扫描
配置 TKC1 寄存器 bit[6:5]可以实现多次扫描的功能。TKST 从 0 到 1 跳变后触控按键模块 16-bit C/F 计
数器从 0 开始计数、5-bit 时隙单位周期计数器从 0 开始计数、8-bit 时隙计数器从加载的 TKTMR 的值
开始计数。当时隙计数器溢出次数匹配时,则 TKRCOV 位及触控按键中断请求标志位 TKIF 将会被置位
且所有模块按键振荡器将自动停止。
19.7.3. 4 段跳频
配置 TKM0C0、TKM1C0、TKM2C0、TKM3C0 寄存器的第 3 位可以实现软件跳频或者硬件自动跳频
Rev2.02
- 195 -
2021-10-29
Fremont Micro Devices
FT62F08x
功能, 在硬件自动跳频功能下, 模块 0 的 KEY1 - KEY4、模块 1 的 KEY5 - KEY8、模块 2 的 KEY9
- KEY12、模块 3 的 KEY13 - KEY15 实现 4 段自动跳频配置,自动跳频配置如下:
第1段
第2段
第3段
第4段
M0SOF[1:0]
3
1
2
0
M1SOF[1:0]
1
3
0
2
M2SOF[1:0]
2
0
3
1
M3SOF[1:0]
0
2
1
3
MnSOF 的不同数值对应的频率乘积比见 TKMnC0 寄存器的第 1 位和第 0 位说明。
Rev2.02
- 196 -
2021-10-29
Fremont Micro Devices
FT62F08x
20. 存储区读/写保护
程序区 (PROM) 可配置为全区读保护,或扇区读/写保护 (每个扇区空间为 1 k x 14)。这些保护功
能均由 IDE 界面进行选择配置。
名称
功能
默认
CPB
PROM 全区读保护
关闭
FSECPB0
PROM 扇区 0(1k x 14)读/写保护
关闭
FSECPB1
PROM 扇区 1(1k x 14)读/写保护
关闭
FSECPB2
PROM 扇区 2(1k x 14)读/写保护
关闭
FSECPB3
PROM 扇区 3(1k x 14)读/写保护
关闭
FSECPB4
PROM 扇区 4(1k x 14)读/写保护
关闭
FSECPB5
PROM 扇区 5(1k x 14)读/写保护
关闭
FSECPB6
PROM 扇区 6(1k x 14)读/写保护
关闭
FSECPB7
PROM 扇区 7(1k x 14)读/写保护
关闭
图 20-1 存储区读/写保护初始化配置寄存器
Rev2.02
- 197 -
2021-10-29
Fremont Micro Devices
FT62F08x
21. 程序存储器
0x0000
Implemented
0x8000
0x8001
0x8002
0x8003
...
0x8040
0x8041
0x8042
...
0x8060
0x8061
...
0x8080
...
0x80FF
UCFG0
UCFG1
UCFG2
...
...
FCFG0
FCFG1
FCFG2
...
USER
0x1FFF
0x2000
Main
Area
Reserved
Not Implemented
FACT&
INFO
...
...
FMD INFO0
...
FMD INFO1
0x7FFF
0x8000
Implemented
0x80FF
USER/
FACT/
INFO
Pages
图 21-1 程序存储区地址空间
程序地址计数器 PC 为 15 位 (0x0000 ~ 0x7FFF),最多支持 32k 地址空间。芯片实现了 8K 的程序存储
器 (0x0000 ~ 0x1FFF),外加上 2 个额外的用户配置区,工厂配置区,以及 2 个信息区 INFO0/INFO1。
8k 程序存储器由 128 页组成,每页 64 个 word (1word= 14bits),地址范围为 0x0000~0x1FFF,当程序
地址超过 0x1FFF 将导致回卷到 0x0000。
另外的 4 个 NVM 区分别占一个单独的页,每页 64 word,其编址从 0x8000 开始,到 0x80FF 结束。
将程序存储器当作数据存储器读取
有两种方法可访问程序存储器中的常数。第一种方法是使用 RETW 指令表。第二种方法是设置 FSR 指
向程序存储器。
RETW 指令
RETW 指令用于提供对常数表的访问。
例 2.1 给出了创建这种表的推荐方法。
BRW 指令使得这种类型的表实现起来非常简单。如果代码必须保持与前几代单片机之间的可移植性,则
BRW 指令不适用,因此必须使用较老的表读取方法。
Rev2.02
- 198 -
2021-10-29
Fremont Micro Devices
FT62F08x
Constants ; example 2.1
BRW ;Add Index in W to program counter to ;select data
RETW DATA0 ;Index0 data
RETW DATA1 ;Index1 data
RETW DATA2
RETW DATA3
my_function
;… LOTS OF CODE…
LDWI DATA_INDEX
call constants
; THE CONSTANT IS IN W
适用 FSR 间接读取
可将程序存储器当作数据存储器进行访问,
方法是将 FSRxH 寄存器的 bit7 置 1 并读取与之配对的 INDFx
寄存器。MOVIW 指令会将已寻址到的字的低 8 位保存在 W 寄存器中。无法通过 INDF 寄存器执行写
程序存储器操作。通过 FSR 访问程序存储器的指令需要一个额外的指令周期才能完成。例 2.2 演示
了通过 FSR 访问程序存储器的过程。
如果标号指向程序存储器中的单元,HIGH 伪指令将 bit[7]置 1。
constants
; example 2.2
RETW DATA0 ; Index0 data
RETW DATA1 ; Index1 data
RETW DATA2
RETW DATA3
my_function
;… LOTS OF CODE…
LDWI LOW constants
STR FSR1L
LDWI HIGH constants
STR FSR1H
MOVIW 0[FSR1] ; THE PROGRAM MEMORY IS IN W
Rev2.02
- 199 -
2021-10-29
Fremont Micro Devices
FT62F08x
22. 特殊功能寄存器(SPECIAL FUNCTION REGISTERS, SFR)
有 2 种特殊功能寄存器 (SFR):
•
初始化配置寄存器: 由仿真器界面设置 (Integrated Development Environment, IDE);
•
用户寄存器;
22.1. 初始化配置寄存器
图 22-1 由 IDE 设置的初始化配置寄存器
Rev2.02
- 200 -
2021-10-29
Fremont Micro Devices
FT62F08x
名称
功能
默认
CPB
PROM 全区读保护
关闭
MCLRE
外部 I/O 复位
关闭
PWRTEB
上电延时定时器(PWRT),初始化配置完成后额外延时~64ms
关闭
WDT
WDTE
SWDTEN
• 使能 (指令不能禁止)
控制
• 由指令控制 (SWDTEN)
• LP:PC1 (+) 和 PB7 (−) 接外部低速晶振
FOSC
• XT:PC1 (+) 和 PB7 (−) 接外部高速晶振
INTOSCIO
• EC:PC1 (+) 接外部时钟输入,PB7 为 I/O
• INTOSCIO:PC1 和 PB7 为 I/O
OST 定时器周期选择 (XT / LP 适用)
• 512
OSTPER
• 1024
1024
• 2048
• 4096 (LP 模式时为 32768)
指令时钟与系统时钟 SysClk 的对应关系 (1T, 2T or 4T):
TSEL
• 1 (指令时钟= SysClk)
2
• 2 (指令时钟= SysClk/2)
• 4 (指令时钟= SysClk/4)
故障保护时钟监控器
FCMEN
• 使能
使能
• 关闭
XT / LP 双速时钟启动
IESO
• 使能
使能
• 关闭
LVR
• 使能
LVREN
• 关闭
关闭
• 非 SLEEP 模式下使能
• 通过指令控制 (SLVREN)
LVRS
7 档 VBOR 电压(V): 2.0 / 2.2 / 2.5 / 2.8 / 3.1 / 3.6 / 4.1
FSECPB0
PROM 扇区 0(1k x 14)读/写保护
关闭
FSECPB1
PROM 扇区 1(1k x 14)读/写保护
关闭
FSECPB2
PROM 扇区 2(1k x 14)读/写保护
关闭
Rev2.02
- 201 -
2.5
2021-10-29
Fremont Micro Devices
FT62F08x
名称
功能
默认
FSECPB3
PROM 扇区 3(1k x 14)读/写保护
关闭
FSECPB4
PROM 扇区 4(1k x 14)读/写保护
关闭
FSECPB5
PROM 扇区 5(1k x 14)读/写保护
关闭
FSECPB6
PROM 扇区 6(1k x 14)读/写保护
关闭
FSECPB7
PROM 扇区 7(1k x 14)读/写保护
关闭
I2C 复用管脚选择
[PB3, PB2]:(≥ I 版芯片适用)
I2C_SDA = PB3, I2C_SCL = PB2;
I2CRMAP
SPI_MOSI = PA0, SPI_MISO = PA1
[PB3,PB2]
[PA0, PA1]:
I2C_SDA = PA0, I2C_SCL = PA1;
SPI_MOSI = PB3, SPI_MISO = PB2
图 22-2 初始化配置寄存器 (由 IDE 设置)
22.2. 用户寄存器
用户寄存器,即特殊功能寄存器 (SFR) 分布在 32 个 bank 中,每个 bank 大小为 128 个字节。在访问
寄存器前,必须先切换到相应的 bank。
可通过将存储区号写入存储区选择寄存器 (Bank Select Register,BSREG) 来选择有效存储区。未实现
的存储器将读为 0。所有的数据存储器都可以直接访问 (通过使用文件寄存器的指令),或通过 2 个文件
选择寄存器 (FSR) 间接访问。更多信息,请参见章节 22.5“间接寻址”。
数据存储器使用一个 12 位地址。地址的高 5 位用于定义存储区地址,低 7 位用于选择该存储区中的寄
存器/RAM。
BANKx
地址
0x000
内核寄存器,12个字节
0x00B
0x00C
SFR,20个字节
0x01F
0x020
SRAM,80个字节
0x06F
0x070
共用RAM,16个字节
0x07F
图 22-3 存储区构成
Rev2.02
- 202 -
2021-10-29
Fremont Micro Devices
BANK0
地址
0x000
FT62F08x
地址
BANK1
地址
0x080
内核寄存器,12个字节
0x00B
0x00C
内核寄存器,12个字节
0x08B
0x08C
PORTx/PIR/SPI
0x01F
0x020
共用RAM,16个字节
0x07F
BANK4
地址
0x200
共用RAM,16个字节
地址
内核寄存器,12个字节
0x20B
0x20C
BANK5
地址
内核寄存器,12个字节
WPDx/TIM1_1OF2
BANK8
地址
0x400
地址
内核寄存器,12个字节
0x40B
0x40C
地址
内核寄存器,12个字节
I2C
0x41F
0x420
共用RAM,16个字节
共用RAM,16个字节
0x500
0x48B
0x48C
SRAM,80个字节
0x3EF
0x3F0
0x3FF
0x37F
BANK9
TOUCH_1OF2
0x39F
0x3A0
SRAM,80个字节
共用RAM,16个字节
0x480
内核寄存器,12个字节
0x38B
0x38C
0x36F
0x370
0x2FF
BANK10
地址
0xF80
0xF8B
0xF8C
0x50B
0x50C
BANK31
内核寄存器,12个字节
内核寄存器,12个字节
UART
BANK7
0x380
TIM2
SRAM,80个字节
共用RAM,16个字节
地址
内核寄存器,12个字节
0x31F
0x320
0x2EF
0x2F0
0x27F
BANK6
TIM1_2OF2
SRAM,80个字节
0x26F
0x270
0x1FF
0x30B
0x30C
0x29F
0x2A0
共用RAM,16个字节
共用RAM,16个字节
0x300
0x28B
0x28C
0x21F
0x220
0x1EF
0x1F0
0x17F
0x280
SRAM,80个字节
SRAM,80个字节
0x16F
0x170
0x0FF
WPUx/EE
0x19F
0x1A0
0x11F
0x120
0x0E
F
0x0F0
0x06F
0x070
内核寄存器,12个字节
LATx/TIM4
SRAM,80个字节
BANK3
0x180
0x18B
0x18C
0x10B
0x10C
0x09F
0x0A0
地址
内核寄存器,12个字节
TRISx/PIE/ADC
SRAM,80个字节
BANK2
0x100
TEST SFR,2个字节
TOUCH_2OF2
0x49F
0x4A0
0x51F
0x520
未实现,保留
0xFE3
0xFE4
SRAM,80个字节
SRAM,80个字节
SRAM,80个字节
影子寄存器
0x46F
0x470
0x4EF
0x4F0
共用RAM,16个字节
0x47F
0xFEF
0xFF0
0x56F
0x570
共用RAM,16个字节
0x4FF
共用RAM,16个字节
共用RAM,16个字节
0x57F
0xFFF
图 22-4 存储区地址映射
Rev2.02
- 203 -
2021-10-29
Fremont Micro Devices
FT62F08x
因为在切换 bank 时需要额外的指令,因此一些常用的 SFR 同时存储在 13 个 bank 中,以减少切换操作,这
些 13 个 bank 所共有的寄存器值是同步的。
Bank
首地址
Bank0
000H
Bank1
080H
Bank2
100H
Bank3
180H
Bank4
200H
Bank5
280H
Bank6
300H
Bank7
380H
Bank8
400H
Bank9
480H
Bank10
500H
Bank11
580H
Bank12
600H
Bank31
F80H
表 22-1 BANK 首地址
地址
bit 7
名称
bit 6
bit 5
首地址 + 0H
INDF0
首地址 + 1H
INDF1
首地址 + 2H
PCL
首地址 + 3H
STATUS
首地址 + 4H
FSR0L
首地址 + 5H
FSR0H
首地址 + 6H
FSR1L
首地址 + 7H
FSR1H
首地址 + 8H
BSREG
首地址 + 9H
WREG
首地址 + 0AH
PCLATH
−
−
−
首地址 + 0BH
INTCON
GIE
PEIE
T0IE
bit 4
bit 3
bit 2
bit 1
bit 0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
xxxx xxxx
程序计数器 (PC) 低 8 位
−
−
−
/TO
/PD
0000 0000
Z
HC
C
0001 1xxx
xxxx xxxx
间接寻址指针寄存器
xxxx xxxx
首地址 + (70 − 7F)
程序计数器 (PC) 高 5 位锁存器
INTE
PAIE
T0IF
INTF
−−−0 0000
PAIF
公共 BANK SRAM 区
- 204 -
0000 0000
xxxx xxxx
表 22-2 BANK 共有寄存器
Rev2.02
复位值
2021-10-29
Fremont Micro Devices
地址
名称
bit 7
FT62F08x
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
00
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
01
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
02
PCL
程序计数器低 8 位
0000 0000
03
STATUS
04
FSR0L
−
−
−
/TF
/PF
Z
HC
C
0001 1xxx
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
05
FSR0H
06
FSR1L
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
07
FSR1H
xxxx xxxx
08
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
09
WREG
工作寄存器 W
xxxx xxxx
0A
PCLATH
−
0B
INTCON
GIE
0C
PORTA
PORTA [7:0]
xxxx xxxx
0D
PORTB
PORTB [7:0]
xxxx xxxx
0E
PORTC
PORTC[7:0]
xxxx xxxx
0F
PORTD
−
−
11
PIR1
−
−
14
EPIF0
15
SPIDATA
16
SPICTRL
SPIF
WCOL
MODF
RXOVRN
17
SPICFG
BUSY
MSTEN
CPHA
CPOL
18
SPISCR
波特率设置寄存器
0000 0000
19
SPICRCPOL
CRC 计算多项式
0000 0111
1A
SPIRXCRC
接收数据的 CRC 计算结果
0000 0000
1B
SPITXCRC
发送数据的 CRC 计算结果
0000 0000
1C
SPIIER
1D
SPICTRL2
1E
SPISTAT
程序计数器高 7 位锁存器
PEIE
EEIE
LVDIE
OSFIE
−000 0000
EEIF
LVDIF
OSFIF
TRISD [5:0]
−
−
−
0000 0000
−−xx xxxx
TKIF
CKMIF
ADCIF
−−−− −000
外部管脚中断标志位
0000 0000
SPI 数据发送/接收 BUF 寄存器
0000 0000
NSSM [1:0]
SLAS
NSSVAL
TXBMT
SPIEN
0000 0010
SRMT
RXBMT
0000 0111
−
−
−
−
WAKUP
RXERR
RXNE
TXE
−−−− 0000
BDM
BDOE
RXONLY
SSI
SSM
CRCNXT
CRCEN
LSBFIRST
0000 0000
−
SMODF
SRXOVRN
SBUSY
SRXBMT
STXBMT
WKF
CRCERR
−000 1100
ADDLY
ADC 外部触发启动延时计数器阈值低 8 位 / 复用为 前沿消隐计数阈值
0000 0000
20–6F
SRAM BANK0 (80Bytes)
xxxx xxxx
70–7F
SRAM BANK0 (16Bytes), 物理地址 0x70–0x7F
xxxx xxxx
1F
/LEBPRL
表 22-3 SFR, BANK 0
Rev2.02
- 205 -
2021-10-29
Fremont Micro Devices
地址
名称
bit 7
FT62F08x
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
80
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
81
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
82
PCL
程序计数器低 8 位
0000 0000
83
STATUS
84
FSR0L
−
−
−
/TF
/PF
Z
HC
C
0001 1xxx
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
85
FSR0H
86
FSR1L
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
87
FSR1H
xxxx xxxx
88
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
89
WREG
工作寄存器 W
xxxx xxxx
8A
PCLATH
−
8B
INTCON
GIE
8C
TRISA
TRISA[7:0]
1111 1111
8D
TRISB
TRISB[7:0]
1111 1111
8E
TRISC
TRISC[7:0]
1111 1111
8F
TRISD
−
−
91
PIE1
−
−
94
EPIE0
95
CKOCON
SYSON
CCORDY
96
PCON
STKOVF
STKUNF
97
WDTCON
98
OSCTUNE
99
OSCCON
9A
PCKEN
9B
ADRESL
ADC 结果寄存器低 8 位
0000 0000
9C
ADRESH
ADC 结果寄存器高 8 位
0000 0000
9D
ADCON0
9E
ADCON1
9F
ADCON2
程序计数器高 7 位锁存器
PEIE
EEIE
LVDIE
OSFIE
EEIF
−000 0000
LVDIF
OSFIF
TRISD[5:0]
−
−
−
TKIE
−−11 1111
CKMIE
ADCIE
EMCF
CCOSEL[2:0]
IERRF
/MCLRF
WDTPRE[2:0]
/PORF
CCOEN
0010 0000
/BORF
qqqq qqqq
SWDTEN
1110 1000
HIRC 时钟频率调节位
MCKCF[3:0]
TKEN
/SRSTF
WDTPS[3:0]
−
I2CEN
UARTEN
SPICKEN
CHS[3:0]
ADFM
ADINTREF[1:0]
−xxx xxxx
OSTS
HTS
LTS
SCS
0100 x000
TIM4EN
TIM2EN
TIM1EN
ADCEN
0000 0000
ADCAL
ADCS[2:0]
ADEX
GO/DONE
ADNREF[1:0]
ETGTYP[1:0]
−−−− −000
0000 0000
外部中断使能位
DTYSEL
0000 0000
ADDLY.8
ADON
ADPREF[1:0]
ETGSEL[2:0]
0000 0000
0000 0000
0000 0000
A0–EF
SRAM BANK1 (80Bytes)
xxxx xxxx
F0–FF
SRAM BANK1 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
表 22-4 SFR, BANK 1
Rev2.02
- 206 -
2021-10-29
Fremont Micro Devices
地址
名称
FT62F08x
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
100
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
101
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
102
PCL
程序计数器低 8 位
0000 0000
103
STATUS
104
FSR0L
−
−
−
/TF
/PF
Z
HC
C
0001 1xxx
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
105
FSR0H
106
FSR1L
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
107
FSR1H
xxxx xxxx
108
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
109
WREG
工作寄存器 W
xxxx xxxx
10A
PCLATH
−
程序计数器高 7 位锁存器
−000 0000
10B
INTCON
GIE
10C
LATA
LATA[7:0]
xxxx xxxx
10D
LATB
LATB[7:0]
xxxx xxxx
10E
LATC
LATC[7:0]
xxxx xxxx
10F
LATD
111
PEIE
EEIE
LVDIE
−
−
TIM4CR1
T4ARPE
−
T4CKS[1:0]
112
TIM4IER
−
−
−
113
TIM4SR
−
−
114
TIM4EGR
−
−
115
TIM4CNTR
116
TIM4PSCR
117
TIM4ARR
118
OSFIE
EEIF
LVDIF
OSFIF
LATD[7:0]
−−xx xxxx
T4OPM
T4URS
T4UDIS
T4CEN
0−00 0000
−
−
−
−
T4UIE
---- ---0
−
−
−
−
−
T4UIF
---- ---0
−
−
−
−
−
T4UG
---- ---0
T4CNT[7:0]
-
-
0000 0000
-
-
0000 0000
-
T4PSC[2:0]
---- -000
T4ARR[7:0]
1111 1111
EPS0
EPS0[7:0]
0000 0000
119
EPS1
EPS1[7:0]
0000 0000
11A
PSRC0
PSRCB[3:0]
PSRCA[3:0]
1111 1111
11B
PSRC1
PSRCD[3:0]
PSRCC[3:0]
1111 1111
11C
MISC0
-
-
-
11D
AFP2
-
-
-
11E
ITYPE0
ITYPE0[7:0]
0000 0000
11F
ITYPE1
ITYPE1[7:0]
0000 0000
120–16F
SRAM BANK2 (80Bytes)
xxxx xxxx
170–17F
SRAM BANK2 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
-
-
-
WCKSEL[1:0]
AFP2[4:0]
---0 0000
表 22-5 SFR, BANK 2
Rev2.02
- 207 -
---- --00
2021-10-29
Fremont Micro Devices
地址
名称
FT62F08x
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
180
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
181
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
182
PCL
程序计数器低 8 位
0000 0000
183
STATUS
184
FSR0L
185
FSR0H
186
FSR1L
187
FSR1H
188
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
189
WREG
工作寄存器 W
xxxx xxxx
18A
PCLATH
−
18B
INTCON
GIE
18C
WPUA
WPUA[7:0]
0000 0000
18D
WPUB
WPUB[7:0]
0000 0000
18E
WPUC
WPUC[7:0]
0000 0000
18F
WPUD
WPUD[7:0]
0000 0000
191
EEADRL
EEADR[7:0]
0000 0000
192
EEADRH
193
EEDATL
194
EEDATH
-
195
EECON1
EEPGD
196
EECON2
EEPROM 控制寄存器 2
xxxx xxxx
197
ANSELA
模拟管脚设置寄存器
0000 0000
198
EECON3
-
-
-
-
-
199
LVDCON
SLVREN
LVDM
-
LVDEN
LVDW
19A
PSINK0
PSINK0[7:0]
0000 0000
−
−
−
/TF
/PF
Z
HC
C
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
xxxx xxxx
程序计数器高 7 位锁存器
PEIE
EEIE
LVDIE
-
OSFIE
EEIF
−000 0000
LVDIF
OSFIF
EEADR[14:8]
xxxx xxxx
EEDAT[13:8]
-
FREE
0000 0000
-000 0000
EEDAT[7:0]
CFGS
0001 1xxx
WRERR
-xxx xxxx
WREN
-
WR
-
RD
DRDEN
LVDL[3:0]
00-0 x000
---- ---0
0000 0000
19B
PSINK1
PSINK1[7:0]
0000 0000
19C
PSINK2
PSINK2[7:0]
0000 0000
19D
PSINK3
19E
AFP0
19F
AFP1
-
-
PSINK3[5:0]
--00 0000
AFP0[7:0]
-
0000 0000
AFP1[7:0]
-000 0000
1A0–1EF
SRAM BANK3 (80Bytes)
xxxx xxxx
1F0–1FF
SRAM BANK3 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
表 22-6 SFR, BANK3
Rev2.02
- 208 -
2021-10-29
Fremont Micro Devices
地址
名称
FT62F08x
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
200
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
201
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
202
PCL
203
STATUS
204
FSR0L
205
FSR0H
206
FSR1L
207
FSR1H
208
BSREG
程序计数器低 8 位
−
−
−
PCLATH
−
GIE
20B
INTCON
20C
WPDA
20D
20E
20F
WPDD
211
TIM1CR1
213
TIM1SMCR
215
TIM1IER
T1BIE
T1TIE
-
216
TIM1SR1
T1BIF
T1TIF
217
TIM1SR2
-
-
218
TIM1EGR
T1BG
-
21C
HC
C
PEIE
EEIE
0001 1xxx
xxxx xxxx
xxxx xxxx
xxxx xxxx
xxxx xxxx
存储区选择寄存器 (Bank Select Register)
WREG
21B
Z
间接寻址指针寄存器 1 [15:0]
209
21A
0000 0000
/PF
间接寻址指针寄存器 0 [15:0]
20A
219
/TF
xxxx xxxx
工作寄存器 W
xxxx xxxx
程序计数器高 7 位锁存器
−000 0000
LVDIE
OSFIE
EEIF
LVDIF
OSFIF
0000 0000
WPDA[7:0]
0000 0000
WPDB
WPDB[7:0]
0000 0000
WPDC
WPDC[7:0]
0000 0000
TIM1CCMR1
(output mode)
WPDD[7:0]
T1ARPE
-
0000 0000
T1CC1IE
T1UIE
00-0 0000
T1SMS[2:0]
T1CC2IE
-000 -000
T1CC4IF
T1CC3IF
T1CC2IF
T1CC1IF
T1UIF
00-0 0000
T1CC4OF
T1CC3OF
T1CC2OF
T1CC1OF
-
---0 000-
-
T1CC4G
T1CC3G
T1CC2G
T1CC1G
-
0—0 000-
T1OC1PE
-
T1IC1PSC[1:0]
T1OC2PE
-
T1IC2PSC[1:0]
T1OC3PE
T1IC3F[3:0]
TIM1CCMR4
(input mode)
T1CEN
-
T1OC3M[2:0]
-
T1UDS
-
T1IC2F[3:0]
TIM1CCMR3
(input mode)
TIM1CCMR4
(output mode)
-
T1OC2M[2:0]
-
0000 0000
TIURS
T1CC3IE
T1OC1M[2:0]
-
T1OPM
T1CC4IE
T1IC1F[3:0]
TIM1CCMR2
(input mode)
TIM1CCMR3
(output mode)
TIDIR
T1TS[2:0]
-
TIM1CCMR1
(input mode)
TIM1CCMR2
(output mode)
T1CMS[1:0]
-
T1IC3PSC[1:0]
T1OC4M[2:0]
T1OC4PE
T1IC4F[3:0]
-
T1IC4PSC[1:0]
T1CC1S[1:0]
-000 0-00
T1CC1S[1:0]
0000 0000
T1CC2S[1:0]
-000 0-00
T1CC2S[1:0]
0000 0000
T1CC3S[1:0]
-000 0-00
T1CC3S[1:0]
0000 0000
T1CC4S[1:0]
-000 0-00
T1CC4S[1:0]
0000 0000
21D
TIM1CCER1
T1CC2N
T1CC2N
T1CC2P
T1CC2E
T1CC1NP
TICC1NE
T1CC1P
T1CC1E
0000 0000
21E
TIM1CCER2
-
-
T1CC4P
T1CC4E
T1CC3NP
TICC3NE
T1CC3P
T1CC3E
--00 0000
ODCON0
-
-
-
-
-
SPIOD
I2CON
UROD
21F
---- -000
220–26F
SRAM BANK4 (80Bytes)
xxxx xxxx
270–27F
SRAM BANK4 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
表 22-7 SFR, BANK4
Rev2.02
- 209 -
2021-10-29
Fremont Micro Devices
地址
名称
FT62F08x
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
280
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
281
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
282
PCL
程序计数器低 8 位
0000 0000
283
STATUS
284
FSR0L
285
FSR0H
286
FSR1L
287
FSR1H
288
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
289
WREG
工作寄存器 W
xxxx xxxx
28A
PCLATH
−
程序计数器高 7 位锁存器
−000 0000
28B
INTCON
GIE
28C
TIM1CNTRH
T1CNT[15:8]
0000 0000
28D
TIM1CNTRL
T1CNT [7:0]
0000 0000
28E
TIM1PSCRH
T1PSC[15:8]
0000 0000
28F
TIM1PSCRL
T1PSC[7:0]
0000 0000
290
TIM1ARRH
T1ARR[15:8]
1111 1111
291
TIM1ARRL
T1ARR[7:0]
1111 1111
292
TIM1RCR
TIREP[7:0]
0000 0000
293
TIM1CCR1H
T1CCR1[15:8]
0000 0000
294
TIM1CCR1L
T1CCR1[7:0]
0000 0000
295
TIM1CCR2H
T1CCR2[15:8]
0000 0000
296
TIM1CCR2L
T1CCR2[7:0]
0000 0000
297
TIM1CCR3H
T1CCR3[15:8]
0000 0000
298
TIM1CCR3L
T1CCR3[7:0]
0000 0000
299
TIM1CCR4H
T1CCR4[15:8]
0000 0000
29A
TIM1CCR4L
T1CCR4[7:0]
0000 0000
29B
TIM1BKR
29C
TIM1DTR
29D
TIM1OISR
29E
TIM2CCR3H
T2CCR3[15:8]
0000 0000
29F
TIM2CCR3L
T2CCR3 [7:0]
0000 0000
2A0–2EF
SRAM BANK5 (80Bytes)
xxxx xxxx
2F0–2FF
SRAM BANK5 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
−
−
−
/TF
/PF
Z
HC
C
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
T1MOE
PEIE
T1AOE
EEIE
T1BKP
LVDIE
T1BKE
OSFIE
T1OSSR
EEIF
T1OSSI
xxxx xxxx
LVDIF
OSFIF
T1LOCK[1:0]
T1DGT[7:0]
-
T1OIS4
T1OIS3N
T1OIS3
T1OIS2N
- 210 -
0000 0000
0000 0000
0000 0000
T1OIS2
T1OIS1N
T1OIS1
表 22-8 SFR, BANK5
Rev2.02
0001 1xxx
2021-10-29
-000 0000
Fremont Micro Devices
地址
名称
FT62F08x
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
300
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
301
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
302
PCL
程序计数器低 8 位
0000 0000
303
STATUS
304
FSR0L
305
FSR0H
306
FSR1L
307
FSR1H
308
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
309
WREG
工作寄存器 W
xxxx xxxx
30A
PCLATH
程序计数器高 7 位锁存器
−000 0000
−
−
−
/TF
/PF
Z
xxxx xxxx
HC
C
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
−
0001 1xxx
xxxx xxxx
30B
INTCON
GIE
PEIE
EEIE
LVDIE
OSFIE
EEIF
LVDIF
OSFIF
0000 0000
30C
TIM2CR1
T2ARPE
-
-
-
T2OPM
T2URS
T2UDIS
T2CEN
0--- 0000
30D
TIM2IER
-
-
-
-
T2CC3IE
T2CC2IE
T2CC1IE
T2UIE
---- 0000
30E
TIM2SR1
-
T2CC3IF
T2CC2IF
T2CC1IF
T2UIF
---- 0000
30F
TIM2SR2
-
T2CC3OF
T2CC3OF
T2CC3OF
-
---- 000-
310
TIM2EGR
-
T2CC3G
T2CC2G
T2CC1G
T2UG
---- 0000
TIM2CCMR1
(output mode)
-
T2OC1PE
-
T2CC1S[1:0]
-000 0-00
T2IC1PSC[1:0]
T2CC1S[1:0]
0000 0000
-
T2CC2S[1:0]
-000 0-00
T2IC2PSC[1:0]
T2CC2S[1:0]
0000 0000
-
T2CC3S[1:0]
-000 0-00
T2IC3PSC[1:0]
T2CC3S[1:0]
0000 0000
311
312
313
T2OC1M[2:0]
TIM2CCMR1
(input mode)
TIM2CCMR2
(output mode)
T2IC1F[3:0]
-
T2OC2M[2:0]
TIM2CCMR2
(input mode)
TIM2CCMR3
(output mode)
T2OC2PE
T2IC2F[3:0]
-
T2OC3M[2:0]
TIM2CCMR3
(input mode)
T2OC3PE
T2IC3F[3:0]
314
TIM2CCER1
-
-
T2CC2P
T2CC2E
-
-
T2CC1P
T2CC1E
--00 --00
315
TIM2CCER2
-
-
-
-
-
-
T2CC3P
T2CC3E
---- --00
316
TIM2CNTRH
T2CNT[15:8]
0000 0000
317
TIM2CNTRL
T2CNT[7:0]
0000 0000
318
TIM2PSCR
319
TIM2ARRH
31A
TIM2ARRL
T2ARR[7:0]
1111 1111
31B
TIM2CCR1H
T2CCR1[15:8]
0000 0000
31C
TIM2CCR1L
T2CCR1[7:0]
0000 0000
31D
TIM2CCR2H
T2CCR2[15:8]
0000 0000
31E
TIM2CCR2L
T2CCR2[7:0]
0000 0000
31F
TCKSRC
-
-
-
-
T2PSC[3:0]
T2ARR[15:8]
LFMOD
T2CKSRC[2:0]
-
---- 0000
1111 1111
T2CKSRC[2:0]
0000 -000
320–36F
SRAM BANK6 (80Bytes)
xxxx xxxx
370–37F
SRAM BANK6 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
表 22-9 SFR, BANK6
Rev2.02
- 211 -
2021-10-29
Fremont Micro Devices
地址
名称
bit 7
FT62F08x
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
380
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
381
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
382
PCL
程序计数器低 8 位
0000 0000
383
STATUS
384
FSR0L
385
FSR0H
386
FSR1L
387
FSR1H
388
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
389
WREG
工作寄存器 W
xxxx xxxx
38A
PCLATH
−
38B
INTCON
GIE
38C
TKTMR
38D
TKC0
-
38E
TKC1
-
391
WProof3
-
PONLY
396
TKM0C0
M0MXS1
397
TKM0C1
398
−
−
−
/TF
/PF
Z
HC
C
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
xxxx xxxx
程序计数器高 7 位锁存器
PEIE
EEIE
LVDIE
OSFIE
−000 0000
EEIF
LVDIF
OSFIF
TKTMR[7:0]
TKRCOV
TKST
0001 1xxx
0000 0000
0000 0000
TKCFVO
-
TDMY2
TDMY1
TDMY0
-000 -000
-
-
-
option1
Option0
-00- --00
-
-
-
-
-
-
-0-- ----
M0MXS0
M0DFEN
M0FILEN
M0SOFC
-
M0SOF1
M0SOF0
0000 0-00
M0TSS
-
-
M0KOEN
M0K4IO
M0K3IO
M0K2IO
M0K1IO
0--0 0000
TKM1C0
M1MXS1
M1MXS0
M1DFEN
M1FILEN
M1SOFC
-
M1SOF1
M1SOF0
0000 0-00
399
TKM1C1
M1TSS
-
-
M1KOEN
M1K4IO
M1K3IO
M1K2IO
M1K1IO
0--0 0000
39A
TKM2C0
M2MXS1
M2MXS0
M2DFEN
M2FILEN
M2SOFC
-
M2SOF1
M2SOF0
0000 0-00
39B
TKM2C1
M2TSS
-
-
M2KOEN
M2K4IO
M2K3IO
M2K2IO
M2K1IO
0--0 0000
39C
TKM3C0
M3MXS1
M3MXS0
M3DFEN
M3FILEN
M3SOFC
-
M3SOF1
M3SOF0
0000 0-00
39D
TKM3C1
M3TSS
-
-
M3KOEN
M3K4IO
M3K3IO
M3K2IO
M3K1IO
0--0 0000
SEG[1:0]
3A0–3EF
SRAM BANK7 (80Bytes)
xxxx xxxx
3F0–3FF
SRAM BANK7 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
表 22-10 SFR, BANK7
Rev2.02
- 212 -
2021-10-29
Fremont Micro Devices
地址
名称
bit 7
FT62F08x
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
400
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
401
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
402
PCL
程序计数器低 8 位
0000 0000
403
STATUS
404
FSR0L
405
FSR0H
406
FSR1L
407
FSR1H
408
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
409
WREG
工作寄存器 W
xxxx xxxx
40A
PCLATH
−
40B
INTCON
GIE
PEIE
EEIE
LVDIE
OSFIE
EEIF
LVDIF
OSFIF
0000 0000
40C
I2CCR1
-
-
-
MST10B
SLV10B
-
SPEED
MASTER
---0 0-00
40D
I2CCR2
-
SOFTRST
AGCALL
SNACK
-
-
RXHLD
-
-000 –0-
40E
I2CCR3
EVSTRE
-
ENABLE
---- -0-0
40F
I2COARL
410
I2COARH
-
-
411
I2CFREQ
-
-
412
I2CDR
413
I2CCMD
414
I2CCCRL
415
I2CCCRH
416
I2CITR
417
I2CSR1
IICTXE
IICRXNE
-
STOPF
418
I2CSR2
-
-
-
TXABRT
419
I2CSR3
-
-
GCALL
ADFBEN
ADCMPO
P
ADCMPE
N
41A
ADCON3
41B
ADCMPH
41C
LEBCON
41D
MSCKCON
41E
SOSCPRL
41F
SOSCPRH
−
−
−
/TF
/PF
Z
HC
C
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
xxxx xxxx
程序计数器高 7 位锁存器
-
−000 0000
ADD[7:0]
-
-
0000 0000
-
-
ADD[9:8]
FREQ[5:0]
-
-
-
0000 0000
-
RESTART
STOP
MSTDIR
CCR[7:0]
-
DUTY
-
-
CCR[11:8]
-0-- 0000
ITBUFEN
ITEVEN
ITERREN
---- -000
ADD10F
-
ADDF
SBF
00-0 0-00
OVR
AF
ARLO
BERR
---0 0000
-
-
RDREQ
ACTIVE
RXHOLD
--0- -000
ADCMPO
LEBAD
T
-
ELVDS[1:0]
ADCMPH[7:0]
-
LEBCH[1:0]
-
-
-
EDGS
-
-
-
-
-
0000 0-00
0000 0000
BKS[2:0]
-
CKMAVG
000- 0000
CKCNTI
SOSCPR[7:0]
-
---- -000
0000 0000
-
LEBEN
---- --00
--00 0000
DR[7:0]
-
0001 1xxx
---- --01
1111 1111
SOSCPR[11:8]
---- 1111
420–46F
SRAM BANK8 (80Bytes)
xxxx xxxx
470–47F
SRAM BANK8 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
表 22-11 SFR, BANK8
Rev2.02
- 213 -
2021-10-29
Fremont Micro Devices
地址
名称
bit 7
FT62F08x
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
480
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
481
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
482
PCL
程序计数器低 8 位
0000 0000
483
STATUS
484
FSR0L
485
FSR0H
486
FSR1L
487
FSR1H
488
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
489
WREG
工作寄存器 W
xxxx xxxx
48A
PCLATH
−
48B
INTCON
GIE
48C
URDATAL
48D
URDATAH
48E
URIER
-
-
TCEN
-
IDELE
RXSE
48F
URLCR
-
BKREQ
-
EVEN
PEN
490
URLCREXT
-
-
-
-
491
URMCR
-
-
SIRLP
492
URLSR
ADDRF
IDLEF
493
URRAR
-
-
494
URDLL
DLL[7:0]
0000 0000
495
URDLH
DLH[7:0]
0000 0000
496
URABCR
-
-
-
-
ABRE
ABRM
ABRF
ABREN
---- 0000
497
URSYNCR
-
-
-
-
LBCL
URCPHA
URCPOL
SYNEN
---- 0000
498
URLINCR
-
-
-
LINEN
499
URSDCR0
-
NACK
CKOE
SDEN
49A
URSDCR1
GT[7:0]
0000 0000
49B
URSDCR2
PSC[7:0]
0000 0000
49C
URTC
−
−
−
/TF
/PF
Z
HC
C
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
xxxx xxxx
程序计数器高 7 位锁存器
PEIE
EEIE
LVDIE
OSFIE
−000 0000
EEIF
LVDIF
OSFIF
DATAL[7:0]
-
0000 0000
0000 0000
-
-
0001 1xxx
DATAH
---- ---0
URTE
URRXNE
--0- 0000
URSTOP
-
LTH
-0-0 00-0
-
-
RWU
EXTEN
---- --00
TXEN
RXEN
WAKE
HDSEL
SIREN
--00 0000
TXEF
BKF
FEF
PEF
OVERF
RXNEF
0000 0000
-
-
-
-
RAR[3:0]
---- 0000
BLTH[3:0]
-
-
-
---0 0000
-
-
-
-
TCF
-000 0000
---- ---1
4A0–4EF
SRAM BANK9 (80Bytes)
xxxx xxxx
4F0–4FF
SRAM BANK9 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
表 22-12 SFR, BANK9
Rev2.02
- 214 -
2021-10-29
Fremont Micro Devices
地址
名称
bit 7
FT62F08x
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
500
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
501
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
502
PCL
程序计数器低 8 位
0000 0000
503
STATUS
504
FSR0L
505
FSR0H
506
FSR1L
507
FSR1H
508
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
509
WREG
工作寄存器 W
xxxx xxxx
50A
PCLATH
−
50B
INTCON
GIE
−
−
−
/TF
/PF
Z
HC
C
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
xxxx xxxx
程序计数器高 7 位锁存器
PEIE
EEIE
LVDIE
OSFIE
0001 1xxx
EEIF
−000 0000
LVDIF
OSFIF
0000 0000
520–56F
SRAM BANK10 (80Bytes)
xxxx xxxx
570–57F
SRAM BANK10 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
表 22-13 SFR, BANK10
地址
名称
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
580
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
581
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
582
PCL
程序计数器低 8 位
0000 0000
583
STATUS
584
FSR0L
585
FSR0H
586
FSR1L
587
FSR1H
588
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
589
WREG
工作寄存器 W
xxxx xxxx
58A
PCLATH
−
58B
INTCON
GIE
−
−
−
/TF
/PF
Z
HC
C
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
xxxx xxxx
程序计数器高 7 位锁存器
PEIE
EEIE
LVDIE
OSFIE
0001 1xxx
EEIF
−000 0000
LVDIF
OSFIF
0000 0000
5A0–5EF
SRAM BANK11 (80Bytes)
xxxx xxxx
5F0–5FF
SRAM BANK11 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
表 22-14 SFR, BANK11
Rev2.02
- 215 -
2021-10-29
Fremont Micro Devices
地址
名称
FT62F08x
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
600
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
601
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
602
PCL
程序计数器低 8 位
0000 0000
603
STATUS
604
FSR0L
−
−
−
/TF
/PF
Z
HC
C
0001 1xxx
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
605
FSR0H
606
FSR1L
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
607
FSR1H
xxxx xxxx
608
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
609
WREG
工作寄存器 W
xxxx xxxx
60A
PCLATH
−
60B
INTCON
GIE
程序计数器高 7 位锁存器
PEIE
EEIE
LVDIE
OSFIE
−000 0000
EEIF
LVDIF
OSFIF
0000 0000
620–64F
SRAM BANK12 (48Bytes)
xxxx xxxx
670–67F
SRAM BANK12 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
表 22-15 SFR, BANK12
地址
名称
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
F80
INDF0
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
F81
INDF1
使用 FSR 的内容对数据存储器进行访问 (非物理寄存器)
xxxx xxxx
F82
PCL
程序计数器低 8 位
0000 0000
F83
STATUS
F84
FSR0L
−
−
−
/TF
/PF
Z
HC
C
0001 1xxx
xxxx xxxx
间接寻址指针寄存器 0 [15:0]
F85
FSR0H
F86
FSR1L
xxxx xxxx
xxxx xxxx
间接寻址指针寄存器 1 [15:0]
F87
FSR1H
F88
BSREG
存储区选择寄存器 (Bank Select Register)
xxxx xxxx
F89
WREG
工作寄存器 W
xxxx xxxx
F8A
PCLATH
−
程序计数器高 7 位锁存器
−000 0000
F8B
INTCON
GIE
F8E
CF0OUT1L
CF0OUT1L
0000 0000
F8F
CF0OUT1H
CF0OUT1H
0000 0000
F90
CF0OUT2L
CF0OUT2L
0000 0000
F91
CF0OUT2H
CF0OUT2H
0000 0000
F92
CF0OUT3L
CF0OUT3L
0000 0000
F93
CF0OUT3H
CF0OUT3H
0000 0000
Rev2.02
xxxx xxxx
PEIE
EEIE
LVDIE
- 216 -
OSFIE
EEIF
LVDIF
OSFIF
2021-10-29
0000 0000
Fremont Micro Devices
地址
名称
FT62F08x
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
复位值
F94
TKM016DL
TKM016DL
0000 0000
F95
TKM016DH
TKM016DH
0000 0000
F96
CF1OUT1L
CF1OUT1L
0000 0000
F97
CF1OUT1H
CF1OUT1H
0000 0000
F98
CF1OUT2L
CF1OUT2L
0000 0000
F99
CF1OUT2H
CF1OUT2H
0000 0000
F9A
CF1OUT3L
CF1OUT3L
0000 0000
F9B
CF1OUT3H
CF1OUT3H
0000 0000
F9C
TKM116DL
TKM116DL
0000 0000
F9D
TKM116DH
TKM116DH
0000 0000
F9E
CF2OUT1L
CF2OUT1L
0000 0000
F9F
CF2OUT1H
CF2OUT1H
0000 0000
FA0
CF2OUT2L
CF2OUT2L
0000 0000
FA1
CF2OUT2H
CF2OUT2H
0000 0000
FA2
CF2OUT3L
CF2OUT3L
0000 0000
FA3
CF2OUT3H
CF2OUT3H
0000 0000
FA4
TKM216DL
TKM216DL
0000 0000
FA5
TKM216DH
TKM216DH
0000 0000
FA6
CF3OUT1L
CF3OUT1L
0000 0000
FA7
CF3OUT1H
CF3OUT1H
0000 0000
FA8
CF3OUT2L
CF3OUT2L
0000 0000
FA9
CF3OUT2H
CF3OUT2H
0000 0000
FAA
CF3OUT3L
CF3OUT3L
0000 0000
FAB
CF3OUT3H
CF3OUT3H
0000 0000
FAC
TKM316DL
TKM316DL
0000 0000
FAD
TKM316DH
TKM316DH
0000 0000
SRAM BANK31 (16Bytes), 访问 BANK0’s 物理地址 0x70–0x7F
xxxx xxxx
FF0–FFF
表 22-16 SFR, BANK31
注:
1.
INDF 不是物理寄存器;
2.
灰色部分表示没有实现;
3.
不要对未实现的寄存器位进行写操作;
CPU 在进入中断时,硬件会自动把 W 寄存器,STATUS 寄存器 (TO 和 PD 状态标志位除外),BSR 寄
存器,FSR 寄存器以及 PCLATH 寄存器保存到处于 bank31 的影子寄存中,在退出中断时再把它们恢复
Rev2.02
- 217 -
2021-10-29
Fremont Micro Devices
FT62F08x
到对应的寄存器,节省软件的开销。
地址
寄存器名称
FE4h
STATUS_SHAD
FE5h
WREG_SHAD
FE6h
BSREG_SHAD
FE7h
PCLATH_SHAD
FE8h
FSR0L_SHAD
FE9h
FSR0H_SHAD
FEAh
FSR1L_SHAD
FEBh
FSR1H_SHAD
FECh
—
FEDh
STKPTR
FEEh
TOSL
FEFh
TOSH
22.3. 堆栈
FT62F08X 有一个 16 级深 x15 位宽的硬件堆栈。堆栈空间不属于程序存储空间或数据存储空间的一部
分。当执行 LCALL 或 CALLW 指令或由于中断导致程序跳转时,PC 的值会被压入堆栈。当执行 RET、
RETW 或 RETI 指令时,PC 值从堆栈弹出。PCLATH 的值不受压栈或出栈操作的影响。
连续压栈 17 次后将产生上溢,上溢标志位 STKOVF 上溢置 1。
同理,如果弹栈次数大于压栈次数,则产生下溢,标志位 STKUNF 将被置 1,无论是上溢还是下溢都将
导致一次系统复位,而且 16 级的堆栈将全部清 0。
访问堆栈
可通过 TOSH、TOSL 和 STKPTR 寄存器来使用堆栈。STKPTR 是堆栈指针的当前值。TOSH:TOSL 寄
存器对指向栈顶。这两个寄存器都可读写。由于 PC 的大小为 15 位,故 TOS 划分为 TOSH 和 TOSL 两
部分。要访问堆栈,可调整用来定位 TOSH:TOSL 的 STKPTR 值,然后对 TOSH:TOSL 执行读/写操作。
STKPTR 为 5 位,允许检测上溢和下溢。
在正常程序运行期间,LCALL、CALLW 和中断会使 STKPTR 值递增 1,而 RETW、RET 和 RETI 会使
STKPTR 值递减 1。任何时候都可以检查 STKPTR,以查看可用堆栈空间。STKPTR 总是指向堆栈中的
当前使用单元。因此,LCALL 或 CALLW 指令会使 STKPTR 值递增 1,然后写 PC,而返回操作则会卸
载 PC,然后使 STKPTR 值递减 1。
注意:在允许中断的情况下修改 STKPTR 时应谨慎。
Rev2.02
- 218 -
2021-10-29
Fremont Micro Devices
FT62F08x
0x0F
0x0E
0x0D
0x0C
0x0B
0x0A
0x09
0x08
0x07
0x06
0x05
0x04
初始堆栈配置:
复位后,堆栈为空。堆栈指针指向地址
0x1F,TOSH/L寄存返回0。
0x03
0x02
0x01
0x00
0x0000
TOSH:TOSL
STKPTR=0x1F
图 22-5 软件访问堆栈
上溢/下溢复位
在压满 16 级后再执行压栈操作,或者在弹出第 1 级后再执行出栈操作,PCON 寄存器中的相应位 (分别
为 STKOVF 或 STKUNF) 会置 1,从而使器件复位。
Rev2.02
- 219 -
2021-10-29
Fremont Micro Devices
FT62F08x
22.4. STATUS 寄存器
名称
状态
寄存器
地址
复位值
超时标志位
/ TO
1 = 上电后,执行了 CLRWDT 或 SLEEP 指令
STATUS[4]
RO−1
STATUS[3]
RO−1
0 = 发生 WDT 超时溢出
掉电标志位
/PD
1 = 上电复位后或执行了 CLRWDT 指令
0 = 执行了 SLEEP 指令
0 标志位:算术或逻辑运算的结果为零?
Z
1 = Yes
STATUS[2]
0 = No
HC
半 进 位 / 半 借 位 (ADDWR, ADDWI, SUBWI,
SUBWR):结果的第 4 低位向高位发生了进位或借
位?
Bank
首地址
+ 0x03
RW−x
STATUS[1]
RW−x
STATUS[0]
RW−x
1 = 进位,或未借位
0 = 未进位,或借位
进位 / 借位 (ADDWR, ADDWI, SUBWI, SUBWR):
结果的最高位发生了进位或借位?
C
1 = 进位,或未借位
0 = 未进位,或借位
表 22-17 STATUS 寄存器
注:
1.
同其他寄存器一样,STATUS 状态寄存器也可以作为任何指令的目标寄存器。但如果一条影响 Z、
HC 或 C 位的指令以 STATUS 作为目标寄存器,那么对这三位的写操作将被禁止,Z、HC 和 C 位
只受运算结果影响从而被置 1 或清 0。此时,当执行一条以 STATUS 作为目标寄存器的指令后,
STATUS 的内容可能与预期不一致。
2.
建议只使用 BCR、BSR、SWAPR 和 STR 指令来操作 STATUS 寄存器。
Rev2.02
- 220 -
2021-10-29
Fremont Micro Devices
FT62F08x
22.5. 间接寻址
INDFn 寄存器不是物理寄存器。
任何访问 INDFn 寄存器的指令,实际上都是访问由文件选择寄存器 (FSR)
指定的地址处的寄存器。如果 FSRn 地址指定了 2 个 INDFn 寄存器中的任何一个,执行读操作会返回
0,而写操作无法实现 (尽管状态位会受影响)。可通过 FSRnH 和 FSRnL 对来创建 FSRn 寄存器值。
FSR 寄存器形成的 16 位地址允许对 65536 个地址单元的空间进行寻址。
这些地址单元可划分为 3 个存储区:
⚫
传统数据存储器
⚫
线性数据存储器
⚫
闪存程序存储器
0x0000
传统数据存储区
0x0FFF
0x1000
Reserved
Not Implemented
0x1FFF
0x2000
FSR寻址
范围
线性数据存储区
0x29AF
0x29B0
0x7FFF
0x8000
Reserved
Not Implemented
PROM(FLASH)
0xFFFF
图 22-6 间接寻址
22.5.1. 传统数据存储器
传统数据存储器指的是从 FSR 地址 0x000 到 FSR 地址 0xFFF 的区域。此地址对应于所有 SFR、GPR
和公共寄存器的绝对地址。
间接寻址
直接寻址
4
BSR
0
6
Opcode
7
0
0
bank选择
单元选择
00000
00001
00010
...
FSRxH
0
0
7
FSRxL
0
0 0
bank选择
11111
单元选择
0x00
...
0x7F
BANK0 BANK1 BANK2
...
BANK31
图 22-7 传统数据存储器映射
Rev2.02
- 221 -
2021-10-29
Fremont Micro Devices
FT62F08x
22.5.2. 线性数据存储器
线性数据存储器指的是从 FSR 地址 0x2000 到 FSR 地址 0x29AF 的区域。该区域为虚拟区域,它指向
所有存储区中 80 字节的 GPR 存储区块。
未实现的存储区读为 0x00。使用线性数据存储器区域允许缓冲区大于 80 字节,因为当 FSR 增大到超过
一个存储区时,会直接转到下一个存储区的 GPR 存储器。线性数据存储器区域不包含 16 字节的公共存
储器。
7
0
FSRxH
0
0
7
FSRxL
0
1 0
单元选择
0x2000
Bank0
0x20 - 0x6F
Bank1
0xA0 - 0xEF
Bank2
0x120 - 0x16F
...
0x29AF
Bank30
0xF20 - 0xF6F
图 22-8 线性数据存储区映射
22.5.3. 闪存程序存储器
要使常数的访问更为容易,可将整个闪存程序存储器映射到 FSR 地址空间的高半部分。当 FSRnH 的
MSB 置 1 时,低 15 位就是可通过 INDF 进行访问的程序存储器的地址。只有每个存储单元的低 8 位可
通过 INDF 进行访问。通过 FSR/INDF 接口无法对闪存程序存储器执行写操作。所有通过 FSR/INDF 接
口对闪存程序存储器进行访问的指令都需要一个额外的指令周期才能完成。
7
FSRxH
0
7
FSRxL
0
1
单元选择
0x8000
0x0000
PROM
(低8位)
0xFFFF
0x7FFF
图 22-9 程序存储区映射
Rev2.02
- 222 -
2021-10-29
Fremont Micro Devices
FT62F08x
下图给出了 CPU 使用 FSRn 间接寻址 PROM 的时序,共占 2 个指令周期。
instr_clk
prom_rdat
xxxF INDFn
prom[FSRn]
2个指令周期
ireg
xxxF INDFn(LDR or MOVIW)
prom_addr
0x8000
sfr_addr
0x8000
sfr_rdat
next PC
prom[FSRn]
图 22-10 间接寻址读程序存储器
Rev2.02
- 223 -
2021-10-29
Fremont Micro Devices
FT62F08x
23. 指令集汇总 (INSTRUCTION SET)
汇编语法
功能
指令
运算
周期
状态位
NOP
空操作
None
1
NONE
SLEEP
进入 SLEEP 模式
0 → WDT; Stop OSC
1
/PF, /TF
RESET
软件复位
复位寄存器 PCON
1
NONE
CLRWDT
清看门狗 (喂狗)
0 → WDT
1
/PF, /TF
LJUMP N
无条件跳转
N → PC
2
NONE
BRA k
相对跳转 (地址范围有限制)
PC + 1 + k → PC
2
NONE
BRW
将寄存器 W 的值作为偏移量进行相对跳转
PC + w → PC
2
NONE
LCALL N
调用子程序
N → PC; PC + 1 → Stack
2
NONE
CALLW
调用地址由寄存器 W 指定的子程序
W → PC; PC + 1 → Stack
2
NONE
RETW
将立即数 I 送入 W 并返回
I → W, Stack → PC
2
NONE
RETI
从中断返回
Stack → PC; 1 → GIE
2
NONE
RET
从子程序返回
Stack → PC
2
NONE
BCR R, b
将寄存器 R 的 b 位清 0
0 → R(b)
1
NONE
BSR R, b
将寄存器 R 的 b 位置 1
1 → R(b)
1
NONE
CLRR R
将寄存器 R 清 0
0→R
1
Z
LDR R, d (MOVF)
将 R 存到 d
R→d
1
Z
COMR R, d
R 的反码
/R → d
1
Z
INCR R, d
R+1
R+1→d
1
Z
INCRSZ R, d
R + 1,结果为 0 则跳过
R+1→d
1
NONE
DECR R, d
R−1
R−1→d
1
Z
DECRSZ R, d
R − 1,结果为 0 则跳过
R−1→d
1
NONE
SWAPR R, d
将寄存器 R 的半字节交换
R(0-3)R(4−7) → d
1
NONE
RRR R, d
R 带进位循环右移
1
C
RLR R, d
R 带进位循环左移
1
C
LSRF f, d
F 逻辑右移
1
C, Z
LSLF f, d
F 逻辑左移
1
C, Z
ASRF f, d
算术右移
1
C, Z
BTSC R, b
位测试,结果为 0 则跳过
1
NONE
Rev2.02
R(0) → C; R(n) → R(n−1); C
→ R(7);
R(7) → C; R(n) → R(n+1); C
→ R(0);
0→ f(7); f(n+1) → R(n);
f(0)→ C;
f(7) → C; f(n) → R(n+1); 0→
R(0);
f(7) → R(7); f(n+1) →R(n);
f(0) →C;
Skip if R(b)=0
- 224 -
2021-10-29
Fremont Micro Devices
汇编语法
FT62F08x
功能
指令
运算
周期
状态位
BTSS R, b
位测试,结果为 1 则跳过
Skip if R(b)=1
1
NONE
CLRW
将工作寄存器 W 清 0
0→W
1
Z
STR R (MOVWF)
将 W 存到 R
W→R
1
NONE
ADDWR R, d
W 与 R 相加
W+R→d
1
C, HC, Z
ADDWFC R, d
W 与 R 相加(带进位)
W+R+C→d
1
C, HC, Z
SUBWR R, d
R 减 W
R−W→d
1
C, HC, Z
SUBWFB R, d
R 减 W (带借位)
R − W – (/B) → d
1
C, HC, Z
ANDWR R, d
W 与 R 相与
R&W→d
1
Z
IORWR R, d
W 与 R 相或
W|R→d
1
Z
XORWR R, d
W 与 R 异或
W^R→d
1
Z
LDWI I (MOVLW)
将立即数存到 W
I→W
1
NONE
ANDWI I
W 与立即数 I 相与
I&W→W
1
Z
IORWI I
W 与立即数 I 相或
I|W→W
1
Z
XORWI I
W 与立即数 I 异或
I^W→W
1
Z
ADDWI I
W 与立即数 I 相加
I+W→W
1
C, HC, Z
SUBWI I
立即数 I 减 W
I−W→W
1
C, HC, Z
RETW I
返回,将立即数 I 存到 W
Stack → PC; I → W
MOVLB k
将立即数 I 送到存储区选择寄存器 BSR
K → BSR
1
NONE
ADDFSR FSRn, k
立即数 k 与 FSRn 相加
FSRn + k → FSRn
1
NONE
MOVLP
将立即数 k 送到 PCLATH
k → PCLATH
1
NONE
MOVIW mm
将 FSRn 的内容送到 W
FSRn → W
1
Z
MOVWI mm
将 W 的内容送到 FSRn
W → FSRn
1
NONE
NONE
表 23-1 49 条指令集
字段
描述
R(f)
SFR/GPR 地址
W
工作寄存器
b
8-bit 寄存器 R / RAM 中的位地址
I/ Imm (k)
立即数字段、常数或标号
x
不关心,值可以为 0 或 1
d
目标寄存器选择
mm
预/后增/减模式选择 (++FSRn, --FSRn, FSRn++ , FSRn--, k[FSRn])
N
程序绝对地址
PC
程序计数器
Rev2.02
1 = 结果存放到寄存器 R / RAM
0 = 结果存放到 W
- 225 -
2021-10-29
Fremont Micro Devices
FT62F08x
字段
描述
/PF
掉电标志位
/TF
超时标志位
C
进位 / 借位
HC
半进位 / 半借位
Z
0 标志位
表 23-2 操作码字段
名称
状态
寄存器
地址
复位值
0 标志位:算术或逻辑运算的结果为零?
Z
1 = Yes
STATUS[2]
RW−x
0 = No
HC
半进位 / 半借位 (ADDWR, ADDWI, SUBWI, SUBWR):
结果的第 4 低位向高位发生了进位或借位?
1 = 进位,或未借位
STATUS[1]
0 = 未进位,或借位
进位 / 借位 (ADDWR, ADDWI, SUBWI, SUBWR):结果
的最高位发生了进位或借位?
C
1 = 进位,或未借位
Bank
首地址
+0x03
STATUS[0]
RW−x
RW−x
0 = 未进位,或借位
表 23-3
计算状态标志位
23.1. 读-修改-写 (RMW)指令
所有需要使用文件寄存器 (表 23-1 中助记符带 R 的指令) 的指令都会执行读-修改-写 (RMW)操作,即
先把目标寄存器内容取出,根据指令修改数据,再把数据写回到目标寄存器或 W (取决于 d 和具体指令)。
举例说明:
BSR
FSR0L, 0;
上述指令在 CPU 的执行过程如下:
1)把 FSR0L 读出到临时寄存器 T;
2)把寄存器 T 或上”0000 0001”形成新数据;
3)再把新数据写回 FSR0L;
Rev2.02
- 226 -
2021-10-29
Fremont Micro Devices
FT62F08x
23.1. 指令详细描述
ADDFSR
立即数与 FSRn 相加
ANDWI
立即数和 W 作逻辑与运算
[标号] ADDFSR FSRn, k
-32 ≤ k ≤ 31
n∈[0,1]
操作:
FSR(n)+k → FSR(n)
受影响的状态位:无
说明:
将有符号 6 位立即数 k 与
FSRnH:FSRnL 寄存器对的内
容相加。
FSRn 地址范围限制为 0000hFFFFh。传送地址超出该边界
时,FSR 会发生折回。
语法:
[标号] ANDWI k
操作数:
0 ≤ k ≤ 255
操作:
(W).AND.(k) → (W)
受影响的状态位:Z
说明:
将 W 寄存器的内容与 8 位立
即数 k 进行逻辑与运算。结果
存入 W 寄存器。
ADDWI
ANDWR
语法:
操作数:
立即数与 W 相加
W 和 f 作逻辑与运算
语法:
[标号] ADDWI k
操作数:
0 ≤ k ≤ 255
操作:
(W)+k → (W)
受影响的状态位:C、DC 和 Z
说明:
将 W 寄存器的内容与 8 位立即
数 k 相加,结果存入 W 寄存
器。
语法:
操作数:
ADDWR
ASRF
算术右移
语法:
操作数:
[标号] ASRF f {,d}
0≤f≤127
d∈[0,1]
操作:
(f[7])→目标寄存器[7]
W 与 f 相加
[标号]ADDWR f,d
0≤f≤127
d∈[0,1]
操作:
(W)+(f)→(目标寄存器)
受影响的状态位:C、DC 和 Z
说明:
将 W 寄存器的内容与寄存器 f
的内容相加。如果 d 为 0,结
果存入 W 寄存器。如果 d 为
1,结果存回寄存器 f。
语法:
操作数:
[标号] ANDWR f,d
0 ≤ f ≤ 127
d∈[0,1]
操作:
(W).AND.(f) →(目标寄存器)
受影响的状态位:Z
说明:
将 W 寄存器的内容与寄存器 f
的内容进行逻辑与运算。如果
d 为 0,结果存入 W 寄存器。
如果 d 为 1,结果存回寄存器
f。
(f[7:1])→目标寄存器[6:0],
(f[0])→C
受影响的状态位: C 和 Z
说明:
将寄存器 f 的内容连同进位标
志位一起右移 1 位。MSb 保持
不变。如果 d 为 0,结果存入
W 寄存器。如果 d 为 1,结果存
回寄存器 f。
寄存器f
Rev2.02
- 227 -
2021-10-29
C
Fremont Micro Devices
FT62F08x
BRW
ADDWFC
W 与 f 相加 (带进位)
将 W 寄存器的内容作为偏移量
进行相对跳转
[标号] ADDWFC f {,d}
0≤f≤127
d∈[0,1]
操作:
(W)+(f)+(C)→目标寄存器
受影响的状态位:C、DC 和 Z
说明:
将 W 的内容、进位标志位与数
据存储单元 f 的内容相加。如
果 d 为 0,结果存入 W。如果
d 为 1,结果存入数据存储单元
f。
语法:
[标号] BRW
操作数:
无
操作:
(PC)+(W)→PC
受影响的状态位:无
说明:
将 W 的内容 (无符号) 与 PC
相加。由于 PC 将递增 1 以取
出下一条指令,所以新地址将
为 PC+1+(W)。该指令为一条
双周期指令。
BCR
BSR
语法:
操作数:
将 f 寄存器中的某位清零
[标号] BCR f, b
0≤f≤127
0≤b≤7
操作:
0→(f[b])
受影响的状态位:无
说明:
将寄存器 f 中的位 b 清零。
语法:
操作数:
BRA
BTSC
语法:
操作数:
相对跳转
[标号] BRA 标号
[标号] BRA $+k
操作数:
-256≤标号 - PC+1≤255
-256≤k≤255
操作:
(PC)+1+k→PC
受影响的状态位:无
说明:
将有符号 9 位立即数 k 与 PC
相加。由于 PC 将递增 1 以便
取下一条指令,所以新地址将
为 PC+1+k。该指令为一条双
周期指令。该跳转的地址范围
存在限制。
语法:
Rev2.02
- 228 -
将 f 中的某位置 1
[标号] BSR f,b
0≤f≤127
0≤b≤7
操作:
1→(f[b])
受影响的状态位:无
说明:
将寄存器 f 的位 b 置 1。
测试 f 中某位,为 0 则跳过
[标号] BTSC f,b
0≤f≤127
0≤b≤7
操作:
如果(f[b])=0,则跳过
受影响的状态位:无
说明:
如果寄存器 f 的位 b 为 1,则
执行下一条指令。如果寄存器 f
的位 b 为 0,则丢弃下一条指
令,转而执行一条 NOP 指
令,从而使该指令成为双周期
指令。
语法:
操作数:
2021-10-29
Fremont Micro Devices
BTSS
FT62F08x
测试 f 中某位,为 1 则跳过
CLRW
[标号] BTSS f,b
0≤f≤127
0≤b≤7
操作:
如果(f[b])=1,则跳过
受影响的状态位:无
说明:
如果寄存器 f 的位 b 为 0,则
执行下一条指令。如果位 b 为
1,则丢弃下一条指令,转而执
行一条 NOP 指令,从而使该
指令成为双周期指令。
语法:
操作数:
操作:
LCALL
调用子程序
CALLW
[标号] LCALL k
0≤k≤2047
(PC)+1→TOS,
k→PC[10:0],
(PCLATH[4:3])→PC[12:11]
受影响的状态位:无
说明:
调用子程序。首先,将返回地
址 (PC+1) 压入堆栈。将 11
位立即数地址装入 PC 的[10:0]
位。将 PCLATH 的内容装入
PC 的高位。LCALL 是双周期
指令。
语法:
操作数:
操作:
CLRR
CLRWDT
语法:
操作数:
语法:
操作数:
操作:
将 f 清零
[标号] CLRR f
0≤f≤127
00h→(f)
1→Z
受影响的状态位:Z
说明:
寄存器 f 的内容被清零,并且
Z 位被置 1。
语法:
操作数:
操作:
Rev2.02
- 229 -
将 W 寄存器清零
[标号] CLRW
无
00h→(W)
1→Z
受影响的状态位:Z
说明:
W 寄存器被清零。全零位
(Z)被置 1。
调用地址由 W 寄存器指定的子
程序
[标号] CALLW
无
(PC)+1→TOS,
(W)→PC[7:0],
(PCLATH[6:0])→PC[14:8]
受影响的状态位:无
说明:
调用地址由 W 寄存器指定的子
程序。首先,将返回地址
(PC+1) 压入返回堆栈。然
后,W 的内容被装入
PC[7:0],将 PCLATH 的内容
装入 PC[14:8]。CALLW 是双
周期指令。
将看门狗定时器清零
[标号] CLRWDT
无
00h→WDT
0→WDT 预分频器
1→/TO
1→/PD
受影响的状态位:/TO 和/PD
说明:
CLRWDT 指令复位看门狗定时
器及其预分频器。
状态位/TO 和/PD 均被置 1。
语法:
操作数:
操作:
2021-10-29
Fremont Micro Devices
FT62F08x
COMR
f 取反
LJUMP
语法:
操作数:
[标号] COMR f,d
0≤f≤127
d∈[0,1]
语法:
操作数:
操作:
操作:
(f )→(目标寄存器)
—
受影响的状态位:Z
说明:
将寄存器 f 的内容取反。如果 d
为 0,结果存入 W 寄存器。如
果 d 为 1,结果存回寄存器 f。
DECR
f 递减 1
[标号] LJUMP k
0≤k≤2047
k→PC[10:0]
PCLATH[4:3]→PC[12:11]
受影响的状态位:无
说明:
LJUMP 是无条件跳转指令。将
11 位立即数值装入 PC 的
[10:0] 位。PC 的高位从
PCLATH[4:3]装入。LJUMP 是
双周期指令。
INCR
[标号] DECR f,d
0≤f≤127
d∈[0,1]
操作:
(f)-1→(目标寄存器)
受影响的状态位:Z
说明:
将寄存器 f 的内容递减 1。如果
d 为 0,结果存入 W 寄存器。
如果 d 为 1,结果存回寄存器
f。
语法:
操作数:
DECRSZ
INCRSZ
语法:
操作数:
f 递减 1,为 0 则跳过
[标号]DECRSZ f,d
0≤f≤127
d∈[0,1]
操作:
(f)-1→(目标寄存器);
结果=0 则跳过
受影响的状态位:无
说明:
将寄存器 f 的内容递减 1。如果
d 为 0,结果存入 W 寄存器。
如果 d 为 1,结果存回寄存器
f。如果结果为 1,则执行下一
条指令。如果结果为 0,则转
而执行一条 NOP 指令,从而
使该指令成为双周期指令。
语法:
操作数:
Rev2.02
- 230 -
无条件跳转
f 递增 1
[标号] INCR f,d
0≤f≤127
d∈[0,1]
操作:
(f)+1→(目标寄存器)
受影响的状态位:Z
说明:
将寄存器 f 的内容递增 1。如果
d 为 0,结果存入 W 寄存器。
如果 d 为 1,结果存回寄存器
f。
f 递增 1,为 0 则跳过
[标号] INCRSZ f,d
0≤f≤127
d∈[0,1]
操作:
(f)+1→(目标寄存器),
结果=0 则跳过
受影响的状态位:无
说明:
将寄存器 f 的内容递增 1。如果
d 为 0,结果存入 W 寄存器。
如果 d 为 1,结果存回寄存器
f。如果结果为 1,则执行下一
条指令。如果结果为 0,则转
而执行 NOP 指令,从而使该
指令成为双周期指令。
语法:
操作数:
2021-10-29
Fremont Micro Devices
IORWI
FT62F08x
立即数和 W 作逻辑或运算
LSRF
语法:
[标号] IORWI k
操作数:
0≤k≤255
操作:
(W).OR.k→(W)
受影响的状态位:Z
说明:
将 W 寄存器的内容与 8 位立即
数 k 进行逻辑或运算。结果存
入 W 寄存器。
IORWR
W 和 f 作逻辑或运算
[标号] IORWR f,d
0≤f≤127
d∈[0,1]
操作:
(W).OR.(f)→(目标寄存器)
受影响的状态位:Z
说明:
将 W 寄存器的内容与寄存器 f
的内容进行逻辑或运算。如果
d 为 0,结果存入 W 寄存器。
如果 d 为 1,结果存回寄存器
f。
语法:
操作数:
[标号] LSRF f {,d}
0≤f≤127
d∈[0,1]
操作:
0→目标寄存器[7]
(f[7:1])→目标寄存器[6:0]
(f[0])→C
受影响的状态位:C 和 Z
说明:
将寄存器 f 的内容连同进位标
志位一起右移 1 位。0 移入
MSb。如果 d 为 0,结果存入
W。如果 d 为 1,结果存回寄
存器 f。
语法:
操作数:
0
LSLF
逻辑左移
LDR
语法:
操作数:
[标号] LSLF f {,d}
0≤f≤127
d∈[0,1]
(f[7])→C
语法:
操作数:
操作:
(f[6:0])→目标寄存器[7:1]
0→目标寄存器[0]
受影响的状态位:C 和 Z
说明:
将寄存器 f 的内容连同进位标
志位一起左移 1 位。0 移入
LSb。如果 d 为 0,结果存入
W。如果 d 为 1,结果存回寄
存器 f。
C
寄存器f
0
- 231 -
寄存器f
C
传送 f
[标号] LDR f,d
0≤f≤127
d∈[0,1]
操作:
(f)→(目标寄存器)
受影响的状态位:Z
说明:
根据 d 的状态,将寄存器 f 的
内容传送到目标寄存器。如果
d=0,目标寄存器为 W 寄存
器。如果 d=1,目标寄存器为
文件寄存器 f。由于状态标志位
Z 要受影响,可用 d=1 检测文
件寄存器。
指令字数:
1
指令周期数:
1
示例:
Rev2.02
逻辑右移
LDR
FSR, 0
执行指令后
W=FSR 寄存器的值
Z=1
2021-10-29
Fremont Micro Devices
MOVIW
FT62F08x
将 INDFn 的内容传送到 W
[标号] MOVIW ++FSRn
[标号] MOVIW --FSRn
[标号] MOVIW FSRn++
[标号] MOVIW FSRn-[标号] MOVIW k[FSRn]
操作数:
n∈[0,1]
mm∈[00,01,10,11]
-32≤k≤31
操作:
INDFn→W
有效地址通过以下方式确定:
•FSR+1 (预递增 1)
•FSR-1 (预递减 1)
•FSR+k (相对偏移)
执行传送指令后,FSR 值为以
下任一项:
•FSR+1 (所有值都加 1)
•FSR-1 (所有值都减 1)
•不变
受影响的状态位:Z
语法:
说明:
MOVWI
将 W 的内容传送到 INDFn
[标号] MOVWI ++FSRn
[标号] MOVWI --FSRn
[标号] MOVWI FSRn++
[标号] MOVWI FSRn-[标号] MOVWI k[FSRn]
操作数:
n∈[0,1]
mm∈[00,01,10,11]
-32≤k≤31
操作:
W→INDFn
有效的地址由以下项决定:
•FSR+1 (预递增 1)
•FSR-1 (预递减 1)
•FSR+k (相对偏移)
执行传送指令后,FSR 值为以
下任一项:
•FSR+1 (所有值都加 1)
•FSR-1 (所有值都减 1)
不变
受影响的状态位:无
语法:
模式
语法
mm
模式
语法
mm
预递增
++FSRn
00
预递增
++FSRn
00
与递减
--FSRn
01
与递减
--FSRn
01
后递增
FSRn++
10
后递增
FSRn++
10
后递减
FSRn--
11
后递减
FSRn--
11
该指令用于在 W 寄存器和任一
间接寄存器 (INDFn) 之间传送
数据。执行该传送指令之前/之
后,将通过预/后增/减来更新指
针 (FSRn)。
说明:
该指令用于在 W 寄存器和任一
个间接寄存器 (INDFn) 之间传
送数据。执行该传送指令之前/
之后,将通过预/后增/减来更新
指针 (FSRn)。
注:INDFn 寄存器不是物理寄存器。访问 INDFn
寄存器的指令实际上访问的是由 FSRn 指定的地
址处的寄存器。
注:INDFn 寄存器不是物理寄存器。访问 INDFn
寄存器的指令实际上访问的是由 FSRn 指定的地
址处的寄存器。
FSRn 地址范围限制为 0000h-FFFFh。地址递增/
递减到超出边界时,将导致它发生折回。
FSRn 地址范围限制为 0000h-FFFFh。地址递增/
递减到超出边界时,将导致它发生折回。
对于 FSRn 的递增/递减操作不会影响任
何状态位。
Rev2.02
- 232 -
2021-10-29
Fremont Micro Devices
MOVLB
FT62F08x
将立即数传送到 BSR
STR
语法:
[标号] MOVLB k
操作数:
0≤k≤15
操作:
k→BSR
受影响的状态位:无
说明:
将 5 位立即数 k 装入存储区选
择寄存器 (BSR)。
将 W 的内容传送到 f
语法:
[标号] MOVLP k
操作数:
0≤k≤127
操作:
k→PCLATH
受影响的状态位:无
说明:
将 7 位立即数 k 装入 PCLATH
寄存器。
语法:
[标号] STR f
操作数:
0≤f≤127
操作:
(W) →(f)
受影响的状态位:无
说明:
将 W 寄存器的数据传送到寄存
器 f。
指令字数:
1
指令周期数:
1
示例:
STR OPTION
执行指令前
OPTION = 0xFF
W = 0x4F
执行指令后
OPTION = 0x4F
W = 0x4F
LDWI
RESET
MOVLP
将立即数传送到 PCLATH
将立即数传送到 W
[标号] RESET
无
执行器件复位。复位 PCON
寄存器的 nRI 标志。
受影响的状态位:无
说明:
此指令可实现用软件执行硬件
复位。
语法:
[标号] MOVLW k
操作数:
0≤k≤255
操作:
k→(W)
受影响的状态位:无
说明:
将 8 位立即数 k 装入 W 寄存
器。其余无关位均汇编为 0。
指令字数:
1
指令周期数:
1
示例:
LDWI 0x5A
执行指令后
W = 0x5A
语法:
操作数:
操作:
NOP
RET
空操作
从子程序返回
语法:
[标号] RET
操作数:
无
操作:
TOS→PC
受影响的状态位:无
说明:
从子程序返回。执行出栈操
作,将栈顶 (TOS) 内容装入
程序计数器。这是一条双周期
指令。
语法:
[标号] NOP
操作数:
无
操作:
空操作
受影响的状态位:无
说明:
不执行任何操作。
指令字数:
1
指令周期数:
1
示例:
NOP
Rev2.02
软件复位
- 233 -
2021-10-29
Fremont Micro Devices
RETI
FT62F08x
RETW
从中断返回
[标号] RETI
无
TOS→PC,
1→GIE
受影响的状态位:无
说明:
从中断返回。执行出栈操作,
将栈顶 (Top-of-Stack,TOS)
的内容装入 PC。通过将全局
中断允许位 GIE (INTCON[7])
置 1,来允许中断。这是一条
双周期指令。
指令字数:
1
指令周期数:
2
示例:
RETI
中断后
PC = TOS
GIE = 1
语法:
操作数:
操作:
RLR
对 f 执行带进位的循环左移
[标号] RLR f,d
0≤f≤127
d∈[0,1]
操作:
参见如下说明
受影响的状态位:C
说明:
将寄存器 f 的内容连同进位标
志位一起循环左移 1 位。如果
d 为 0,结果存入 W 寄存器。
如果 d 为 1,结果存回寄存器
f。
指令字数:
1
指令周期数:
1
示例:
RLF REG1,0
执行指令前:
REG1 = 1110 0110
C=0
执行指令后:
REG1 = 1110 0110
W = 1100 1100
C=1
语法:
操作数:
C
寄存器f
返回并将立即数送入 W
[标号] RETW k
0≤k≤255
k→(W);
TOS→PC
受影响的状态位:无
说明:
将 8 位立即数 k 装入 W 寄存
器。将栈顶内容 (返回地址)
装入程序计数器。这是一条双
周期指令。
指令字数:
1
指令周期数:
2
示例:
LCALL TABLE;W contains
;table offset value
• ;W now has table value
•
TABLE
•
ADDWR PC ;W = offset
RETW
k1 ;Begin table
RETW
k2 ;
•
•
•
RETW
kn ;End of table
执行指令前
W = 0x07
执行指令后
W = k8 的值
语法:
操作数:
操作:
RRR
对 f 执行带进位的循环右移
[标号] RRR f,d
0≤f≤127
d∈[0,1]
操作:
参见如下说明
受影响的状态位:C
说明:
将寄存器 f 的内容连同进位标
志位一起循环右移 1 位。如果
d 为 0,结果存入 W 寄存器。
如果 d 为 1,结果存回寄存器 f
语法:
操作数:
C
Rev2.02
- 234 -
寄存器f
2021-10-29
Fremont Micro Devices
SLEEP
FT62F08x
SWAPR
进入休眠模式
[标号] SLEEP
无
00h→WDT,
0→WDT 预分频器,
1→/TO,
0→/PD
受影响的状态位:/TO 和/PD
说明:
掉电状态位/PD 被清零。超时
状态位/TO 被置 1。看门狗定
时器及其预分频器被清零。振
荡器停振,处理器进入休眠模
式。
语法:
操作数:
SUBWI
SUBWR
语法:
操作数:
操作:
从立即数中减去 W
语法:
[标号] SUBWI k
操作数:
0≤k≤255
操作:
k-(W)→(W)
受影响的状态位:C、DC 和 Z
说明:
用 8 位立即数 k 减去 W 寄存器
的内容 (通过二进制补码方式
进行运算) 。结果存入 W 寄存
器。
SUBWFB
[标号] SWAPR f,d
0≤f≤127
d∈[0,1]
操作:
(f[3:0])→(目标寄存器[7:4]),
(f[7:4])→(目标寄存器[3:0])
受影响的状态位:无
说明:
寄存器 f 的高半字节和低半字
节相互交换。如果 d 为 0,结
果存入 W 寄存器。如果 d 为
1,结果存回寄存器 f。
f 减去 W
[标号] SUBWR f,d
0≤f≤127
d∈[0,1]
操作:
(f)-(W)→(目标寄存器)
受影响的状态位:C、DC 和 Z
说明:
用寄存器 f 的内容减去 W 寄存
器的内容 (通过二进制补码方
式进行运算)。如果 d 为 0,结
果存入 W 寄存器。如果 d 为
1,结果存回寄存器 f。
语法:
操作数:
C= 0
W>k
C= 1
W≤k
DC=0
W[3:0] > k[3:0]
C= 0
W>f
DC=1
W[3:0] ≤ k[3:0]
C= 1
W≤f
DC=0
W[3:0] > f[3:0]
DC=1
W[3:0] ≤ f[3:0]
f 减去 W (带借位)
XORWR
SUBWFB f {,d}
0≤f≤127
d∈[0,1]
操作:
(f)–(W)–(/B)→目标寄存器
受影响的状态位:C、DC 和 Z
说明:
用 f 寄存器的内容减去 W 的内
容和借位标志 (进位) (通过二
进制补码方式进行运算)。如果
d 为 0,结果存入 W。如果 d
为 1,结果存回寄存器 f。
语法:
操作数:
Rev2.02
将 f 中的两个半字节交换
- 235 -
W 和 f 作逻辑异或运算
[标号] XORWR f,d
0≤f≤127
d∈[0,1]
操作:
(W).XOR.(f)→(目标寄存器)
受影响的状态位:Z
说明:
将 W 寄存器的内容与寄存器 f
的内容进行逻辑异或运算。如
果 d 为 0,结果存入 W 寄存
器。如果 d 为 1,结果存回寄
存器 f。
语法:
操作数:
2021-10-29
Fremont Micro Devices
XORWI
FT62F08x
立即数和 W 作逻辑异或运算
语法:
[标号] XORWI k
操作数:
0≤k≤255
操作:
(W).XOR.k→(W)
受影响的状态位:Z
说明:
将 W 寄存器的内容与 8 位立即
数 k 进行逻辑异或运算。结果
存入 W 寄存器。
Rev2.02
- 236 -
2021-10-29
Fremont Micro Devices
FT62F08x
24. 芯片的电气特性
24.1. 极限参数
工作温度等级 3…………..…..……………………………………..….……….………. –40 – + 85°C
工作温度等级 2………………………………………..……………...……….………... –40 – +105°C
工作温度等级 1…………….……………………………....………….….…...………... –40 – +125°C
存储温度…………………………………………..……………………..…..……….….. –40 – +125°C
电源电压……………………...……………….……………………...………… VSS-0.3V – VSS+6.0V
端口输入电压.…………………………...………..……………..……..……… VSS-0.3V – VDD+0.3V
注:
1.
超过上述“极限参数”所规定的范围,可能会对芯片造成永久性损坏。
2.
除非另作说明,所有特性值的测试条件为 25°C, VDD =1.9 – 5.5V。
3.
本节所示的值和范围基于特性值,并非最终出货的标准值。除非另作说明,生产测试温度为
25°C。
24.2. 工作特性
参数
Fsys (系统时钟频率)
最小值
典型值
最大值
单位
条件/备注
1T/ 2T
—
—
8
MHz
-40~85°C , VDD = 1.9~5.5V
/4T
—
—
16
MHz
-40~85°C , VDD = 2.7~5.5V
1T
—
62.5
—
ns
2T
—
125
—
ns
4T
—
250
—
ns
1T
—
30.5
—
μs
2T
—
61
—
μs
4T
—
122
—
μs
—
4.2
—
ms
25°C, PWRT disable
2000
—
—
ns
25°C
—
1
—
ms
指令周期 (Tins)
上电复位保持时间 (TDRH)
外部复位脉冲宽度 (TMCLRB)
WDT 周期 (TWDT)
Rev2.02
- 237 -
系统时钟 HIRC
系统时钟 LIRC
无预分频,
WDTPS[3:0]=0000
2021-10-29
Fremont Micro Devices
FT62F08x
24.3. POR, LVR, LVD
上电复位 (POR)
电气参数
最小值
典型值
最大值
单位
条件/备注
IPOR 工作电流
—
140
—
nA
25°C, VDD = 3.3V
VPOR
—
1.65
—
V
25°C
最小值
典型值
最大值
单位
—
15.18
—
μA
25°C, VDD = 3.3V
1.94
2.0
2.06
2.13
2.2
2.27
2.42
2.5
2.58
2.72
2.8
2.88
V
25°C
3.01
3.1
3.19
3.49
3.6
3.71
3.98
4.1
4.22
94
—
125
μs
25°C, VDD = 2.5V
最小值
典型值
最大值
单位
—
21.54
—
μA
25°C, VDD = 3.3V
1.94
2.0
2.06
2.33
2.4
2.47
2.72
2.8
2.88
2.91
3.0
3.09
V
25°C
3.49
3.6
3.71
3.88
4.0
4.12
94
—
125
μs
25°C, VDD = 2.5V
低电压复位 (LVR)
电气参数
ILVR 工作电流
VLVR,LVR 阈值
LVR delay
条件/备注
低电压检测 (LVD)
电气参数
ILVD 工作电流
VLVD,LVD 阈值
LVD delay
Rev2.02
- 238 -
条件/备注
2021-10-29
Fremont Micro Devices
FT62F08x
24.4. I/O 端口电路
电气参数
最小值
典型值
最大值
单位
VIL
0
—
0.3*VDD
V
VIH
0.7*VDD
—
VDD
V
-1
—
1
μA
VDD = 5V
L0
—
-2
—
L1
—
-4
—
L2
—
-14
—
mA
25°C, VDD = 5V, VOH = 4.5V
L3
—
-26
—
L0
—
53
—
L1
—
62
—
mA
25°C, VDD = 5V, VOL= 0.5V
上拉电阻
—
21
—
kΩ
下拉电阻
—
21
—
kΩ
漏电流
源电流(source)
灌电流(sink)
条件/备注
24.5. 工作电流 (IDD)
电气参数
Sysclk
典型值@VDD
2.0V
3.0V
5.5V
16MHz
—
4.143
4.402
8MHz
1.897
2.648
2.808
4MHz
1.293
1.887
1.981
2MHz
0.871
1.130
1.183
1MHz
0.561
0.727
0.755
32kHz
0.036
0.051
0.054
16MHz
2.170
3.000
3.181
8MHz
1.435
2.074
2.169
4MHz
0.947
1.224
1.284
2MHz
0.596
0.778
0.810
1MHz
0.420
0.560
0.581
32kHz
0.032
0.046
0.048
休眠模式 (Sleep, WDT OFF, LVR OFF), ISB
—
0.087
0.136
0.240
休眠模式 (Sleep, WDT ON, LVR OFF)
—
1.294
2.420
2.854
休眠模式 (Sleep, WDT OFF, LVR ON)
—
11.257
15.318
20.777
休眠模式 (Sleep, WDT ON, LVR ON)
—
12.457
17.551
23.240
休眠模式 (Sleep, WDT OFF, LVR OFF, LVD ON)
—
17.793
21.672
27.133
正常模式(1T),IDD
正常模式(2T),IDD
注:
1.
睡眠电流的测试条件为 I/O 处于输入模式并外部下拉到 0;
Rev2.02
- 239 -
2021-10-29
单位
mA
mA
μA
Fremont Micro Devices
FT62F08x
24.6. 内部振荡器
内部低频振荡器 (LIRC)
测试条件为 LIRC 选择 32 kHz (LFMOD = 0)
电气参数
最小值
典型值
最大值
单位
条件/备注
振荡频率
30.4
32
33.6
kHz
25°C, VDD = 2.5V
随温度变化范围
-2.0%
—
2.0%
—
-40 ~ 85°C, VDD = 2.5V
随电源电压变化范围
-4.5%
—
1.0%
—
25°C, VDD = 1.9 ~ 5.5V
ILIRC 工作电流
—
1.3
—
μA
25°C, VDD = 3.0V
启动时间
—
4.6
—
μs
25°C, VDD = 3.0V
电气参数
最小值
典型值
最大值
单位
条件/备注
校准范围
15.84
16
16.16
MHz
25°C, VDD = 2.5V
随温度变化范围
-2.0%
—
2.0%
—
-40 ~ 85°C, VDD = 2.5V
随电源电压变化范围
-0.5%
—
0.5%
—
25°C, VDD = 1.9 ~ 5.5V
IHIRC 工作电流
—
40
—
μA
25°C, VDD = 3.0V
启动时间
—
2.5
—
μs
25°C, VDD = 3.0V
内部高频振荡器(HIRC)
Rev2.02
- 240 -
2021-10-29
Fremont Micro Devices
FT62F08x
24.7. ADC(12bit)和 ADC VREF
ADC (12bit)
电气参数
ADC 工作电压 VDD
最小值
典型值
最大值
单位
2.7
—
5.5
V
—
630
—
μA
条件/备注
25°C, VREFP = VDD = 2.7V,
ADC 转换时钟频率为
250kHz
25°C, VREFP = VDD = 3.0V,
ADC 工作电流 IVDD
—
750
—
μA
ADC 转换时钟频率为
250kHz
25°C, VREFP = VDD = 5.5V,
—
1350
—
μA
ADC 转换时钟频率为
250kHz
模拟输入电压 VAIN
VREFN
—
VREFP
V
外部参考电压 VREF
—
—
VDD
V
分辨率
—
—
12
位
积分误差 EIL
—
±2
—
LSB
25°C, VREFP = VDD = 5.0V,
VREFN = GND, ADC 转换
微分误差 EDL
偏移误差 EOFF
增益误差 EGN
—
±2
—
LSB
时钟频率为 250kHz
—
±1
—
LSB
25°C, VREFP = VDD = 5.0V,
VREFN = GND, ADC 转换
—
±1.5
—
LSB
转换时钟周期 TAD
—
1
—
μs
转换时钟数
—
15
—
TAD
稳定时间 (TST)
—
15
—
μs
采样时间 (TACQ)
—
1.5
—
TAD
建议的模拟电压源阻抗(ZAI)
—
—
10
kΩ
时钟频率为 250kHz
VREFP > 3.0V, VDD > 3.0V
ADC VREF
电气参数
最小值
典型值
最大值
单位
0.492
0.5
0.508
V
25°C, VDD = 5V
1.992
2.0
2.008
V
25°C, VDD = 5V
2.988
3.0
3.012
V
25°C, VDD = 5V
内置参考电压 0.5V
—
400
—
μs
25°C, VDD = 5V
稳定时间 TVRINT
—
600
—
μs
25°C, VDD = 5V, 1μF
内置参考电压 2.0V
—
450
—
μs
25°C, VDD = 5V
稳定时间 TVRINT
—
800
—
μs
25°C, VDD = 5V, 1μF
内置参考电压 3.0V
—
450
—
μs
25°C, VDD = 5V
稳定时间 TVRINT
—
1200
—
μs
25°C, VDD = 5V, 1μF
内置参考电压 ADCVref
Rev2.02
- 241 -
条件/备注
2021-10-29
Fremont Micro Devices
FT62F08x
24.8. Program 和 Data EEPROM
参数
VDD-READ
最小值
典型值
最大值
单位
VPOR
−
5.5
V
-40 – 85 / 105°C
Program EE 写电压
2.5
−
5.5
Data EE 写电压
1.9
−
5.5
V
-40 – 85 / 105°C
100 k
−
−
25 °C
40 k
−
−
85 °C
10 k
−
−
1,000 k
−
−
400 k
−
−
85 °C
100 k
−
−
105 °C
20
−
−
1k 次擦写后
@ 85 °C
10
−
−
20
−
−
10
−
−
−
4.0
−
−
2.0
−
−
−
300
Program / Data EE 读电压
VDD-WRITE
Program EE 擦/写次数
NEND
Data EE 擦/写次数
cycle
Program EE 数据保持
TRET
年
Data EE 数据保持
TWRITE
Data EE 写时间
IPROG
Data EE 编程电流
ms
μA
条件
105 °C
25 °C
1k 次擦写后
@ 105 °C
10k 次擦写后
@ 85 °C
10k 次擦写后
@ 105 °C
使能自动擦除
关闭自动擦除
25 °C, VDD = 3 V
24.9. EMC 特性
ESD
参数
最小值
典型值
最大值
单位
条件
VESD
HBM
8000
−
−
V
MIL-STD-883H Method 3015.8
VESD
MM
400
−
−
V
JESD22-A115
最小值
典型值
最大值
单位
200
−
−
mA
最小值
典型值
最大值
单位
条件
5.5
−
−
kV
VDD (5V) 与 GND 间的电容:1μF
Latch-up
参数
LU, static latch-up
条件
EIA/JESD 78
EFT
参数
VEFT
Rev2.02
- 242 -
2021-10-29
Fremont Micro Devices
24.10.
FT62F08x
特性图
注: 特性图基于特性值,仅供参考,未经生产测试。
17.0
FOSC (MHz)
16.5
16.0
15.5
15.0
1.0
2.0
3.0
4.0
5.0
6.0
5.0
6.0
VDD (V)
图 24-1 HIRC vs.VDD (TA = 25°C)
34
33
SOSC (kHz)
32
31
30
29
28
1.0
2.0
3.0
4.0
VDD (V)
图 24-2 LIRC vs. VDD (TA = 25°C)
Rev2.02
- 243 -
2021-10-29
Fremont Micro Devices
FT62F08x
5
IOP (mA)
4
3
5.5V
2
3.3V
1
0
0
4
8
12
16
20
FOSC (MHz)
图 24-3 IDD vs Frequency ( 1T, TA=25°C )
5
IOP (mA)
4
3
5.5V
2
3.3V
1
0
0
4
8
12
16
20
FOSC (MHz)
图 24-4 IDD vs Freq ( 2T, TA=25°C )
Rev2.02
- 244 -
2021-10-29
Fremont Micro Devices
FT62F08x
Sleep Current (μA)
2.0
1.5
1.0
5.5V
3.3V
2.0V
0.5
0.0
-40
-20
0
20
40
60
80
100
Temperature (℃)
图 24-5 Sleep Current (ISB) vs. Temperature
0
IOH (mA)
-20
-40
85℃
25℃
-60
-40℃
-80
-100
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5.0
VOH (V)
图 24-6 IOH vs VOH @L0 = -2mA , VDD = 5V
Rev2.02
- 245 -
2021-10-29
Fremont Micro Devices
FT62F08x
0
IOH (mA)
-20
-40
85℃
25℃
-60
-40℃
-80
-100
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5.0
VOH (V)
图 24-7 IOH vs VOH @L1 = -4mA , VDD = 5V
0
IOH (mA)
-20
-40
85℃
25℃
-60
-40℃
-80
-100
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5.0
VOH (V)
图 24-8 IOH vs VOH @L2 = -14mA , VDD = 5V
Rev2.02
- 246 -
2021-10-29
Fremont Micro Devices
FT62F08x
0
IOH (mA)
-20
-40
85℃
25℃
-60
-40℃
-80
-100
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5.0
VOH (V)
图 24-9 IOH vs VOH @L3 = -26mA , VDD = 5V
100
IOL (mA)
80
60
-40℃
25℃
40
85℃
20
0
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
VOL (V)
图 24-10 IOl vs VOl @L0 = 53mA , VDD = 5V
Rev2.02
- 247 -
2021-10-29
Fremont Micro Devices
FT62F08x
100
IOL (mA)
80
60
-40℃
25℃
40
85℃
20
0
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
VOL (V)
图 24-11
Rev2.02
IOL vs VOL @L01 = 62mA , VDD = 5V
- 248 -
2021-10-29
Fremont Micro Devices
FT62F08x
25. 芯片封装信息
本芯片的封装形式有 SOP16、TSSOP20、SOP20、SOP24、TSSOP24、SOP28、LQFP32 和 QFN32
封装。具体封装尺寸信息如下:
SOP16
Symbol
Dimensions In Millimeters
Dimensions In Inches
Min
Max
Min
Max
A
-
1.700
-
0.066
A1
0.100
0.200
0.004
0.008
A2
1.420
1.480
0.056
0.058
A3
0.620
0.680
0.024
0.027
D
9.960
10.160
0.392
0.396
E
5.900
6.100
0.232
0.238
E1
3.870
3.930
0.152
0.153
b
0.370
0.430
0.015
0.017
e
1.240
1.300
0.048
0.051
L
0.500
0.700
0.020
0.027
L1
1.050(REF)
0.041(REF)
L2
0.250(BSC)
0.010(BSC)
Rev2.02
- 249 -
2021-10-29
Fremont Micro Devices
FT62F08x
TSSOP20
Symbol
Dimensions In Millimeters
Dimensions In Inches
Min
Max
Min
Max
A
-
1.20
-
0.047
A1
0.05
0.15
0.002
0.006
A2
0.80
1.05
0.031
0.041
A3
0.39
0.49
0.015
0.019
b
0.20
0.28
0.008
0.011
b1
0.19
0.25
0.007
0.010
c
0.13
0.17
0.005
0.007
c1
0.12
0.14
0.005
0.006
D
6.40
6.60
0.252
0.260
E1
4.30
4.50
0.169
0.177
E
6.20
6.60
0.244
0.259
e
L
0.65(BSC)
0.45
L1
θ
Rev2.02
0.026(BSC)
0.75
0.018
1.00REF
0
0.030
0.039REF
8°
- 250 -
0
8°
2021-10-29
Fremont Micro Devices
FT62F08x
SOP20
Symbol
Dimensions In Millimeters
Dimensions In Inches
Min
Max
Min
Max
A
2.350
2.650
0.093
0.104
A1
0.100
0.300
0.004
0.012
A2
2.100
2.500
0.083
0.098
b
0.330
0.510
0.013
0.020
c
0.204
0.330
0.008
0.013
D
12.520
13.000
0.493
0.512
E
7.400
7.600
0.291
0.299
E1
10.210
10.610
0.402
0.418
e
1.270 (BSC)
0.050 (BSC)
L
0.400
1.270
0.016
0.050
θ
0°
8°
0°
8°
Rev2.02
- 251 -
2021-10-29
Fremont Micro Devices
FT62F08x
SOP24
Symbol
Dimensions In
Millimeters
Min
Nom
Max
A
2.36
2.54
2.64
A1
0.10
0.20
0.30
A2
2.26
2.30
2.35
A3
0.97
1.02
1.07
b
0.39
—
0.47
b1
0.38
0.41
0.44
c
0.25
—
0.29
c1
0.24
0.25
0.26
D
15.30
15.40
15.50
E
10.10
10.30
10.50
E1
7.40
7.50
7.60
e
L
1.27BSC
0.70
—
L1
1.00
1.40REF
h
0.25
—
0.75
θ
0
—
8°
Rev2.02
- 252 -
2021-10-29
Fremont Micro Devices
FT62F08x
TSSOP24
Symbol
Dimensions In
Millimeters
Min
Nom
Max
A
—
—
1.20
A1
0.05
—
0.15
A2
0.80
1.00
1.05
A3
0.39
0.44
0.49
b
0.20
—
0.29
b1
0.19
0.22
0.25
c
0.13
—
0.18
c1
0.12
0.13
0.14
D
7.70
7.80
7.90
E
6.20
6.40
6.60
E1
4.30
4.40
4.50
e
L
0.65BSC
0.45
0.60
L1
θ
Rev2.02
0.75
1.00BSC
0
—
- 253 -
8°
2021-10-29
Fremont Micro Devices
FT62F08x
SOP28
Symbol
Dimensions In Millimeters
Dimensions In Inches
Min
Max
Min
Max
A
-
2.65
-
0.104
A1
0.10
0.30
0.004
0.012
A2
2.25
2.35
0.089
0.093
A3
0.97
1.07
0.038
0.042
b
0.39
0.47
0.015
0.019
b1
0.38
0.44
0.015
0.017
c
0.25
0.29
0.010
0.011
c1
0.24
0.26
0.009
0.010
D
17.90
18.10
0.704
0.712
E
10.10
10.50
0.397
0.413
E1
7.40
7.60
0.290
0.299
e
L
1.27(BSC)
0.70
L1
θ
Rev2.02
0.05(BSC)
1.00
0.027
1.40REF
0
0.039
0.055REF
8°
- 254 -
0
8°
2021-10-29
Fremont Micro Devices
FT62F08x
LQFP32
Symbol
Dimensions In Millimeters
Dimensions In Inches
Min
Max
Min
Max
A
-
1.60
-
0.063
A1
0.05
0.15
0.002
0.006
A2
1.35
1.45
0.053
0.057
A3
0.59
0.69
0.023
0.027
b
0.33
0.41
0.013
0.016
b1
0.32
0.38
0.013
0.015
c
0.13
0.17
0.005
0.006
c1
0.12
0.14
0.005
0.006
D
8.80
9.20
0.346
0.362
D1
6.90
7.10
0.272
0.280
E
8.80
9.20
0.346
0.362
E1
6.90
7.10
0.272
0.280
eB
8.10
8.25
0.319
0.324
e
L
0.80(BSC)
0.45
L1
θ
Rev2.02
0.031(BSC)
0.75
0.018
1.00REF
0
0.030
0.039REF
7°
- 255 -
0
7°
2021-10-29
Fremont Micro Devices
FT62F08x
QFN32
Symbol
Dimensions In Millimeters
Dimensions In Inches
Min
Max
Min
Max
A
0.70
0.80
0.028
0.031
A1
0
0.05
0.000
0.002
b
0.15
0.25
0.006
0.010
c
0.18
0.25
0.007
0.010
D
3.90
4.10
0.154
0.161
D2
2.60
2.70
0.102
0.106
e
0.40 (BSC)
0.016 (BSC)
Nd
2.80 (BSC)
0.110 (BSC)
E
3.90
4.10
0.154
0.161
E2
2.60
2.70
0.102
0.106
Ne
2.80 (BSC)
0.110 (BSC)
K
0.20
-
0.008
-
L
0.35
0.45
0.014
0.018
L1
0.30
0.40
0.012
0.016
L2
0.15
0.25
0.006
0.010
h
0.30
0.40
0.012
0.016
Rev2.02
- 256 -
2021-10-29
Fremont Micro Devices
FT62F08x
附录 1,寄存器类型
缩写
描述
WO
Write Only, read “0”
只写,读为 0
RO
Read Only
只读
RW
Read, Write
可读,可写
RW0
Read, Write “0” only
可读,只能写 0,写 1 无效
RW1
Read, Write “1” only
可读,只能写 1,写 0 无效
Read, Cleared by Writing “1”
可读,写 1 清零,写 0 无效
Reserved, read “0”
保留位,只读,读为 0
R_W1C
Res
Rev2.02
- 257 -
说明
2021-10-29
Fremont Micro Devices
FT62F08x
附录 2,文档更改历史
日期
版本
2019-4-24
1.00
内容
初版
更正笔误“CLRF STATUS”
修改章节的标题级别
添加 SOP20, SOP28 脚位图
修改 I2C 章节的笔误:
ADDRF 改名为 ADDF
TXE 改名 IICTXE,RXNE 改名 II2CRXNE
添加 BANK11 到小节
Timerx 改名为 TIMx
更正若干笔误
添加 6.3.7 小节
添加校准步骤
2019-6-14
1.01
更新图 3.2 的地址笔误
更正 TIM2CCR2L,TIM2CCR3H 寄存器描述笔误
SPICFG2 改为 SPICTRL2
开放 1T 模式
更正 15.3.1 小节中的 ADC 自校准步骤及该小节中的笔误
添加 ADC 自校准步骤到 15.3.1 小节,并修改示例代码
更新电气参数
更新特性页
更新若干格式问题
添加 FT62F085A-TRB 脚位图
添加注意事项到 14.3.2 小节,“写数据 EEPROM 存储器”
2019-9-3
1.02
TIM1BRK 更正为 TIM1BKR
T1UTG 更正为 T1DTG
MnMX1 更正为 MnMXS1
删除 FT62F085-TRB 脚位
更新电气特性的 I/O 源电流
URLCR.2 改名为 URSTOP
2019-9-10
1.03
更新了第 5 节中系统时钟框图
GPIO 添加功能,UCFG2 的第 4 位用作 I2C/SPI 管脚重映射
DROM 添加只编程模式,寄存器控制位 PONLY 在 Wproof3 寄存器的第 6 位
2020-4-8
Rev2.02
1.04
电容按键模块防水模式中内容的增加,添加 16 个防水按键为 1 组的功能
TKC1 寄存器中 TDMY3 修改为 Wproof_T
Wproof3 寄存器中 TDMY[5]修改为 Wproof_G_Sel
- 258 -
2021-10-29
Fremont Micro Devices
日期
FT62F08x
版本
内容
更新 ETGSEL 描述
添加详细指令集描述
添加“存储器编程特性”
添加选型表
添加 FT62F086-RB,62F087B–RB,62F087C-RB 以及 62F087D-RB 脚位图
添加芯片版本说明
更新 Wproof3 寄存器中 Wproof_G_Sel 的描述
更新电气特性表格
2020-5-28
1.05
更新选型表
添加以下型号:
FT62F085E-TRB
FT62F085E-RB
FT62F086E-RB
FT62F088E-LRB
2020-7-10
1.06
添加 FT62F086-TRB, TSSOP24 脚位
T1URS, T2URS, T4URS 描述更新
2020-12-7
1.07
(脚位同 FT62F085A-TRB)
(脚位同 FT62F085-RB)
(脚位同 FT62F086-RB)
(脚位同 FT62F088-LRB)
修正 ADC 模块的 GO/DONE 位和 ADGO 位混用的描述问题
修正 Touch 章节部分笔误
添加 62F087A-RB,62F083-RB 脚位图
更正 I2C 章节中的 ADD10, ADDR 笔误
更正 SPI 章节笔误
更新“存储器特性”表格
修改 TIM2 中寄存器 ICxF 的相关描述
更新选型表,删除 62F087C-RB 型号及其脚位图
2021-2-24
1.08
添加以下型号:
FT62F086E-TRB
(脚位同 FT62F086E-RB)
FT62F088-NRB
(脚位同 FT62F088-LRB)
EECON1 寄存器位 FERAE 更正为 FREE
2021-9-15
2.00
全面优化寄存器表格,更新 MCU 产品订购信息
2021-10-22
2.01
更新振荡器模块、USART 接口相关寄存器汇总表
2.02
添加以下型号:
FT62F087G-RB
(脚位同 FT62F087A-RB)
FT62F087F-RB
(脚位同 FT62F087B-RB)
FT62F088E-NRB
(脚位同 FT62F088-NRB)
删除以下型号:
FT62F085-RB, FT62F085A-TRB, FT62F086-RB, FT62F086-TRB,
FT62F087-RB, FT62F088-LRB
2021-10-29
Rev2.02
- 259 -
2021-10-29
Fremont Micro Devices
FT62F08x
联系信息
Fremont Micro Devices (SZ) Corporation
#5−8, 10/F, Changhong Building
Ke-Ji Nan 12 Road, Nanshan District,
Shenzhen, Guangdong, PRC 518057
Tel: (+86 755) 8611 7811
Fax: (+86 755) 8611 7810
Fremont Micro Devices (HK) Corporation
#16, 16/F, Block B, Veristrong Industrial Centre,
34−36 Au Pui Wan Street, Fotan, Shatin, Hong Kong SAR
Tel: (+852) 2781 1186
Fax: (+852) 2781 1144
http://www.fremontmicro.com/
* Information furnished is believed to be accurate and reliable. However, Fremont Micro Devices (SZ)
Corporation assumes no responsibility for the consequences of use of such information or for any
infringement of patents of other rights of third parties, which may result from its use. No license is
granted by implication or otherwise under any patent rights of Fremont Micro Devices (SZ) Corporation.
Specifications mentioned in this publication are subject to change without notice. This publication
supersedes and replaces all information previously supplied. Fremont Micro Devices (SZ) Corporation
products are not authorized for use as critical components in life support devices or systems without
express written approval of Fremont Micro Devices (SZ) Corporation. The FMD logo is a registered
trademark of Fremont Micro Devices (SZ) Corporation. All other names are the property of their
respective owners.
Rev2.02
- 260 -
2021-10-29