您尚未登录。

#2 Re: 全志 SOC » F1C100S裸奔framebuffer+PWM+GPIO驱动 » 2019-03-04 16:30:40

达克罗德 说:
0752ben 说:

你好,达克罗德。
我的工程替换了71楼的 “完整FB-f1c100s.c文件”,编译成功后,修改pdat->timing.pixel_clock_hz  ,情况是一样的,LCD_CLK硬件引脚就没有信号输出。

启动时PLL_VIDEO时钟只有198MHZ,而全志要求和pixel时钟的倍数必须大于等于4,实际我发现大于等于6才行。所以33Mhz以上TCON时钟工作不正常
需要把PLL video时钟设高一点
把sys_clock.c中

	write32(F1C100S_CCU_BASE + CCU_PLL_VIDEO_CTRL, 0x81004107);

时钟输出=24000000*(0x41+1)/(0x07+1)=198Mhz
改为

	write32(F1C100S_CCU_BASE + CCU_PLL_VIDEO_CTRL, 0x81004103);

时钟输出=24000000*(0x41+1)/(0x03+1)=396Mhz

这时候pixel_clock_hz能设置成更高时钟了


你好,达克罗德,我还是没能调通1280*720分辨率输出。上个月忙起来,就没有时间研究了。请问您接付费外包吗?我的联系方式邮箱 243280383@qq.com

#3 Re: 全志 SOC » F1C100S裸奔framebuffer+PWM+GPIO驱动 » 2019-02-04 20:41:03

你好,达克罗德。
我的工程替换了71楼的 “完整FB-f1c100s.c文件”,编译成功后,修改pdat->timing.pixel_clock_hz  ,情况是一样的,LCD_CLK硬件引脚就没有信号输出。

#4 Re: 全志 SOC » F1C100S裸奔framebuffer+PWM+GPIO驱动 » 2019-02-02 22:39:30

你好,达克罗德
我在修改液framebuffer初始化函数的时候,void fb_f1c100s_init(framebuffer_t * fb)函数中,只要修改了频率参数,  您的代码中 原来pdat->timing.pixel_clock_hz = 33000000 ,只要这个参数一旦修改后,不管是变大还是变小。 F1C100S的LCD_CLK硬件引脚就没有信号输出了。
我尝试了下,查询液晶初始化的其他函数,实在没有发现问题所在。
请问下达克罗德,您的代码从XBOOT中移植出来,是否需要修改什么地方,才可以 实现其他分辨率的刷屏频率。

#5 Re: 全志 SOC » F1C100S裸奔framebuffer+PWM+GPIO驱动 » 2019-01-30 18:16:57

首先感谢楼主的贡献,源码在荔枝派F1C100S板上顺利的跑起来了。
下面有个问题想请教下:
我想修改液晶驱动函数,改成1024*768分辨率,通过VGA驱动15寸液晶屏。
VGA时序参考了 https://www.cnblogs.com/qidaiymm/p/6006039.html ,http://www.docin.com/p-540410877.html   查看了相关的VGA标准时序。修改了液晶初始化函数,但是一直不成功,不知道 除了 VGA的时序需要修改,还有那些参数需要修改?

代码如下:


void fb_f1c100s_init(framebuffer_t * fb)
{
    int32_t i;
    fb_f1c100s_pdata_t * pdat = &fb_f1c100s_pData;

    pdat->virtdefe = phys_to_virt(F1C100S_DEFE_BASE);
    pdat->virtdebe = phys_to_virt(F1C100S_DEBE_BASE);
    pdat->virttcon = phys_to_virt(F1C100S_TCON_BASE);
    pdat->clkdefe = "clkdefe";
    pdat->clkdebe = "clkdebe";
    pdat->clktcon = "clktcon";
    pdat->rstdefe = 46;        //请问这里是是什么参数?
    pdat->rstdebe = 44;        //请问这里是是什么参数?
    pdat->rsttcon = 36;          //请问达克罗德这里是是什么参数?

    pdat->width = 1024;       //分辨率
    pdat->height = 768;

    pdat->pwidth = 136;  //h-pulse-width 水平脉冲宽度
    pdat->pheight = 6;   // v-pulse-width 垂直脉冲宽度

    pdat->bits_per_pixel = 18;
    pdat->bytes_per_pixel = 4;
    pdat->index = 0;
    pdat->vram[0] = dma_alloc_noncoherent(pdat->width * pdat->height * pdat->bytes_per_pixel);
    pdat->vram[1] = dma_alloc_noncoherent(pdat->width * pdat->height * pdat->bytes_per_pixel);

    pdat->timing.pixel_clock_hz = 65000000;  //65MHZ 时钟

 
    pdat->timing.h_front_porch = 24;     //水平前沿值
    pdat->timing.h_back_porch = 160; // //水平后沿值     
    pdat->timing.h_sync_len = 1344;  // 
   
    pdat->timing.v_front_porch = 3;     //垂直前沿值
    pdat->timing.v_back_porch = 29; //垂直后沿值
    pdat->timing.v_sync_len = 806;   
   
    pdat->timing.h_sync_active = false;
    pdat->timing.v_sync_active = false;
    pdat->timing.den_active = false;
    pdat->timing.clk_active = false;
    pdat->backlight = &led_pwm_bl;

    fb->name = "fb-f1c100s";
    fb->width = pdat->width;
    fb->height = pdat->height;
    fb->pwidth = pdat->pwidth;
    fb->pheight = pdat->pheight;
    fb->bpp = pdat->bytes_per_pixel * 8;
    fb->priv = pdat;

    f1c100s_clk_pll_video_set_enable(true);
    f1c100s_clk_debe_init();
    f1c100s_clk_defe_init();
    f1c100s_clk_tcon_init();
    // clk_enable(pdat->clkdefe);
    // clk_enable(pdat->clkdebe);
    // clk_enable(pdat->clktcon);
    f1c100s_clk_defe_enable();
    f1c100s_clk_debe_enable();
    f1c100s_clk_tcon_enable();
    if(pdat->rstdefe >= 0)
        reset_f1c100s_deassert(&reset_2, pdat->rstdefe - reset_2.base);
    if(pdat->rstdebe >= 0)
        reset_f1c100s_deassert(&reset_2, pdat->rstdebe - reset_2.base);
    if(pdat->rsttcon >= 0)
        reset_f1c100s_deassert(&reset_2, pdat->rsttcon - reset_2.base);
    for(i = 0x0800; i < 0x1000; i += 4)
        write32(pdat->virtdebe + i, 0);
    fb_f1c100s_init_hw(pdat);

}

网址的fb-f1c100s.c文件下载  fb-f1c100s.zip

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn