Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define LINE_SIZE 320
- struct mgos_col_rgb *mgos_ili9341_read_line_rgb(int16_t w, int16_t y) {
- static struct mgos_col_rgb pixBuf[LINE_SIZE];
- uint8_t pixChar;
- size_t bufSize = LINE_SIZE * sizeof(struct mgos_col_rgb);
- int x0, x1, y0, y1;
- x0 = 0;
- x1 = w - 1;
- y0 = y;
- y1 = y + 1;
- mgos_ili9341_spi_write8_cmd(ILI9341_CASET); // Column addr set
- mgos_ili9341_spi_write8(x0 >> 8);
- mgos_ili9341_spi_write8(x0 & 0xFF); // XSTART
- mgos_ili9341_spi_write8(x1 >> 8);
- mgos_ili9341_spi_write8(x1 & 0xFF); // XEND
- mgos_ili9341_spi_write8_cmd(ILI9341_PASET); // Row addr set
- mgos_ili9341_spi_write8(y0 >> 8);
- mgos_ili9341_spi_write8(y0 & 0xFF); // YSTART
- mgos_ili9341_spi_write8(y1 >> 8);
- mgos_ili9341_spi_write8(y1 & 0xFF); // YEND
- mgos_ili9341_spi_write8_cmd(ILI9341_RAMRD); // read from RAM
- mgos_gpio_write(mgos_sys_config_get_ili9341_dc_pin(), 1);
- //mgos_ili9341_spi_read(&pixChar, 1); //dummy read
- memset(pixBuf, 0xFF, LINE_SIZE * sizeof(struct mgos_col_rgb));
- struct mgos_spi *spi = mgos_spi_get_global();
- if (!spi) {
- LOG(LL_ERROR, ("SPI is disabled, set spi.enable=true"));
- return false;
- }
- struct mgos_spi_txn txn = {
- .cs = mgos_sys_config_get_ili9341_cs_index(),
- .mode = SPI_MODE,
- .freq = mgos_sys_config_get_ili9341_spi_freq(),
- .hd.tx_data = NULL,
- .hd.tx_len = 0,
- .hd.dummy_len = 1,
- .hd.rx_len = bufSize,
- .hd.rx_data = (uint8_t *) pixBuf
- };
- if (mgos_spi_run_txn(spi, false, &txn)) {
- LOG(LL_INFO, ("SPI data received, size: <%d>", txn.hd.rx_len));
- return pixBuf;
- } else {
- LOG(LL_INFO, ("Error, no SPI data received!"));
- return NULL;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement