# 应用指南 工程师●最爱

/*************************************************************************************************************

                                                     行百里者半九十

*************************************************************************************************************/

# GPIO类

# 静态功耗

芯片模式选择“义隆模式”,进入睡眠后,会异常唤醒,导致功耗偏大:

①“义隆模式”没有键盘唤醒的单独使能位。唤醒后,由程序判断是否为设定引脚的电平发生了改变,之后再选择睡眠或者工作。

②选择“菲林模式”,并配置相应的使能位。

# 芯片模式说明(兼容晟矽、菲林、义隆)

image.png

晟矽模式与兼容义隆模式,在对PCL进行加法运算(PCL+ACC)时,系统会将加法运算结果自动进位至高位寄存器。

兼容菲林模式,在对PCL进行加法运算(PCL+ACC)时,需手动对高位寄存器进行操作。

建议:在汇编中定义数组时,建议用ORG将地址固定。

# 开漏口使用

GPIO系列除复位脚外,其余脚作为开漏口输出高。VDD 与 IO 有压差时,会导致整个 MCU 功耗增加。

建议调整芯片外围,使IO为VDD电压。

# 模拟输出死区互补PWM

以MC30P6080为例:

①配置相关寄存器:使能对应定时器与PWM;

②设置对应的周期与占空比,使能对应端口输出;

③PWM信号由T1PWM0提供,可以从两路端口输出(P11与P12);

④FPWM信号由T1PWM1与TIPWM2组合,固定从P10输出。

因PWM1端口输出信号由T1PWM0决定,所以可以选择是否开启PWM1功能,然后修改比较寄存器,来修改FPWM的占空比;

FPWM信号固定从P10脚输出;P11与P12可以选择两个同时输出,或任意一个输出PWM信号。

详细使用方法参考如下:

void PWM_INIT(void)
{
   T1CR = 0xc0;
   T1CNT = 100;
   T1LOAD = 100-1;
   T1DAT0 = 50;
   T1DAT1 = 0;
   T1DAT2 = 50;
   PWMCR = 0x69;
//    PWM0OE = 0;   //允许P12端口输出PWM信号
//    PWM1OE = 1;	  //允许P11端口输出PWM信号
//    PWM2OE = 1;	  //允许P10端口输出组合逻辑信号
//    DBCLK = 0;   //T1时钟不倍频
//    PWMMD = 1;   //P10输出组合信号
//    PWMINV = 0;	  //同或
//    PWM1E = 0;   //使能PWM1
//    PWM2E = 1;   //使能PWM2
}

# AD类

# 端口输入电压

不管是否使能ADC功能,当有ADC功能的端口电压大于VDD时,会导致AD功能异常。

# AD使能后的等待时间

部分芯片在AD使能后,需延时一段时间等待电路稳定。

参考电压为VDD,通道为VDD/4,则AD转换理论值为4096/4=1024。通过比较高6位B'001111或B'010000,即AD采集值在:960-1087之间,则表明ADC模块已正常工作。

点击查看适用型号及详细说明

# 汇总

# 高频校准低频

对于低功耗要求高、计时精度要求不高的应用,可使用内部低频计时,但其误差较大。此时,可使用内部高频来校准内部低频,修正其偏差。

支持“高频校准低频”的型号
分类GPIO-OTPGPIO-FLASHAD-OTPAD-FLASH
型号MC30P6250MC30F6910MC32P8141MC51F003A4
MC30P6280MC30F6920MC9902MC51F8124
MC30P6230
MC32P8112MC32F7062
MC30P6240
MC32P7311MC32T8132
MC30P6201
MC32P7351MC32F7122

原理和步骤:

①采用内部高频在上电时校准内部低频计数器;

②定时器时钟配置为内部低频,启动定时器计数;

③延时设定时间,读取定时器的计数值,按照此计数值重新装载到定时器中,利用定时器分频,装载值位移,实现不同定时。

MC51F003A4的T3时钟源选择低速时钟时,无法通过高频校准低频来实现软件定时。

# 上电后未工作/异常

①芯片供电电压不在工作范围内;

②查看VDD输入电压是否存在突变,导致芯片损坏;

③快速断电再上电的应用:VDD端电压未跌落至复位电压以下,芯片没有复位。可以修改LVR,或者在VDD端增加电阻加快放电。

# 异常复位

①检查WDT配置、清狗时间和位置是否正常;

②检查VDD电压是否稳定、是否低于LVR设定电压;

③仿真测试,是否复位。

# 锂电池供电

在接入锂电池后,测量VDD与GND没有电压:

①测量锂电池正负极,查看电压是否正常;

②检查电路中的锂电保护IC ,是否需要激活。

# 休眠无法唤醒

能正常进休眠,但无法唤醒:

①检查休眠程序(参考DemoCode);

②查看对应的唤醒方式是否使能。

# 操作24C02时有大电流

外挂或内置24C02,在写EEPROM时会有大电流。

SDA通讯信号冲突:EE芯片在输出最后一个数据到一半的时候,会提前发送应答信号,从而导致端口冲突,产生大电流。

解决方法:SDA输出最后一位数据位的时候,只输出一半脉宽。

# 中断标志位 推荐

在使能相应中断前,建议先清除相应的中断标志位,以免因端口状态变化造成初次中断误触发。

#