Advertisement
mamuesp

Read-GRAM

Aug 6th, 2018
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. #define LINE_SIZE 320
  2.  
  3. struct mgos_col_rgb *mgos_ili9341_read_line_rgb(int16_t w, int16_t y) {
  4.   static struct mgos_col_rgb pixBuf[LINE_SIZE];
  5.   uint8_t pixChar;
  6.   size_t bufSize = LINE_SIZE * sizeof(struct mgos_col_rgb);
  7.   int x0, x1, y0, y1;
  8.  
  9.   x0 = 0;
  10.   x1 = w - 1;
  11.   y0 = y;
  12.   y1 = y + 1;
  13.  
  14.   mgos_ili9341_spi_write8_cmd(ILI9341_CASET); // Column addr set
  15.   mgos_ili9341_spi_write8(x0 >> 8);
  16.   mgos_ili9341_spi_write8(x0 & 0xFF);         // XSTART
  17.   mgos_ili9341_spi_write8(x1 >> 8);
  18.   mgos_ili9341_spi_write8(x1 & 0xFF);         // XEND
  19.   mgos_ili9341_spi_write8_cmd(ILI9341_PASET); // Row addr set
  20.   mgos_ili9341_spi_write8(y0 >> 8);
  21.   mgos_ili9341_spi_write8(y0 & 0xFF);         // YSTART
  22.   mgos_ili9341_spi_write8(y1 >> 8);
  23.   mgos_ili9341_spi_write8(y1 & 0xFF);         // YEND
  24.   mgos_ili9341_spi_write8_cmd(ILI9341_RAMRD); // read from RAM
  25.  
  26.   mgos_gpio_write(mgos_sys_config_get_ili9341_dc_pin(), 1);
  27.  
  28.    //mgos_ili9341_spi_read(&pixChar, 1); //dummy read
  29.   memset(pixBuf, 0xFF, LINE_SIZE * sizeof(struct mgos_col_rgb));
  30.  
  31.   struct mgos_spi *spi = mgos_spi_get_global();
  32.   if (!spi) {
  33.     LOG(LL_ERROR, ("SPI is disabled, set spi.enable=true"));
  34.     return false;
  35.   }
  36.  
  37.   struct mgos_spi_txn txn = {
  38.     .cs   = mgos_sys_config_get_ili9341_cs_index(),
  39.     .mode = SPI_MODE,
  40.     .freq = mgos_sys_config_get_ili9341_spi_freq(),
  41.     .hd.tx_data   = NULL,
  42.     .hd.tx_len    = 0,
  43.     .hd.dummy_len = 1,
  44.     .hd.rx_len    = bufSize,
  45.     .hd.rx_data   = (uint8_t *) pixBuf
  46.   };
  47.  
  48.   if (mgos_spi_run_txn(spi, false, &txn)) {
  49.     LOG(LL_INFO, ("SPI data received, size: <%d>", txn.hd.rx_len));
  50.     return pixBuf;
  51.   } else {
  52.     LOG(LL_INFO, ("Error, no SPI data received!"));
  53.     return NULL;
  54.   }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement