MBI5043输出抖动,求建议或驱动代码

2020-03-08 19:22发布

本帖最后由 21ic小管家 于 2017-10-27 14:39 编辑

MCU:STM8S00F3
产生PWM的芯片:MBI5043



下面是驱动代码:

void send_one_data(unsigned char c_ch,unsigned int i_data)
{
        unsigned char i;

        for(i=0;i<15;i++)
        {
                if(i_data&0x8000)
                {
                        SDI_ON();//输出1bit 1
                }
                else
                {
                        SDI_OFF();//输出1bit 0
                }
                CLK_ONOFF();
                i_data=i_data<<1;
        }
        if(c_ch==0)
                LE1_ON();
        else
                LE2_ON();
        if(i_data&0x8000)
        {
                SDI_ON();//输出1bit 1
        }
        else
        {
                SDI_OFF();//输出1bit 0
        }
        CLK_ONOFF();

        if(c_ch==0)
                LE1_OFF();
        else
                LE2_OFF();
}

/******************************************************************************
功能说明:        整体锁栓
输入参数:        无
输出参数:        无
返回值:        无
******************************************************************************/
void lock_data(void)
{
        unsigned char i;

        for(i=0;i<13;i++)
        {
                SDI_OFF();//输出1bit 0
                CLK_ONOFF();
        }
        TIM1_CR1   &= ~(0x01);
        LE1_ON();
        LE2_ON();
        for(i=13;i<16;i++)
        {
                SDI_OFF();//输出1bit 0
                CLK_ONOFF();
        }
        LE1_OFF();
        LE2_OFF();

        _asm("nop");
        _asm("nop");
        
        TIM1_CR1   |= 0x01;
}


下面是测试代码:

void main()
{
        unsigned char i = 0;
        MBI5043init();

        while(1)
        {
                for(i=0;i<16;i++)
                {
                        send_one_data(1,32768);//50%的占空比
                }
                lock_data();
        }
}

按以上的方式测试,输出会抖动

void main()
{
        unsigned char i = 0;
        MBI5043init();
        for(i=0;i<16;i++)
        {
                send_one_data(1,32768);//50%的占空比
        }
        lock_data();
        
        while(1)
        {
               
        }
}

这样输出就不会抖动,所以问题是出在驱动代码中,求大神指教


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
@若水
1楼-- · 2020-03-08 22:47
@21ic小管家 背景怎么会变成这样的?
qq261335460
2楼-- · 2020-03-09 02:14
 精彩回答 2  元偷偷看……
xyz549040622
3楼-- · 2020-03-09 03:57
大概看了看,时序是很简单的,着重检查硬件的问题。输出有抖动是指什么呢?
@若水
4楼-- · 2020-03-09 05:27
xyz549040622 发表于 2017-10-26 14:51
大概看了看,时序是很简单的,着重检查硬件的问题。输出有抖动是指什么呢? ...

用示波器会看到波形抖动,就输出端的波形,电脑上传不了图片,没办法给你看
l836455032
5楼-- · 2020-03-09 09:39
我也在调试mbi5043,都好几天了,驱动还是没有调通。我看手册的时序不是太清楚。5043是CLK上升沿加载数据还是下降沿加载。就是没有波形呢
Jacobli
6楼-- · 2020-03-09 10:57
最近也是在调试MBI5043,时序照着手册写的,但就是没有信号输出,楼主能发我一份驱动代码学习一下么

一周热门 更多>