赛元SC92F7250单片机开发

文章目录

      • 芯片简介
      • 开发环境
          • 安装Keil C51
          • 安装SOC Keil插件
          • 配置Keil环境
      • 基本功能开发
          • gpio操作
          • 外部中断
          • 定时器
          • 看门狗
          • EEPROM
      • 注意事项

芯片简介

赛元SC92F7250单片机,是国产的超低成本选择。对于功能简单,控制不复杂的场景,非常适用。
管脚配置如下:
赛元SC92F7250单片机开发_第1张图片
最大时钟可配24M,内部4Kbytes flash ROM + 256 bytes SRAM + 128bytes EEPROM,支持Flash读写、低电压复位、11位看门狗、基本定时器、高级定时器、外部中断、8位PWM可调、12位精度的ADC等功能,支持IDLE/Stop模式切换。
SC92F7250型号的MCU采用8051内核,其指令完全兼容标准8051内核单片机。

开发环境

赛元MCU采用Keil C平台开发,支持汇编语言和C语言编程。

安装Keil C51

如果本机已经安装了Keil其它系列软件,可以安装在同一路径下,不会覆盖已有版本,比如已经Keil ARM,同样可以再安装Keil C51。
安装过程比较简单,填写基本的信息、选择安装路径,一直next下去就可以了。

安装SOC Keil插件

安装完成后,可以在赛元微电子官方网站下载开发需要用到的资料和软件开发包,链接:https://www.socmcu.com/index.php?m=Product&a=tools&bid=49
下载SOC_KEIL.rar并安装,完成后可以在Keil工具内支持SOC的型号和开发包。

配置Keil环境

打开Keil软件,新建空工程,需要配置以下几个地方:
赛元SC92F7250单片机开发_第2张图片
赛元SC92F7250单片机开发_第3张图片
赛元SC92F7250单片机开发_第4张图片
赛元SC92F7250单片机开发_第5张图片

基本功能开发

在官方下载变成demo,文件SC92F7252_7251_7250_Demo_Code.rar,参考其功能代码。
将demo中的SC92F725x_C.H文件拷贝到新建的工程中使用。

gpio操作

gpio配置示例:

static void gpio_config(void)
{
    // P12 P13 -> output
    // P27 -> output
    // P20 P21 P26 -> input
    P1CON = 0x0c; // 00xx 1100
    P2CON = 0x80; // 1000 xx00

    // P21 pull up
    P1PH = 0x00; // 00xx 0000
    P2PH = 0x02; // 0000 xx10
}
外部中断

示例:配置外部中断2

void ext2_irq(void) interrupt 10
{
	if (P21 == 0) {
		; // INT25
	}
}

void gpio_ext_config(void)
{
    // int2 pull down
    INT2F = 0x20; // xx10 xxxx
    INT2R = 0x00; // xx00 xxxx

    // enable int2
    IE1 |= 0x08; // xxxx 100x
    IP1 |= 0x08; // xxxx 100x
    EA = 1;
}
定时器

示例(100us定时器,12MHz系统时钟):

void timer0_irq(void) interrupt 1
{
    TH0 = 0x9b;
    TL0 = 0x9b;

    if (timer_timeout != 0) {
        timer_timeout--;
    }
}

static void timer_config(void)
{
    // t0 freq = fsys/12
    TMCON = 0x0; // xxxx x000

    // t0=timer mode=2(8 bit timer)
    TMOD = 0x02; // x000 x010

    // enble timer0 interrupt
    ET0 = 0x1;

    // interrupt priority
    IPT0 = 0x1;

    // 12M / 12 = 1us, 100us
    TH0 = 0x9b;
    TL0 = 0x9b;

    // start timer
    //TCON = 0x10; // 0001 xxxx

    // open interrupt
    TR0 = 0;
    EA = 1;
    TR0 = 1;
}

static void sleep_100us(unsigned short usec)
{
    timer_timeout = usec;
    while(timer_timeout != 0);
}

看门狗

通过修改烧录Option信息中WDT来选择打开/关闭看门狗功能。
配置WDTCON寄存器来清除WDT计数值、选择WDT溢出时间:
赛元SC92F7250单片机开发_第6张图片

EEPROM

对EEPROM的读写操作示例如下:

// 0x00:选择ROM区操作  0x02:选择EEPROM区操作
#define IapEPPROM   0x02

static void IAPWrite(unsigned char addr, unsigned char value, unsigned char area)
{	
	EA = 0;
	IAPDAT = value; //写入数据Data
	IAPADH = ((addr >> 8) & 0x7f); //写入地址的高5位
	IAPADL = addr; //写入地址的低8位
	
	IAPADE = area; // IAPArea=0x00:选择ROM区操作  IAPArea=0x02:选择EEPROM区操作
	IAPKEY = 240; // IAP开启保护控制时间
	IAPCTL = 0x06; // CPU hold time为2ms,写入操作命令
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	IAPADE = 0x00; //MOVC指向ROM
	EA = 1;
}

static unsigned char IAPRead(unsigned char addr, unsigned char area)
{
	unsigned char value = 0x00;
	EA = 0;
	IAPADE = area;
	value = *(IapAddr + addr); //读取的数据
	IAPADE = 0x00; //MOVC指向ROM
	EA = 1;
	return value;
}

注意事项

SC92F7250型号的MCU不支持在线仿真调试。
烧录Option信息配置LVR,低电压复位电压根据实际使用来选择,否则导致无法启动。

你可能感兴趣的:(项目开发)