打印
[活动专区]

基于赛元SC92F8003的PWM驱动开发心得

[复制链接]
2098|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gdwurc|  楼主 | 2019-5-7 09:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 gdwurc 于 2019-5-7 09:03 编辑

首先非常感谢赛元官方提供一个学习的机会!
      最近想做一个智能温控杯的东西,刚才赛元有这个活动,对比了一下SC92F8003这个片很合适用来做这个项目,当然Flash是16K用在这个项目上有些太豪了,之前没什么开发经验,所以这个就先不考虑,把东西搞出来再说吧。
     由于真正的原理图和PCB都还没完成,所以先用MB0013A 这个开发板顶着先。
     设计目标是使用SC92F8003输出三路PWM信号来做驱动信号,其中三路PWM是共用周期为500Hz,但是可以单独调整各路PMW的点空比:
1、首先是PWM初始化
/**************************************************
*函数名称:APP_PWM_Init
*函数功能:App应用初始化PWM
*入口参数:void
*出口参数:void
*功能说明:
**************************************************/
void APP_PWM_Init(void)
{
    PWM_BaseInit(PWM_PRESCALER_32,999);    //16MHz/32=500kHz,1000个周期=0.5kHz,即是PWM频率=500Hz
    PWM0IndependentMode(PWM_POLARITY_NON_INVERT,0);
    PWM1IndependentMode(PWM_POLARITY_NON_INVERT,0);
    PWM2IndependentMode(PWM2_OutputPin_P26,PWM_POLARITY_NON_INVERT,0);
    PWM_Cmd(ENABLE);


2、接着是分别3路PWM的驱动函数
/**************************************************
*函数名称:APP_PWM_FAN_Control
*函数功能:FAN控制
*入口参数:STATE,VALUE
*出口参数:void
*功能说明:
**************************************************/
void APP_PWM_FAN_Control(FunctionalState STATE,uint16_t VALUE)
{
    if (STATE == ENABLE)
    {
        PWMxOutputState(PWM0,PWM_OUTPUTSTATE_ENABLE);
        Delay_100us(2);
        PWM0IndependentMode(PWM_POLARITY_NON_INVERT,VALUE);
    }
    else
    {
        PWMxOutputState(PWM0,PWM_OUTPUTSTATE_DISABLE);
    }  
}

/**************************************************
*函数名称:APP_PWM_Heat_Control
*函数功能:加热时,PWM输出控制
*入口参数:STATE,VALUE
*出口参数:void
*功能说明:
**************************************************/
void APP_PWM_Heat_Control(FunctionalState STATE,uint16_t VALUE)
{
    if (STATE == ENABLE)
    {
        PWMxOutputState(PWM2,PWM_OUTPUTSTATE_DISABLE);
        Delay_100us(2);
        PWMxOutputState(PWM1,PWM_OUTPUTSTATE_ENABLE);
        PWM1IndependentMode(PWM_POLARITY_NON_INVERT,VALUE);
    }
    else
    {
        PWMxOutputState(PWM1,PWM_OUTPUTSTATE_DISABLE);
    }
}


4、
/**************************************************
*函数名称:APP_PWM_Cooling_Control
*函数功能:制冷时,PWM输出控制
*入口参数:STATE,VALUE
*出口参数:void
*功能说明:
**************************************************/
void APP_PWM_Cooling_Control(FunctionalState STATE,uint16_t VALUE)
{
    if (STATE == ENABLE)
    {
        PWMxOutputState(PWM1,PWM_OUTPUTSTATE_DISABLE);
        PWMxOutputState(PWM2,PWM_OUTPUTSTATE_ENABLE);
        PWM2IndependentMode(PWM2_OutputPin_P26,PWM_POLARITY_NON_INVERT,VALUE);
    }
    else
    {
        PWMxOutputState(PWM2,PWM_OUTPUTSTATE_DISABLE);
    }
}


4、如下是Main函数
int main( void )
{            
        APP_GPIO_Init();
        APP_PWM_Init();
        while(1)
  {   
                void APP_PWM_FAN_Control(ENABLE,PWM_DutyCycle_100);
                void APP_PWM_Heat_Control(ENABLE,PWM_DutyCycle_90);
                void APP_PWM_Cooling_Control(ENABLE,PWM_DutyCycle_10);
        }
}


第一次编译后报错了,当然正常的,与预期一样。


我的天啊,花了好长时间才发现,原来是Main函数下调用函数时没有把void这个去掉。
修改后,编译如下:
   有些小兴奋,当时用示波器抓取的波形没有保留下来
接下来还有好多代码需要去实现,有空再更新!
再次多谢赛元官方提供的开发板及开发工具。上几张靓照:

响应官方呼唤,留名:gdwurc(微信)   2019.05.07




1.jpg (322.75 KB )

1.jpg

3.jpg (171.07 KB )

3.jpg

2.jpg (194.94 KB )

2.jpg

4.jpg (103.16 KB )

4.jpg

454555cd0d56a334ba.png (18.46 KB )

454555cd0d56a334ba.png

SC92F8003_PWM小试牛刀.zip

145.74 KB

使用特权

评论回复

相关帖子

沙发
赛元MCU3| | 2019-5-7 09:23 | 只看该作者
用心用心!!!顶顶顶!

使用特权

评论回复
板凳
rickluo| | 2019-5-8 11:53 | 只看该作者
深圳市集万讯电子技术有限公司华大半导体 MCU核心代理商,专业MCU推广商,为客户提供华大全系列MCU:
HC32F003C4PA-TSSOP20
HC32F003C4UA-SFN20TR
HC32F005C6UA-SFN20TR
HC32L110C6UA-SFN20TR
HC32L130J8TA-LQ48
HC32L130F8UA-QFN32TR
HC32L136K8TA-LQ64
等大量现货库存,专业、权威、全面技术支持,有效提高您产品开发效率缩短开发周期;

江苏润石科技有限公司
专业模拟器件厂家,代表产品运算放大器(运放)全面兼容Ti、Microchip、圣邦微等品牌;


成都盛芯微科技有限公司

BLE蓝牙专业,代表型号SYD8811、SYD8821全面兼容NORDIC

欢迎来电咨询、索样:

TEL:0755-83764413   
QQ: 1529637660

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

103

帖子

2

粉丝