s3c2440液晶屏驱动 (内核自带) linux-4.1.24

发布时间:2023-09-01  

自带有一部分驱动的配置信息,只要修改这部分就能支援 不同的液晶屏 - /arch/arm/mach-s3c24xx/mach-smdk2440.c


另一部分在 /drivers/video/fbdev/s3c2410fb.c


先打开调试功能,这样内核在启动的时候,就可以输出这些信息,或者使用 dmesg 查看到这些信息。当然,你配置内核 make menuconfig 也可以打开,但是太麻烦了,不如这样。


1 #define CONFIG_FB_S3C2410_DEBUG

2    #define dprintk(msg...)

3    do {

4        if (debug)

5           printk(msg);

6    } while (0)

使用新内核启动,出现了调试信息,检查是否有错。


lcdcon[1] = 0x00000778

lcdcon[2] = 0x0743c183

lcdcon[3] = 0x0039df13

lcdcon[4] = 0x00000003

lcdcon[5] = 0x00000b01

LCDSADDR1 = 0x19d20000

LCDSADDR2 = 0x19d3fe00

LCDSADDR3 = 0x000001e0


检查时钟设置是否正确 0x00000778>>8 输出 8 ,应该设为 4

s3c2410fb_activate_var()

clkdiv = DIV_ROUND_UP(s3c2410fb_calc_pixclk(fbi, var->pixclock), 2);

配置是按 HCLK 60M 算的 .pixclock = 166667, /* HCLK 60 MHz, divisor 10 */

s3c2410fb_calc_pixclk() 这个函数里面进行计算。

unsigned long clk = fbi->clk_rate;

unsigned long long div;


/* pixclk is in picoseconds, our clock is in Hz

*

* Hz -> picoseconds is / 10^-12

*/


div = (unsigned long long)clk * pixclk;

div >>= 12; /* div / 2^12 */

do_div(div, 625 * 625UL * 625); /* div / 5^12 */


添加打印出 clk 检查是多少 , 果然是 100M

dprintk("pixclk %ld, divisor is %ld clk %dn", pixclk, (long)div, clk);


return div;


((100000000 * 166667)>>12) / (5**12) = 16


((100000000 * 100000)>>12) / (5**12) = 10


所以 设为 .pixclock = 100000,// HCLK 100M


mach-smdk2440.c 中的修改地方


 1 /* LCD driver info */

 2 

 3 static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {

 4 

 5     .lcdcon5    = S3C2410_LCDCON5_FRM565 |

 6               S3C2410_LCDCON5_INVVLINE |

 7               S3C2410_LCDCON5_INVVFRAME |

 8               S3C2410_LCDCON5_HWSWP,

 9 

10     .type        = S3C2410_LCDCON1_TFT,

11 

12     .width        = 480,

13     .height        = 272,

14 

15     .pixclock    = 100000, /* HCLK 100 MHz, divisor 10 */

16     .xres        = 480,

17     .yres        = 272,

18     .bpp        = 16,

19     .left_margin    = 2,

20     .right_margin    = 2,

21     .hsync_len    = 41,

22     .upper_margin    = 2,

23     .lower_margin    = 2,

24     .vsync_len    = 10,

25 };

26 

27 static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {

28     .displays    = &smdk2440_lcd_cfg,

29     .num_displays    = 1,

30     .default_display = 0,

31 

32     /* currently setup by downloader */

33     .gpccon        = 0xaaaaaaaa,

34     .gpccon_mask    = 0xffffffff,

35 

36     

37     .gpdcon        = 0xaaaaaaaa,

38     .gpdcon_mask    = 0xffffffff,

39 

40     //.lpcsel        = ((0xCE6) & ~7) | 1<<4,

41 };


因为在里面,不能配置 背光 和 POWER EN 。所以还需要在 s3c2410fb.c 中配置


s3c2410fb_init_registers()


 1 modify_gpio(S3C2410_GPCUP,  mach_info->gpcup,  mach_info->gpcup_mask);

 2 modify_gpio(S3C2410_GPCCON, mach_info->gpccon, mach_info->gpccon_mask);

 3 modify_gpio(S3C2410_GPDUP,  mach_info->gpdup,  mach_info->gpdup_mask);

 4 modify_gpio(S3C2410_GPDCON, mach_info->gpdcon, mach_info->gpdcon_mask);

 5 

 6 //背光控制为 GPB0 配置 为输出引脚

 7 writel(1<<0, S3C2410_GPBCON);

 8 //默认打开背光

 9 writel(1<<0, S3C2410_GPBDAT);

10 //配置 GPG4 为 LCD POWER EN

11 writel(3<<8, S3C2410_GPGCON);


参数都是逐个带进去算出来的,这个要看你的液晶屏 datasheet 接线来确定。


最后是试机图:


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    防止电机损坏或者软启动器故障。   显示器件:显示器件用于显示软启动器的工作状态和参数,包括LED灯、液晶显示器等。显示器件可以方便地监测软启动器的运行情况和参数设置,以及故障诊断和维护。   总之,电机......
    时序图 下图显示了指令“分配关断延时定时器参数并启动”的脉冲时序图: 示例 以下示例说明了该指令的工作原理: 如果操作数“TagIn_1”的信号状态从“1”变为“0”,将启动“Timer_1”定时......
    、M、D、L、P 当前时间值(BCD 格式) Q Output BOOL I、Q、M、D、L 定时器的状态 有关有效数据类型的更多信息,请参见“另请参见”。 脉冲时序图 下图显示了指令“分配脉冲定时器参数......
    果差别设备。也就是说,显示器参数低的话,就没有区别了。尽管DVI有自己的优点,可是就支持分辨率这一点,就必然落选。 ......
    数变频器都是复杂的控制设备,包括许多可以微调的参数,以为应用带来更大优势。 01 工业自动化的变频器参数优化 在安装过程中,可以对一些关键的变频器参数进行优化以改善电机运行,但这些参数......
    然下载不进变频器里面。添加完毕后编译无错误,可以下载到G120变频器里,这里可以在“参数”查看变频器参数: 最关键的一步------调试,还是在G120变频器“在线并诊断 ”下面“参数”里: 如果......
    电机通常配备有编码器,用于实时反馈电机的位置和速度信息。如果编码器故障或损坏,可能会导致伺服电机回原点不准。   控制器参数设置不正确:伺服电机的控制器通常需要根据具体应用进行参数设置,如果控制器参数......
    永磁同步电机磁场定向控制转速环PI调节器的参数整定;前言 本章节采用工程设计的方法,推导转速环PI调节器参数的计算公式,由此来设计永磁同步电机磁场定向控制的转速外环PI调节器参数,并通过Matlab......
    器过载的原因有以下几种:(1)负载过重:当负载超过电机设计器定的负载时,电机会发出过载信号,这时变频器就会限制输出电流,以保护电机不受损坏。(2)工作条件不良:比如机器运行环境温度过高、机器加速度过快等。(3)控制器参数......
    电磁噪声:电机在运行时会产生电磁噪声,这种噪声主要是由电机线圈中的电流和电压引起的。当电机转速越高,电磁噪声也会越大。 5.变频器参数设置不当:变频器是用来控制电机速度的设备,因此变频器参数......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>