STM8S005C6技术记录
STM8S microcontroller memory 机器周期基本是: 1/系统时钟频率
关键字 16MHz8位stm8、32字节闪存、E2PROM数据、10位ADC、计时器、UART、SPI、I2C
电源电压2.95-5.5v
*特性:最高CPU频率16MHz(哈佛结构、3级流水线、扩展指令集)、8位MCU(32字节闪存、E2PROM存储)、中断(32个中断,可扩展37中断在6通道上)、计时器(4个时钟源 16MHz 128kHZ;2个16位通用计时器带2+3CAPCOM通道(IC,OC,PWM)优先控制计时器(16位、4CAPCOM通道、3补充输出,空载时间/死亡时间) 带8位预分频的8位标准计时器 自动唤醒计时器 独立看门狗计时器)、通信接口(带同步输出时钟UART、8Mbit/s的SPI、400Kbit/s的I2C)、10位ADC (最低有效位高达10 多路复用通道,扫描模式,模拟看门狗)、I/O (升至48脚程序包38个输入输出包括16High-voltage current-sink outputs 高压电流灌电流输出
一、综述
**中枢处理单元
***架构和寄存器
1.哈佛架构
2.3级流水线
3.32位可编程总线 单周期指令
4.16位X和Y索引寄存器,可设置指数地址模式或者无偏移数据读写操作
5.8位累加器
6.24位程序计数器 - 16M字节线型记忆空间 PC
7.16位堆指针 - 通向64 K-level 堆 SP
8.8位条件寄存器 - 7种条件标志位
***寻址
1.20种寻址方式
2.查找表间接寻址 全地址空间
3.堆指针相对寻址模式
***指令集
**单线接口模式 调试模式
**中断控制器
**可编程闪存和EEPROM数据存储
**时钟控制器
**电源管理
**看门狗
**自动唤醒计数器
**B麦
**TIM1 16位优先控制计时器
**TIM2 TIM3 16位通用计时器
**TIM4 8位基本计时器
**ADC1
**通信接口
----------------------------------------------------------------------------------------------------
八、时钟控制
主时钟源: HSE、HSE user-ext、 HSI、 LSI
HSE :
OSCIN引脚、OSCOUT引脚
外接1-24MHz振荡器 → 占空比50%主时钟信号 ()谐振器和负载电容应尽可能靠近振荡器引脚
外部时钟寄存器 CLK_ECKR
HSECNT 设置稳定时间(时钟开始之前的延迟 默认2048个振荡器周期
HSERDY 稳定标志位 由硬件置位指示之后时钟生效
HSEEN HSE晶体开关
EXTCLK 外部时钟模式选择位
HSI :
内部16MHZ RC振荡器+可编程分频器
分频因子寄存器 CLK_CKDIVR (分频因子1-8)启动时默认8分频 fHSI/8
内部时钟寄存器 CLK_ICKR
HSIRDY 标志位指示HSI RC是否稳定
HSIEN 使能HSI RC
FHWU 置1时MUC从停机(Halt)模式或活跃停机(Active Halt)模式唤醒是,HSI自动设置为主时钟源
HSI时钟校准寄存器 CLK_HSITRIMR
LSI :
128KHZ 可用于停机模式下维持独立看门狗和自动唤醒单元(AWU)的低功耗时钟源
CLK_ICKR
LSIEN LSI开关
KSIRDY LSI稳定标志位
**系统启动 HSI8分频作为主时钟
自动切换时钟
切换控制寄存器 CLK_SWCR
SWEN 使能切换机制
主时钟切换寄存器 CLK_SWR
CLK_SWR写入8位数值-SWBSY硬件置位-启动目标时钟源-稳定-复制CLK_SWR到主时钟状态寄存器 CLK_CMSR
-SWBSY清零-新时钟成为主时钟源-CLK_SWCR标志位SWIF置位(此时SWIEN为1会产生一个中断)
手动切换 略
**低速时钟源
**CPU时钟分频器 CPU时钟由主时钟分频而来 分频因子由CLK_CKDIVR中的位CPUDIV[2:0]决定
**外设时钟门控 外设时钟门控(PCG)模式
系统复位后,所有外设时钟均处于开的状态
清除CLK_PCKENR1或CLK_PCKENR2中的PCKEN位来关闭相应的外设时钟,--必须先禁用外设之后才可关闭外设时钟
--AWU计数器由独立时钟驱动,该设备可继续运行
**时钟输出功能 CCO
**时钟中断
时钟寄存器
1.内部时钟寄存器(CLK_ICKR)
2.外部时钟寄存器(CLK_ECKR)
3.主时钟状态寄存器(CLK_CMSR)
4.主时钟切换寄存器(CLK_SWR)
5.切换控制寄存器(CLK_SWCR)
6.时钟分频寄存器(CLK_CKDIVR)
7.外设时钟门控寄存器(CLK_PCKENR1)
8.外设时钟门控寄存器 2(CLK_PCKENR2)
9.时钟安全系统寄存器(CLK_CSSR)
10.可配置时钟输出寄存器
11.CAN外部时钟控制寄存器(CLK_CANCCR)
12.HSI时钟修正寄存器(CLK_HSITRIMR)
13.SWIM时钟控制寄存器(CLK_SWIMCCR)
----------------------------------------------------------------------------------------------------
四、FLASH程序存储器和数据EEPROM
由一组通用寄存器控制 可编程或擦除存储器的内容、设置写保护、或者配置特定的低功耗模式,
也可对器件的选项字节(option byte)进行编程
**词汇表
***块(BLOCK) 标准编程和擦除操作,速度快
***页(PAGE) 一组块
**FLASH特性
**存储器组织结构
32位字长EEPROM 小容量STM8S 8KFLASH程序存储器 128页 每页64字节 00 4000h - 00 427Fh、
640字节数据EEPROM 10页 每页64字节 00 8000h - 00 9FFFh
中容量STM8S 每页512字节 00 4000h - 00 43FFh 、 00 8000h - 00 FFFFh
大容量STM8S 每页512字节 00 4000h - 00 487Fh 、 00 8000h - 02 7FFFh
页的大小定义了用户启动代码区域(UBC)大小的最小可调整值
**用户启动区域(UBC) 写保护
复位和中断向量表 存储IAP及通讯程序
UBC区域起始地址 0x00 8000
UBC选项字节
配置UBC大小 UBC[7:0] = 0X00 意味着没有定义用户启动区域
读取UBC大小
头两页包含中断向量表 128字节/32个中断向量
**数据EEPROM(DATA)
**主程序区
**选项字节(Option byte)
可在ICP/SWIM模式或IAP模式中修改 -需保证FLASH_CR2中的OPT位为1以及FLASH_NCR2中的OPT位为0
**存储器保护
**存储器编程 编程前需对主程序存储器和DATA区域解锁
**读同时写 (RWW)
**字节编程 可对主程序存储器和DATA区域逐字节编程 擦除:写入‘0x00’
FLASH_IAPSR寄存器 校验编程或擦除操作是否正确执行(读)
EOP位置1 一次成功的编程操作
WP_PG_DIS位置1 写被保护的页(不执行)
FLASH_CR1的IE位使能,则标志位(EOP/WP_PG_DIS)置位则产生中断
**字编程
FLASH_CR2和FLASH_NCR2中的WPRG/NWPRG位需预先置位/清零 使能字编程模式
EOP位置1 一次成功的编程操作
WP_PG_DIS位置1 写被保护的页(不执行)
FLASH_CR1的IE位使能,则标志位(EOP/WP_PG_DIS)置位则产生中断
**块编程
三种块操作:块编程(标准块编程)、快速编程(在编程前没有预先的块擦除操作)、块擦除
FLASH_CR2和FLASH_NCR2中的PRG/NPRG位必须预先置位/清零 使能标准块编程
FLASH_IAPSR中的HVOFF确认编程状态,置0,编程开始,应用程序可以返回主程序中
FLASH_IAPSR中的EOP与WR_PG_DIS控制位 FLASH中断 可用于检测编程是否正确进行
FLASH_CR2和FLASH_NCR2中的FPRG/NFPRG位必须预先置位/清零来使能快速块编程
FLASH_IAPSR中的EOP与WR_PG_DIS控制位 FLASH中断 可用于检测编程是否正确进行
FLASH_CR2和FLASH_NCR2中的ERASEN/NERASE位必须预先置位/清零来使能快速块编程
字的起始地址必须以'0','4','8',或'C'作为结尾。
FLASH_IAPSR中的EOP与WR_PG_DIS控制位 FLASH中断 可用于检测操作是否正确进行
块的大小
STM8微控制器家族:小容量STM8S 64字节、中容量STM8S 128字节、 大容量STM8S 128字节
**选项字节(Option byte)编程
与DATA EEPROM区域编程类似,应用程序可直接向目标地址进行写操作
**ICP和IAP(略,很重要)
在线编程(ICP)、在应用编程(IAP)
**FLASH寄存器
FLASH控制寄存器1 (FLASH_CR1) 模式设置
FLASH控制寄存器2 (FLASH_CR2) 功能使能
FLASH互补控制寄存器2 (FLASH_NCR2) 功能使能
FLASH保护寄存器 (FLASH_FPR) [5:0] UBC选项字节
FLASH保护寄存器 (FLASH_NFPR) [5:0] NUBC选项字节
FLASH程序存储器保护寄存器 (FLASH_PUKR) PUK[7:0] 主程序存储器解锁秘钥
读时返回值为0x00,可写
DATA EEPROM解保护寄存器 (FLASH_DUKP) DUK[7:0] DATA EEPROM解锁秘钥
读时返回值为0x00,可写
FLASH状态寄存器 (FLASH_IAPSR) 标志寄存器
-----------------------------------------------------------------------------------------------------
十一 通用输入输出口(GPIO)
一个IO口8个引脚,可独立编程,另有部分模拟输入、外部中断、片上外设的输入/输出等复用功能。
同一时刻仅有一个复用功能可以映射到引脚上,复用功能的映射是通过选项字节控制的
每个端口都分配有一个输出数据寄存器,一个输入引脚寄存器,一个数据方向寄存器,一个选择寄存器,
和一个配置寄存器,I/O口的输入输出取决于该口的数据方向寄存器
功能
端口的各个位可以被单独配置
可选择的输入模式:浮动输入和带上拉输入
可选择的输出模式:推挽式输出和开漏输出
数据输入和输出均采用独立的寄存器
外部中断可以单独使能和关闭
输出摆率控制用以减少EMC噪声
片上外设的I/O功能复用
当作为模拟输入时可以关闭输入施密特触发器来降低功耗
在数据输出锁存时支持读-修改-写
输入兼容5V电压
I/O口工作电压范围为1.6V到VDDIOmax
**I/O配置和使用
每一个端口都有一个输出数据寄存器(ODR),一个引脚输入寄存器(IDR)和一个数据方向寄存器(DDR)
控制寄存器1(CR1)和控制寄存器2(CR2)用于对输入输出进行配置
寄存器中的位n对应于口的引脚n
配置模式 DDR CR1 CR2 配置模式 上拉电阻 P-Buffer 二极管
连接VDD 连接VSS
ON ON
输入 0 0 0 悬浮输入 OFF OFF
0 1 0 上拉输入 ON
0 0 1 中断悬浮输入OFF
0 1 1 中断上拉输入ON
输出 1 0 0 开漏输出 OFF OFF
1 1 0 推挽输出 ON
1 X 1 输出10MHZ最快 CR1位决定
X X X 真正的开漏输出 未采用
注意:连接VDD的二极管在实际开漏极状态引脚是无效的,在引脚和VOL之间的局部保护设备重要性是有效的
**输入模式
DDRx位清零选择输入模式,读IDR寄存器的位将返回对应I/O引脚上的电平值
**输出模式
DDRx位置1选择输出模式,向ODR寄存器的位写入数据将会通过锁存器输出对应数字值到I/O口,
读IDR的位将会返回相应的I/O引脚电平值。
**复位后默认是悬浮输入模式
**没有使用的I/O引脚必须连接到一个固定的电平值,或者上拉或者下拉。
**低功耗模式
等待(Wait)模式 对I/O口无影响,外部中断可以使MCU退出等待(Wait)模式
停机(Halt)模式 对I/O口无影响,外部中断可以使MCU从停机(Halt)模式唤醒
如果PA1/PA2被用来连接外部谐振器,为了确保在HALT模式下有最低功耗必须配置PA1和PA2为带上拉输入
**输入模式详述
1、复用功能的输入,用户必须配置DDR和CR1寄存器设置对应的I/O口为悬浮或上拉输入
2、中断功能设置Px_CR2寄存器 信号沿或低电平会产生一个中断请求
EXTI_CR[2:1] 设置中断向量上升沿或下降沿触发
外部中断只有在输入模式下才有效
3、模拟通道
ADC外设可以选择某些I/O口作为模拟输入通道
必须关闭ADC_TDR寄存器的输入施密特触发器
推荐模拟输入配置方式: DDR(0),CR1(0),CR2(0),ADC_TDR(1) ;浮空输入,无中断,禁止施密特触发
4、施密特触发器
ADC_TDR施密特触发器禁止寄存器
**输出模式详述
1、复用功能的输出
复用功能使能时,输出锁存寄存器(Px_ODR)相应位强制为1
可以是上拉或者开漏输出:外设本身和控制寄存器1(Px_CR1)
输出摆率:控制寄存器2(Px_CR2)
SPI输出引脚:上拉,快速摆率 → 最佳性能
UART_Tx:上拉/开漏带外部上拉 → 实现多从机
2、摆率控制
CR2 软件控制
置位CR相应位 10MHz输出频率
输出类型 O3或者O4
**GPIO寄存器 x = A,B,C,D
1.端口输出数据寄存器(Px_ODR)
2.端口输入寄存器(Px_IDR) 只读
3.端口数据方向(Px_DDR)
4.端口控制寄存器1(Px_CR1) 输入(DDR=0):0浮空;1上拉 输出:0模拟开漏;1推挽 CR2设置输出摆率
5.端口控制寄存器2(Px_CR2) 输入:外部中断使能1;输出:0-2MHZ;1-10MHZ

浙公网安备 33010602011771号