# lv_ft81x.h (/api/drivers/display/ft81x/lv_ft81x_h)



<ApiSummary functions="2" enums="1" structs="1" typedefs="1" />

Functions [#functions]

<ApiTabs items="[&#x22;Getters (1)&#x22;,&#x22;Other (1)&#x22;]">
  <ApiTab value="Getters (1)">
    <ApiMember kind="function" name="lv_ft81x_get_user_data" file="drivers/display/ft81x/lv_ft81x.h" line="82" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/drivers/display/ft81x/lv_ft81x.h#L82">
      lv_ft81x_get_user_data [#lv_ft81x_get_user_data]

      Get the `user_data` parameter that was passed to `lv_ft81x_create`. Useful in the SPI callback.

      ```c title=" " lineNumbers=1
      void * lv_ft81x_get_user_data(lv_display_t *disp)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name   | Type                                                     | Description                  |
      | ------ | -------------------------------------------------------- | ---------------------------- |
      | `disp` | <ApiLink name="lv_display_t" display="lv_display_t *" /> | pointer to the ft81x display |

      **Returns:** `void *` — the `user_data` pointer
    </ApiMember>
  </ApiTab>

  <ApiTab value="Other (1)">
    <ApiMember kind="function" name="lv_ft81x_create" file="drivers/display/ft81x/lv_ft81x.h" line="74" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/drivers/display/ft81x/lv_ft81x.h#L74">
      lv_ft81x_create [#lv_ft81x_create]

      Create a framebuffer-based ft81x driver display.

      ```c title=" " lineNumbers=1
      lv_display_t * lv_ft81x_create(const lv_ft81x_parameters_t *params, void *partial_buf, uint32_t buf_size, lv_ft81x_spi_cb_t spi_cb, void *user_data)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name          | Type                                                                             | Description                                                                  |
      | ------------- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
      | `params`      | <ApiLink name="lv_ft81x_parameters_t" display="const lv_ft81x_parameters_t *" /> | pointer to a struct of display panel properties. does not need to be static. |
      | `partial_buf` | `void *`                                                                         | a single partial buffer                                                      |
      | `buf_size`    | <ApiLink name="uint32_t" />                                                      | size of the partial buffer                                                   |
      | `spi_cb`      | <ApiLink name="lv_ft81x_spi_cb_t" />                                             | a callback called by the driver to perform SPI operations                    |
      | `user_data`   | `void *`                                                                         | use `lv_ft81x_get_user_data` to get this pointer inside the SPI callback     |

      **Returns:** <ApiLink name="lv_display_t" display="lv_display_t *" /> — pointer to the display
    </ApiMember>
  </ApiTab>
</ApiTabs>

Enums [#enums]

<ApiMember kind="enum" name="lv_ft81x_spi_operation_t" file="drivers/display/ft81x/lv_ft81x.h" line="51" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/drivers/display/ft81x/lv_ft81x.h#L51">
  lv_ft81x_spi_operation_t [#lv_ft81x_spi_operation_t]

  | Name                                 |
  | ------------------------------------ |
  | `LV_FT81X_SPI_OPERATION_CS_ASSERT`   |
  | `LV_FT81X_SPI_OPERATION_CS_DEASSERT` |
  | `LV_FT81X_SPI_OPERATION_SEND`        |
  | `LV_FT81X_SPI_OPERATION_RECEIVE`     |
</ApiMember>

Structs [#structs]

<ApiMember kind="struct" name="lv_ft81x_parameters_t">
  lv_ft81x_parameters_t [#lv_ft81x_parameters_t]

  | Member        | Type                        | Description                                                                                |
  | ------------- | --------------------------- | ------------------------------------------------------------------------------------------ |
  | `hor_res`     | <ApiLink name="uint16_t" /> | active display width                                                                       |
  | `ver_res`     | <ApiLink name="uint16_t" /> | active display height                                                                      |
  | `hcycle`      | <ApiLink name="uint16_t" /> | total number of clocks per line, incl front/back porch                                     |
  | `hoffset`     | <ApiLink name="uint16_t" /> | start of active line                                                                       |
  | `hsync0`      | <ApiLink name="uint16_t" /> | start of horizontal sync pulse                                                             |
  | `hsync1`      | <ApiLink name="uint16_t" /> | end of horizontal sync pulse                                                               |
  | `vcycle`      | <ApiLink name="uint16_t" /> | total number of lines per screen, including pre/post                                       |
  | `voffset`     | <ApiLink name="uint16_t" /> | start of active screen                                                                     |
  | `vsync0`      | <ApiLink name="uint16_t" /> | start of vertical sync pulse                                                               |
  | `vsync1`      | <ApiLink name="uint16_t" /> | end of vertical sync pulse                                                                 |
  | `swizzle`     | <ApiLink name="uint8_t" />  | FT8xx output to LCD - pin order                                                            |
  | `pclkpol`     | <ApiLink name="uint8_t" />  | LCD data is clocked in on this PCLK edge                                                   |
  | `cspread`     | <ApiLink name="uint8_t" />  | helps with noise, when set to 1 fewer signals are changed simultaneously, reset-default: 1 |
  | `pclk`        | <ApiLink name="uint8_t" />  | 60MHz / pclk = pclk frequency                                                              |
  | `has_crystal` | <ApiLink name="bool" />     | has an external clock crystal                                                              |
  | `is_bt81x`    | <ApiLink name="bool" />     | is a BT series model, not FT                                                               |
</ApiMember>

<TypeUsedBy name="lv_ft81x_parameters_t" count="1">
  * `lv_ft81x_create` — param `params`
</TypeUsedBy>

Typedefs [#typedefs]

<ApiMember kind="typedef" name="lv_ft81x_spi_cb_t" file="drivers/display/ft81x/lv_ft81x.h" line="58" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/drivers/display/ft81x/lv_ft81x.h#L58">
  lv_ft81x_spi_cb_t [#lv_ft81x_spi_cb_t]

  ```c title=" " lineNumbers=1
  typedef void(* lv_ft81x_spi_cb_t) (lv_display_t *disp, lv_ft81x_spi_operation_t operation, void *data, uint32_t length)
  ```
</ApiMember>

<TypeUsedBy name="lv_ft81x_spi_cb_t" count="1">
  * `lv_ft81x_create` — param `spi_cb`
</TypeUsedBy>

Dependencies [#dependencies]

<FileIncludes includes="[&#x22;lv_conf_internal.h&#x22;, &#x22;lv_display.h&#x22;]" includedBy="[&#x22;lv_drivers.h&#x22;]" transitiveIncludes="[&#x22;lv_area.h&#x22;, &#x22;lv_array.h&#x22;, &#x22;lv_assert.h&#x22;, &#x22;lv_color.h&#x22;, &#x22;lv_color_op.h&#x22;, &#x22;lv_conf_kconfig.h&#x22;, &#x22;lv_event.h&#x22;, &#x22;lv_ll.h&#x22;, &#x22;lv_log.h&#x22;, &#x22;lv_math.h&#x22;, &#x22;lv_mem.h&#x22;, &#x22;lv_palette.h&#x22;, &#x22;lv_string.h&#x22;, &#x22;lv_tick.h&#x22;, &#x22;lv_timer.h&#x22;, &#x22;lv_types.h&#x22;]" />
