16
位 [7:0]
名称 ROM_CTRL 访问 WO
flash-ROM控制寄存器
描述
复位值 00h
flash-ROM状态寄存器(ROM_STATUS):
位 7 6 [5:2] 1 0
名称 保留 bROM_ADDR_OK
保留 bROM_CMD_ERR
保留
访问 RO RO RO RO RO
保留
flash-ROM操作地址有效状态位:
该位为0表示参数无效;为1表示地址有效 保留
flash-ROM操作命令错误状态位:
该位为0表示命令有效;为1表示是未知命令或超时 保留
描述
复位值 1 0 0000b 0 0
6.5 flash-ROM操作步骤
1、擦除flash-ROM,将目标块中全部数据位变为0:
(1)、使能安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh;
(2)、设置全局配置寄存器GLOBAL_CFG开启写使能(bCODE_WE或bDATA_WE对应code或data); (3)、设置地址寄存器ROM_ADDR,写入16位目标地址,实际仅高10位有效;
(4)、设置擦写操作的缓冲区模式寄存器ROM_BUF_MOD为80h,选择64字节块擦除模式; (5)、可选,设置擦写操作的数据缓冲寄存器ROM_DAT_BUF为00h;
(6)、设置操作控制寄存器ROM_CTRL为0A6h,执行块擦除操作,操作期间程序自动暂停运行; (7)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果
要擦除多个块,则循环(3)、(4)、(5)、(6)、(7)步骤,步骤(3)、(4)、(5)顺序可对调; (8)、再次进入安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh;
(9)、设置全局配置寄存器GLOBAL_CFG开启写保护(bCODE_WE=0,bDATA_WE=0)。
2、单字节写flash-ROM,将目标字节中部分数据位从0变为1(无法将位数据从1变为0): (1)、使能安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh;
(2)、设置全局配置寄存器GLOBAL_CFG开启写使能(bCODE_WE或bDATA_WE对应code或data); (3)、设置地址寄存器ROM_ADDR,写入16位目标地址;
(4)、设置擦写操作的缓冲区模式寄存器ROM_BUF_MOD为80h,选择单字节编程模式; (5)、设置擦写操作的数据缓冲寄存器ROM_DAT_BUF为要写入的字节数据;
(6)、设置操作控制寄存器ROM_CTRL为09Ah,执行写操作,操作期间程序自动暂停运行;
(7)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果
要写多个数据,则循环(3)、(4)、(5)、(6)、(7)步骤,步骤(3)、(4)、(5)顺序可对调; (8)、再次进入安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh;
(9)、设置全局配置寄存器GLOBAL_CFG开启写保护(bCODE_WE=0,bDATA_WE=0)。
3、块写flash-ROM,将多个目标字节中部分数据位从0变为1(无法将位数据从1变为0): (1)、使能安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh;
(2)、设置全局配置寄存器GLOBAL_CFG开启写使能(bCODE_WE或bDATA_WE对应code或data); (3)、设置地址寄存器ROM_ADDR,写入16位起始目标地址,例如1357h;
(4)、设置擦写操作的缓冲区模式寄存器ROM_BUF_MOD为结束目标地址(含)的低6位,该结束地
址应该大于或等于ROM_ADDR_L[5:0]起始目标地址,选择数据块编程模式,例如结束地址为1364h,则ROM_BUF_MOD应该设置为24h(64h&3Fh),计算出数据块的字节数=0Dh;
17
(5)、在xRAM中分配一个按64字节对齐的缓冲区域,例如0580h~05BFh,用起始目标地址的低6
位指定在该缓冲区域中的偏移地址,得到本次数据块编程操作的xRAM缓冲区起始地址,将待写数据块从该xRAM缓冲区起始地址开始存放,并将该xRAM缓冲区起始地址置入DPTR,例如DPTR=0580h+(57h&3Fh)=0597h,实际本次编程操作只用到0597h~05A4h地址的xRAM; (6)、设置操作控制寄存器ROM_CTRL为09Ah,执行写操作,操作期间程序自动暂停运行;
(7)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果
要写多个数据,则循环(3)、(4)、(5)、(6)、(7)步骤,步骤(3)、(4)、(5)顺序可对调; (8)、再次进入安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh;
(9)、设置全局配置寄存器GLOBAL_CFG开启写保护(bCODE_WE=0,bDATA_WE=0)。
4、读flash-ROM:
直接使用MOVC指令,或通过指向程序存储空间的指针,读取目标地址的code或data。
5、单字节写OTP数据区域,将目标字节中部分数据位从0变为1(无法将位数据从1变为0): (1)、使能安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (2)、设置全局配置寄存器GLOBAL_CFG开启写使能(bDATA_WE); (3)、设置地址寄存器ROM_ADDR,写入目标地址(20h~3Fh),实际仅低6位中的高4位有效; (4)、设置擦写操作的缓冲区模式寄存器ROM_BUF_MOD为80h,选择单字节编程模式; (5)、设置擦写操作的数据缓冲寄存器ROM_DAT_BUF为要写入的字节数据;
(6)、设置操作控制寄存器ROM_CTRL为099h,执行写操作,操作期间程序自动暂停运行;
(7)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果
要写多个数据,则循环(3)、(4)、(5)、(6)、(7)步骤,步骤(3)、(4)、(5)顺序可对调; (8)、再次进入安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh;
(9)、设置全局配置寄存器GLOBAL_CFG开启写保护(bCODE_WE=0,bDATA_WE=0)。
6、以4字节为单位读取ReadOnly只读信息区域或者OTP数据区域:
(1)、设置地址寄存器ROM_ADDR,写入按4字节对齐的目标地址(00h~3Fh),实际仅低6位有效; (2)、设置操作控制寄存器ROM_CTRL为08Dh,执行读操作,操作期间程序自动暂停运行; (3)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态; (4)、从flash-ROM数据寄存器ROM_DATA_HI和ROM_DATA_LO中获得4字节数据。
7、注意事项:对flash-ROM/EEPROM进行擦写操作时,建议只在-20℃~85℃环境温度下进行。如果在超出上述温度范围时进行编程擦写操作,虽然一般情况下是正常的,但是不排除有降低数据保持能力TDR和降低擦写次数NEPCE甚至影响数据准确性的可能性。
6.6 在板编程和ISP下载
当配置信息Code_Protect=0时,CH555芯片flash-ROM中的代码和数据可以由外部的编程器通过同步串行接口读写;当配置信息Code_Protect=1时,flash-ROM中的代码和数据被保护,无法读出,但是可以被擦除,擦除后重新上电则解除代码保护。
当CH555芯片被预置了BootLoader引导程序后,CH555可以支持USB或者异步串口等多种ISP下载方式加载应用程序;但在没有引导程序的情况下,CH555只能由外部专用编程器写入引导程序或者应用程序。为了支持在板编程,电路中需要预留CH555与编程器之间的4根连接引脚,最少的必要连接引脚是3根:P1.4、P1.6、P1.7。
表6.6.1 与编程器之间的连接引脚
引脚
GPIO
引脚描述
18
VDD SCS SCK MISO
VDD P1.4 P1.7 P1.6
编程状态需要控制芯片电源
编程状态下的片选输入引脚(必要),默认高电平,低电平有效 编程状态下的时钟输入引脚(必要) 编程状态下的数据输出引脚(必要)
6.7 芯片唯一ID号
每只单片机出厂时都具有唯一ID号,即芯片身份识别号。该ID数据及其校验和共8个字节,
存储于只读信息区域的偏移地址为10h的区域中,具体操作请参考C语言例子程序。
表6.7.1 芯片ID地址表
偏移地址 10h、11h 12h、13h 14h、15h 16h、17h
ID数据描述
ID首字数据,依次是ID号的最低字节、次低字节 ID次字数据,依次是ID号的次高字节、高字节
ID末字数据,依次是48位ID号的次最高字节、最高字节 ID首字、次字、末字数据的16位累加和,用于ID校验
ID号可以配合下载工具用于对目标程序进行加密,一般的应用,只需使用到ID号前32位。
7、电源管理、睡眠及复位
7.1 外部电源输入
CH555芯片内置5V到3.3V的低压差电压调整器LDO,产生的3.3V电源用于USB等模块。CH555支持外部5V或者3.3V甚至2.8V电源电压输入,两种电源电压输入模式参考下表。 外部电源电压
VDD引脚电压:外部电压2.8V~5V
V33引脚电压:内部USB电压3.3V (注:睡眠时V33自动短接到VDD)
3.3V或2.8V 输入外部3.3V电压到I/O及电压调整器, 短接VDD输入作为内部USB电源,
必须对地接不小于0.1uF退耦电容 必须对地接不小于0.1uF退耦电容 包括小于3.6V
5V 输入外部5V电压到I/O及电压调整器,
包括大于3.6V 必须对地接不小于0.1uF退耦电容
内部电压调整器3.3V输出
及3.3V内部USB电源输入, 必须对地接不小于0.1uF退耦电容
在电源上电或者系统复位后,CH555默认处于运行状态。在性能满足要求的前提下,适当降低系统主频可以降低运行时的功耗。当CH555完全不需要运行时,可以设置PCON中的PD进入睡眠状态,睡眠状态下可以选择通过USB、UART0、UART1、SPI0以及部分GPIO 进行外部唤醒。
7.2 电源和睡眠控制寄存器
表7.2.1 电源和睡眠控制寄存器列表
名称 WDOG_COUNT RESET_KEEP POWER_CFG WAKE_CTRL PCON CMP_DCDC
地址 FFh FEh BAh A9h 87h
看门狗计数寄存器 复位保持寄存器 电源管理配置寄存器 睡眠唤醒控制寄存器 电源控制寄存器
描述
复位值 00h 00h 0xh 00h 10h 00h
21EBh 比较器和DC-DC控制寄存器
看门狗计数寄存器(WDOG_COUNT):
位
名称
访问
描述
复位值
19
[7:0]
WDOG_COUNT
RW
看门狗当前计数,计满0FFh转向00h时溢出,溢出时自动设置中断标志bWDOG_IF_TO为1
00h
复位保持寄存器(RESET_KEEP):
位 [7:0]
名称 RESET_KEEP
访问 RW
描述
复位保持寄存器,数值可以被人为修改,除了上电复位可将其清零之外,其它任何复位都不影响该数值
复位值 00h
电源管理配置寄存器(POWER_CFG),仅在安全模式下可写:
位 7
名称 bPWR_DN_MODE
访问 RW
描述
选择睡眠下电模式:
该位为0选择下电/深度睡眠模式,更省电但唤醒慢; 该位为1选择待机/正常睡眠模式,唤醒快
电压比较器结果实时输出位,该位为0说明输入电压低于参考电压;该位为1说明输入电压高于参考电压 低压复位检测模块的关闭控制,该位为0启用电源电压检测并在低压时产生复位信号;为1关闭低压检测 USB电源调整器LDO的关闭控制(睡眠时自动关闭): 该位为0则由VDD电源产生3.3V电压用于USB等模块; 为1则禁用LDO并内部短接V33到VDD
内核电压模式:
该位为0是正常电压模式;
该位为1是提升电压模式,性能更好,支持更高主频 选择在下电/深度睡眠模式下的数据保持电源电压: 000-选择1.5V;001-选择1.57V;010-选择1.64V; 011-选择1.71V;100-选择1.78V;101-选择1.85V; 110-选择1.92V;111-选择1.99V。 上述数值仅供参考,不建议修改
复位值 0
6 5
bCMP_RESULT bLV_RST_OFF
RO RW
0 0
4 bLDO_3V3_OFF RW 0
3 bLDO_CORE_VOL RW 0
[2:0] MASK_ULLDO_VOL RW xxxb
睡眠唤醒控制寄存器(WAKE_CTRL),仅在安全模式下可写: 位 7 6 5 4 3 2 1 0
名称 保留 bWAK_RXD1_LO bWAK_P1_5_LO bWAK_P1_4_LO bWAK_BY_USB bWAK_P3_3_LO bWAK_INT0_EDGE bWAK_RXD0_LO
访问 RO RW RW RW RW RW RW RW
保留
UART1接收输入低电平唤醒使能,为0禁止唤醒。 根据bUART1_PIN_X=0/1选择RXD1或RXD1_引脚 P1.5低电平唤醒使能,为0禁止唤醒 P1.4低电平唤醒使能,为0禁止唤醒 USB事件唤醒使能,该位为0禁止唤醒 P3.3低电平唤醒使能,为0禁止唤醒。 INT0边沿变化唤醒使能,为0禁止唤醒。 根据bINT0_PIN_X=0/1选择INT0或INT0_引脚 UART0接收输入低电平唤醒使能,为0禁止唤醒。 根据bUART0_PIN_X=0/1选择RXD0或RXD0_引脚
描述
复位值 0 0 0 0 0 0 0 0
其它能够唤醒芯片的信号源还有:
当bP4_IE_LEVEL为1时,P4.0~P4.7其中任一引脚的电平变化将唤醒芯片。
20
当bP2L_IE_LEVEL为1时,P2.0~P2.3其中任一引脚的电平变化将唤醒芯片。 当bP1L_IE_LEVEL为1时,P1.0~P1.3其中任一引脚的电平变化将唤醒芯片。 当bP0_IE_LEVEL为1时,P0.0~P0.7其中任一引脚的电平变化将唤醒芯片。 当En_P71_RESET为1时启用RST#,P7.1引脚的低电平将唤醒并复位芯片。
电源控制寄存器(PCON): 位 7 6 5 4 3 2 1 0
名称 SMOD 保留 bRST_FLAG1 bRST_FLAG0
GF1 GF0 PD 保留
访问 RW RO R0 R0 RW RW RW RO
描述
当用定时器1产生UART0波特率时,选择UART0模式1、2、3的通讯波特率:0-慢速模式;1-快速模式 保留
芯片最近一次复位标志高位 芯片最近一次复位标志低位
通用标志位1:使用者可自己定义,可软件清零或置位 通用标志位0:使用者可自己定义,可软件清零或置位 睡眠模式使能,置1后睡眠,唤醒后硬件自动清零。 强烈建议在睡眠前关闭全局中断(EA=0)。 保留
复位标志描述
软件复位,来源:bSW_RESET=1并且(bBOOT_LOAD=0或bWDOG_EN=1) 电源上电复位或低压检测复位,来源:VDD引脚电压低于检测电平 看门狗复位,来源:bWDOG_EN=1并且看门狗超时溢出
外部引脚手工复位,来源:En_P71_RESET=1并且P71输入低电平
复位值 0 0 0 1 0 0 0 0
表7.2.2 芯片最近一次复位标志描述
bRST_FLAG1 bRST_FLAG0
0 0 1 1
0 1 0 1
比较器和DC-DC控制寄存器(CMP_DCDC):
位 7
名称 bDCDC_ACT
访问 RO
描述
DC-DC输出激活状态(只读):
该位为0表示空闲;该位为1表示正在激活驱动 DC-DC输出允许和极性选择:
该位为0则bDCDC_ACT信号不输出;
该位为1则当P6_DIR[4]=1时P6.4引脚输出由P6_OUT_PU[4]控制极性的bDCDC_ACT信号,当P6_OUT_PU[4]=0时输出正极性,当P6_OUT_PU[4]=1时输出反极性
在MASK_CMP_VREF!=000时选择DC-DC控制器的参考频率(实际输出频率最高为参考频率的1/3):
00-关闭DC-DC控制器;01-选择3MHz参考频率; 10-选择1.5MHz参考频率;11-选择750KHz参考频率。 在MASK_CMP_VREF=000时直接控制bDCDC_ACT状态: 00设置bDCDC_ACT=0;01/10/11设置bDCDC_ACT=1 电压比较器的输入电压源选择(正相输入端): 该位为0选择经分压输入VDD电源; 该位为1选择经分压连接模拟输入通道,与ADC共用,由ADC_CHAN选择外部输入引脚,且bADC_EN=1
复位值 0
6 bDCDC_PIN RW 0
[5:4] MASK_DCDC_FREQ RW 00b
3 bCMP_PIN RW 0