我对kindle paperwhite的ED060XC3特别感兴趣(我仍然认为那是正确的)。

我找不到免费的数据表。是否可以从kindle固件中对驱动程序进行反向工程?如果可以确定是否可以首先操作它,我打算购买一个与FPGA一起使用的产品。

据我了解,模块本身可能不包含控制器,但我必须实现一个控制器。我的FPGA中的EPD控制器就是这样。

您可以在此处查看屏幕图像:aliexpress

#1 楼

我没有实际答案,但是这里有一些线索。

飞思卡尔i.MX6系列中的一些芯片具有EPD接口: .freescale.com / docs / DOC-93622

我认为信号是在CPU数据表中描述的,而不是协议中描述的。即使对于较旧的设备,当必须使用专用控制器时,其数据表也只能描述控制器,而不能描述面板。

Apollo控制器数据表(第一代,在Sony PRS-500中使用)制成飞利浦(后来PVI)制作:http://openinkpot.org/raw-attachment/wiki/Device/V3/Screen/Apollo_eInk_screen_controller_datasheet.pdf

第二代控制器(Metronome)由E-墨水,但实际上它们使用的是Actel ProASIC3 FPGA,正如我在PRS-505内部照片上看到的那样:

http://www.flickr.com/photos/21729510@N03/2111017270/in / set-72157603454047408

因此,从理论上讲,您可以提取比特流并将其重新存储,或者仅在您自己的FPGA中重用。但是,它仅适用于第一代Vizplex面板,可能不适用于当前面板。

第三代控制器是Epson制造的专用芯片(S1D13521B,代号Broadsheet)。百度有一份来自E-Ink的内部培训的副本,其中描述了一些有关如何使用它进行开发的底层细节(但同样,专家组本身没有太多):

http://wenku.baidu .com / view / 187d53956bec0975f465e245.html

最后,驱动EPD面板比驱动通用LCD还要棘手。因此,除非您对此领域有很好的了解,否则我建议您坚持使用经过验证的解决方案,例如飞思卡尔的芯片或专用控制器。

如果您在高分辨率屏幕上还没死,您可能对以下具有较小分辨率和分段电子墨水屏幕的套件集合感兴趣:

http://www.the-digital-reader.com/2013/05/23/e-ink进入DIY市场/

#2 楼

Kindle基于嵌入式Linux。因此,亚马逊被迫分发源代码。您可能会在此处找到实际的驱动程序源。

您可以在此处找到源。http://www.amazon.com/gp/help/customer/display.html?nodeId = 200203720

评论


嗯://如果他们在用户空间中做到了,虽然你在这里有一个要点。如果他们使用的是EPD控制器,我仍然不知道如何控制LCD。

–cb88
13年5月30日在22:56



总是值得一试...

–烛光
13年5月30日在23:11

#3 楼

Petteri Aimonen已经弄清楚了如何驱动面板,Sprite_tm可以无线显示面板

评论


他使用的面板与ED060XC3不同,但显示界面可能相同。我认为背光可能只是PWM LED。

–cb88
2015年2月17日在23:59

ED060XD4也是更新后的Paperwhite 2屏幕...仅供参考。

–cb88
2015年2月18日0:00

#4 楼

看一下kindle touch的内核源代码(mx50_yoshi.c,请参见此处),在我看来,epd配置,init序列等都已存在。
我只检查了触摸,因为触摸ink似乎成为目前最便宜的(ED060SCG)
代码
static struct fb_videomode e60_v220_mode = {
.name = "E60_V220",
.refresh = 85,
.xres = 800,
#ifdef CONFIG_FRAMEBUFFER_CONSOLE
.yres = 800,
#else
.yres = 600,
#endif
.pixclock = 32000000,
.left_margin = 8,
.right_margin = 166,
.upper_margin = 4,
.lower_margin = 26,
.hsync_len = 20,
.vsync_len = 4,
.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
.flag = 0,
};

static struct fb_videomode e60_v220_wj_mode = {
  .name = "E60_V220_WJ",
  .refresh = 85,
  .xres = 800,
#ifdef CONFIG_FRAMEBUFFER_CONSOLE
.yres = 800,
#else
.yres = 600,
#endif
  .pixclock = 32000000,
  .left_margin = 17,
  .right_margin = 172,
  .upper_margin = 4,
  .lower_margin = 18,
  .hsync_len = 15,
  .vsync_len = 4,
  .sync = 0,
  .vmode = FB_VMODE_NONINTERLACED,
  .flag = 0,
};

static struct mxc_epdc_fb_mode panel_modes[] = {
{
    &e60_v220_wj_mode,
    4,  /* vscan_holdoff */
    10, /* sdoed_width */
    20, /* sdoed_delay */
    10, /* sdoez_width */
    20, /* sdoez_delay */
    425,    /* gdclk_hp_offs */
    20, /* gdsp_offs */
    0,  /* gdoe_offs */
    17, /* gdclk_offs */
    1,  /* num_ce */
},
};

我也在考虑使用imx6 duallite驱动此类面板。

评论


这仅有助于与控制器的软件协议。询问者对电子墨水面板本身的硬件接口(引出线,信号等)感兴趣。

–伊戈尔·斯科钦斯基♦
2014年4月5日在14:17