Please select To the mobile version | Continue to access the desktop computer version

OrangePi

 Login            
 Register            
Search
Hot search: orangepi
123Next
Return to list New
View: 13777|Reply: 29

5" Display For Raspberry Pi Pi2 Model B+ A+ used for OragePi 2

[Copy link]

1

Threads

23

Posts

172

Credits

Registered member

Rank: 2

Credits
172
Post time 2015-9-10 18:59:15 | Show all posts |Read mode
Edited by Jacaranda at 2015-9-23 13:10

I try to get working 5" Display For Raspberry Pi Pi2 Model B+ A+ with OrangePi2Mini

http://ru.aliexpress.com/item/5- ... 6&shopNumber=427290

But h3 kernel does't support resolution 800x480

I try hacked the sunxi-disp2 hdmi driver as provided there https://github.com/Tinkerforge/r ... fc3364a41d179ca0e04

But no success. Needs rights parameters for  800x480

hdmi_bsp_sun8iw7.c:
  1. static struct para_tab ptbl[] =
  2. {
  3.         {{6                        , 1        , 1,  1,                5,         3,         0,                1,         4,                0,                0,        160,        20,                 38,         124,        240,        22,                0,                0        }},
  4.         {{21                , 11, 1,  1,                5,         3,         1,                1,         2,                0,                0,        160,        32,                 24,         126,        32,                24,                0,                0        }},
  5.         {{2                        , 11, 0,  0,                2,         6,         1,                0,         9,                0,                0,        208,        138,                16,         62,         224,        45,                0,                0        }},
  6.         {{17                , 11, 0,  0,                2,         5,         2,                0,         5,                0,                0,        208,        144,                12,         64,         64,                49,                0,                0        }},
  7.         {{19                , 4        , 0,  96,                5,         5,         2,                2,         5,                1,                0,        0,                188,                184,        40,         208,        30,                1,                1        }},
  8.         {{4                        , 4        , 0,  96,                5,         5,         2,                1,         5,                0,                0,        0,                114,                110,        40,         208,        30,                1,                1        }},
  9.         {{20                , 4        , 0,  97,                7,          5,         4,                2,         2,                2,                0,        128,        208,                16,                44,         56,                22,                1,                1        }},
  10.         {{5                        , 4        , 0,  97,                7,          5,         4,                1,         2,                0,                0,        128,        24,                 88,         44,         56,                22,                1,                1        }},
  11.         {{31                , 2        , 0,  96,                7,          5,         4,                2,         4,                2,                0,        128,        208,                16,                44,         56,         45,                1,                1        }},
  12.         {{16                , 2        , 0,  96,                7,          5,         4,                1,         4,                0,                0,        128,        24,                 88,         44,         56,                45,                1,                1        }},
  13.         {{32                , 4        , 0,  96,                7,          5,         4,                3,         4,                2,                0,        128,        62,                 126,        44,         56,                45,                1,                1        }},
  14.         {{33                , 4        , 0,  0,                7,          5,         4,                2,         4,                2,                0,        128,        208,                16,                44,         56,         45,                1,                1        }},
  15.         {{34                , 4        , 0,  0,                7,          5,         4,                1,         4,                0,                0,        128,        24,                 88,         44,         56,                45,                1,                1        }},
  16.         {{34                , 4        , 0,  0,                7,          5,         4,                1,         4,                0,                0,        128,        24,                 88,         44,         56,                45,                1,                1        }},
  17.         {{35                , 11, 0,  0,                2,         3,         1,                0,         13,        0,                0,        208,        138,                40,         48,         224,        45,                0,                0        }},
  18.         {{160                ,        2        , 0,  96,                7,          5,         8,                3,         4,                2,                0,        128,        62,                 126,        44,         157,        45,                1,                1        }},
  19.         {{147                , 2        , 0,  96,                5,         5,         5,                2,         5,                1,                0,        0,                188,                184,        40,         190,        30,                1,                1        }},
  20.         {{132                , 2        , 0,  96,                5,         5,         5,                1,         5,          0,                0,        0,                114,                110,        40,          160,         30,                1,                1        }},
  21.         {{257                , 1        , 0,  96,                15,        10,         8,                2,         8,                0,                0,        0,                48,                        176,        88,         112,        90,                1,                1        }},
  22.         {{258                , 1        , 0,  96,                15,        10,         8,                5,         8,                4,                0,        0,                160,                32,                88,         112,        90,                1,                1        }},
  23. };
Copy the Code

Any body can help?
or how to set custom hdmi resolutiom  800x480 to hdmi output. this Screen accept only exactly 800x480 res.
Thanks.

1

Threads

23

Posts

172

Credits

Registered member

Rank: 2

Credits
172
 Author| Post time 2015-10-19 11:26:22 | Show all posts
Edited by Jacaranda at 2015-10-19 18:53

You need compile ADS7846 touchscreen as a module.

fex:
  1. [spi0]
  2. spi_used = 1
  3. spi_cs_bitmap = 1
  4. spi_mosi = port:PC00<3><default><default><default>
  5. spi_miso = port:PC01<3><default><default><default>
  6. spi_sclk = port:PC02<3><default><default><default>
  7. spi_cs0 = port:PA21<1><1><default><default>

  8. [spi_devices]
  9. spi_dev_num = 1

  10. [spi_board0]
  11. modalias = "ads7846"
  12. max_speed_hz = 1500000
  13. bus_num = 0
  14. chip_select = 0
  15. mode = 0
  16. full_duplex = 1
  17. manual_cs = 0
Copy the Code


drivers/input/touchscreen/ads7846.c:
  1. diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads
  2. index f02028e..0a3f610 100644
  3. --- a/drivers/input/touchscreen/ads7846.c
  4. +++ b/drivers/input/touchscreen/ads7846.c
  5. @@ -59,6 +59,22 @@
  6. #define TS_POLL_DELAY  1       /* ms delay before the first sample */
  7. #define TS_POLL_PERIOD 5       /* ms delay between samples */

  8. +
  9. +static struct ads7846_platform_data ads7846_chip_info =
  10. +{
  11. +    .gpio_pendown      = 2,
  12. +    .pressure_max      = 255,
  13. +    .x_plate_ohms      = 180,
  14. +    .x_min             = 176,
  15. +    .x_max             = 3913,
  16. +    .y_min             = 300,
  17. +    .y_max             = 3947,
  18. +    .debounce_max      = 10,
  19. +    .debounce_tol      = 3,
  20. +    .debounce_rep      = 1,
  21. +    .keep_vref_on      = 1
  22. +};
  23. +
  24. /* this driver doesn't aim at the peak continuous sample rate */
  25. #define        SAMPLE_BITS     (8 /*cmd*/ + 16 /*sample*/ + 2 /* before, after

  26. @@ -970,6 +986,7 @@ static int __devinit ads7846_setup_pendown(struct spi_device
  27.                 ts->get_pendown_state = pdata->get_pendown_state;
  28.         } else if (gpio_is_valid(pdata->gpio_pendown)) {

  29. +               // try to get gpio for pendown
  30.                 err = gpio_request_one(pdata->gpio_pendown, GPIOF_IN,
  31.                                        "ads7846_pendown");
  32.                 if (err) {
  33. @@ -1197,17 +1214,27 @@ static int __devinit ads7846_probe(struct spi_device *sp
  34.         struct ads7846 *ts;
  35.         struct ads7846_packet *packet;
  36.         struct input_dev *input_dev;
  37. +
  38. +       if (!spi->dev.platform_data) {
  39. +               spi->dev.platform_data = &ads7846_chip_info;
  40. +       }
  41. +
  42.         struct ads7846_platform_data *pdata = spi->dev.platform_data;
  43.         unsigned long irq_flags;
  44.         int err;

  45. -       if (!spi->irq) {
  46. -               dev_dbg(&spi->dev, "no IRQ?\n");
  47. +       if (!pdata) {
  48. +               dev_dbg(&spi->dev, "no platform data?\n");
  49.                 return -ENODEV;
  50.         }

  51. -       if (!pdata) {
  52. -               dev_dbg(&spi->dev, "no platform data?\n");
  53. +       // try to grab irq for pendown
  54. +       if (pdata->gpio_pendown) {
  55. +               spi->irq = gpio_to_irq(pdata->gpio_pendown);
  56. +       }
  57. +
  58. +       if (!spi->irq) {
  59. +               dev_dbg(&spi->dev, "no IRQ?\n");
  60.                 return -ENODEV;
  61.         }

Copy the Code



worked with PA21 - CS0 and PA02 - IRQ pendown.
Need some trics with platform_data, touch worked but no so cool.

1

Threads

23

Posts

172

Credits

Registered member

Rank: 2

Credits
172
 Author| Post time 2015-9-17 15:05:59 | Show all posts
I get stable imge on monitor  hdmi -> dvi monitor to res 800x480 but 5 inch not yet.



This post contains more resources

You have to Login for download or view attachment(s). No Account? Register

x

10

Threads

448

Posts

3851

Credits

Moderator

Rank: 7Rank: 7Rank: 7

Credits
3851
Post time 2015-9-18 05:55:40 | Show all posts
Jacaranda replied at 2015-9-17 08:05
I get stable imge on monitor  hdmi -> dvi monitor to res 800x480 but 5 inch not yet.

Can you share the changes you've made to get 800x480 resolution...

1

Threads

23

Posts

172

Credits

Registered member

Rank: 2

Credits
172
 Author| Post time 2015-9-18 16:14:08 | Show all posts
Edited by Jacaranda at 2015-9-23 14:17

linux-3.4/drivers/video/sunxi/disp2/hdmi/aw/hdmi_bsp_sun8iw7.c:
static struct para_tab ptbl[] =
{
+{{HDMI800_480P        , 11 , 0,  0,                3,         6,         1,                0,         9,                0,                0,  32,   120,                    40,         40,         224,     45,                0,                0        }},

linux-3.4/drivers/video/sunxi/disp2/hdmi/aw/hdmi_core.c
disp_video_timings video_timing[] =
{
+{HDMI800_480P,       0,27000000,  0,  800,   480,   920,  40,   40,   40,  525,   30,  9,  6,  0,   0,   0,   0,   0},

/linux-3.4/drivers/video/sunxi/disp2/hdmi/hdmi_hal.h:
+#define HDMI800_480P                35

/lichee/linux-3.4/include/video/sunxi_display2.h

+        DISP_TV_MOD_800_480P                    = 0x1f, // mode 31
m        DISP_TV_MODE_NUM                = 0x20,
}disp_tv_mode;

linux-3.4/drivers/video/sunxi/disp2/hdmi/drv_hdmi.c:
static struct disp_hdmi_mode hdmi_mode_tbl[] = {
+        {DISP_TV_MOD_800_480P,            HDMI800_480P,      },


1

Threads

23

Posts

172

Credits

Registered member

Rank: 2

Credits
172
 Author| Post time 2015-9-18 16:16:30 | Show all posts
Edited by Jacaranda at 2015-9-18 16:20

My monitor work but 5inch TFT not : ( and i don't know why.
TFT panel specification : http://www.adafruit.com/datasheets/KD50G21-40NT-A1.pdf
Digital reciver tfp401 specification http://www.adafruit.com/datasheets/tfp401.pdf

1

Threads

23

Posts

172

Credits

Registered member

Rank: 2

Credits
172
 Author| Post time 2015-9-23 14:06:57 | Show all posts

I get image on TFT on wrong parametrs i think. On hdmi tv and hdmi monitor work propertly but not on TFT some colors are missing




Last need worked xpt2046 input driver for touchscreen.

This post contains more resources

You have to Login for download or view attachment(s). No Account? Register

x

1

Threads

23

Posts

172

Credits

Registered member

Rank: 2

Credits
172
 Author| Post time 2015-9-23 15:16:25 | Show all posts
Edited by Jacaranda at 2015-9-24 12:34

Parameters when tft work is:

static struct para_tab ptbl[] =
{
// mx = x>>8
// my = y>>8
// mhbw = horisontal blanking width >> 8
// mhfp = horisontal front porch >> 8
      // vic                             dclk  int                  mx       vst       my               mhbw   vfp             mhfp                 +x      +hbw                  +hfp         hst           +y      vbw          h polarity          v polarity
+{{HDMI800_480P        , 11 , 0,  0,                1,         3,         3,                0,         13,                0,                0,  208,   36,                    40,         40,         208,     16,                0,                0        }},

disp_video_timings video_timing[] =
+{HDMI800_480P,       0,27000000,  0,  800,   480,   976,  88,   40,   48,  528,   32,  13,  3,  0,   0,   0,   0,   0},

1

Threads

23

Posts

172

Credits

Registered member

Rank: 2

Credits
172
 Author| Post time 2015-10-13 16:44:49 | Show all posts
get worked ads7846 touch through spi

10

Threads

448

Posts

3851

Credits

Moderator

Rank: 7Rank: 7Rank: 7

Credits
3851
Post time 2015-10-17 21:30:46 | Show all posts
Edited by loboris at 2015-10-17 14:34
Jacaranda replied at 2015-10-13 09:44
get worked ads7846 touch through spi

Thank you for your work.
I've got my 5" hdmi display working perfectly using your timing values (slightly changed) and enabling dvi in  fex, added in [hdmi_para] section:
  1. hdcp_enable                = 0
  2. hdmi_cts_compatibility = 1
Copy the Code
I have included it in my script.bin building script and it now works great in all my images.
The script.bin working with 5" LCD and probably also with the 7" one too (script.bin.OPI-<board>_480p_dvi), is included in scriptbin_kernel.tar.gz on  Mega  or Google Drive

I had no time to work on touch drivers yet, could you, please, share more details about how you've got it working (sources, compiled drivers, building instructions, ...), I would include it in my images also.

1

Threads

23

Posts

172

Credits

Registered member

Rank: 2

Credits
172
 Author| Post time 2015-10-19 11:06:42 | Show all posts
Wow thank you very much, can you share timig changes ?) thanks. Later i give driver code changes and fex.
You have to log in before you can reply Login | Register

Points Rules

Archiver|Mobile edition|Darkroom|OrangePi En ( 粤ICP备14086627号-2

2019-9-23 09:08 GMT+8 , Processed in 0.041836 second(s), 24 queries .

Powered by Discuz! X3.2

© 2014-2015 orangepibbs en.

Quick Reply To Top Return to the list