中微CMS8S3680/69xx系列单片机

本文介绍使用中微CMS8S3680/69xx系列8位单片机进行电源控制软件开发。该单片机简单易用,数字功能映射灵活,存储器资源丰富,编程方便。还给出电源控制程序的功能需求、原理图及源程序,包括各文件功能和主要函数说明。

最近在使用中微CMS8S3680/69xx系列8位单片机来进行电源控制软件开发。

总体觉得这款单片机简单易用,特别是它的数字功能可以映射到任意脚,甚至包括程序的烧录脚,对于PCB布局特别灵活。另外它的存储器资源也是很丰富的,16K字节ROM,256字节RAM以及512字节的XRAM,对于一般的程序是绰绰有余了。编程方面它也有库函数包装好了相关的寄存器设置,无论是使用库函数还是直接设置寄存器都能快速构建应用。详细情况及资料下载可以访问其官方网站:中微半导-CMS79F11x

本次编写的一个程序也是电源控制方面的,软件没有时序要求,比较简单,功能需求大致如下(只说明了各个引脚的功能):

引脚

引脚特性

网络名

功能

功能要求

1

/

GND

2

A/D采样

12VS

检测12V输出电压

输出10.8V-12.6V为正常(2.5-2.8V)

输出>13V,4脚出高(打嗝保护)(3V保护,2.8V恢复正常)

输出<10V为异常(2.31V保护,2.5V恢复正常)

3

输出

12V_JLOFF

12V均流关断信号

12V输出正常时,输出高电平

12V输出异常时,输出低电平

 (默认出低电平,检测2脚状态)

4

输出

12V_OFF

12V关机信号

关机:输出高电平(打嗝保护,间隔时间3.5S)

开机:输出低电平,默认低电平

(默认出低电平,检测2脚、7脚)

5

A/D采样

OT2

过温保护+风扇调速

型号:TTC3A104J4193LY

过温保护点为105℃,恢复点为85℃

保护时关闭两路输出

6

A/D采样

DSCK

检测53V过流保护、过压保护

检测为高,关闭53V输出

检测为低,恢复53V输出

7

A/D采样

12V_OCP/

检测12V过流保护

检测为高,关闭12V输出;

检测为低,恢复12V输出

8

A/D采样

F_F

风扇故障检测

检测高电平,风扇故障

检测低电平,风扇解除故障

9

输出

FAN_F

风扇故障告警

检测风扇故障:出高

检测风扇正常:出低,默认出高

10

输出

FAN_PWM

风扇PWM信号

根据OT2温度进行风扇调速

11

输出

OUT_LED_R

亮红灯

12V /53V输出异常出高(电源风扇异常、输出过压、输出限流、输出短路、电源过温保护)

输出正常出低,默认出高

12

输出

OUT_LED_G

亮绿灯

输出正常,出高亮绿灯

输出异常出低,默认出低

13

A/D采样

PG_IN

检测53V输出正常

正常为高

异常为低

14

输出

53V_OFF1

53V输出关机信号

关闭输出,出高(打嗝保护,间隔时间3.5S)

恢复输出,出低

15

/

DSDA

数据

/

16

VDD

供电脚

/

单片机原理图部分如下:

源程序如下:

1、main.c:主程序,所有程序逻辑的控制基本都是在这里,以下几个函数大致说明一下:

ADC_Process():主要用于检测12V输出的电压和NTC贴片电阻进行过温检测;

Process_1MS():1毫秒任务处理,主要IO滤波和54V输出异常检测;

Process_10MS():10毫秒任务处理,用于过流/过压打嗝的定时计数;

OCP_Process():12V和54V输出过流打嗝标志位设置和清除;

Task_Manager():根据设置的标志位对输出的通断进行控制以及各个告警信号的输出控制;

Adjust_FAN_Duty():

在将HT66F3185单片机代码移植到中CMS8S7885芯片时,需要进行多个方面的适配和修改,以确保代码在目标芯片上正常运行。以下是主要的修改步骤和注意事项: ### 头文件和寄存器定义 HT66F3185的头文件和寄存器定义与CMS8S7885不同,因此需要替换或重新定义。CMS8S7885的寄存器地址和功能可能与HT66F3185存在差异,必须根据CMS8S7885的数据手册重新定义寄存器。 ```c // HT66F3185寄存器定义 #include "HT66F3185.h" // 替换为CMS8S7885寄存器定义 #include "CMS8S7885.h" ``` ### GPIO配置 CMS8S7885的GPIO配置方式可能与HT66F3185不同,需要根据CMS8S7885的数据手册调整GPIO方向、上下拉和复用功能配置。 ```c void GPIO_Init(void) { // CMS8S7885 GPIO配置 PA_DIR = 0x00; // 设置PA为输出 PB_DIR = 0xFF; // 设置PB为输入 } ``` ### ADC模块 CMS8S7885的ADC模块配置和寄存器可能与HT66F3185不同,需要重新配置ADC通道、采样率和参考电压等参数。 ```c void ADC_Init(void) { // CMS8S7885 ADC配置 ADC_CON1 = 0x00; // 设置ADC时钟和采样时间 ADC_CON2 = 0x00; // 设置ADC分辨率和参考电压 } ``` ### PWM模块 CMS8S7885的PWM模块寄存器和功能可能与HT66F3185不同,需要重新配置PWM频率和占空比。 ```c void PWM_Init(void) { // CMS8S7885 PWM配置 PWMCON = 0x00; // 设置PWM模式和时钟源 PWMPER = 0xFF; // 设置PWM周期 } ``` ### 定时器中断 CMS8S7885的定时器寄存器和中断配置可能与HT66F3185不同,需要重新配置定时器参数和中断使能。 ```c void Timer_Init(void) { // CMS8S7885定时器配置 TMR0 = 0x00; // 设置定时器初始值 TMR0CN = 0x00; // 设置定时器模式 TMR0IE = 1; // 使能定时器中断 } ``` ### 睡眠模式 CMS8S7885的睡眠模式配置和唤醒源可能与HT66F3185不同,需要根据CMS8S7885的数据手册重新配置睡眠模式和唤醒源。 ```c void Sleep_Init(void) { // CMS8S7885睡眠模式配置 PCON = 0x01; // 进入空闲模式 } ``` ### 相关问题 1. CMS8S7885的ADC模块如何进行多通道数据采集和滤波处理? 2. 如何在CMS8S7885上实现PWM频率和占空比的动态调节? 3. 在嵌入式系统中,如何通过中断实现按键的防抖处理?
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值