spi-bit-ops.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) 2006-2023, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2021-10-11 kyle first version
  9. * 2022-6-14 solar Remove the const attribute of private data in ops
  10. */
  11. #ifndef __SPI_BIT_OPS_H__
  12. #define __SPI_BIT_OPS_H__
  13. #include <rtdevice.h>
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. struct rt_spi_bit_ops
  18. {
  19. void *data; /* private data for lowlevel routines */
  20. void (*const pin_init)(void);
  21. void (*const tog_sclk)(void *data);
  22. void (*const set_sclk)(void *data, rt_int32_t state);
  23. void (*const set_mosi)(void *data, rt_int32_t state);
  24. void (*const set_miso)(void *data, rt_int32_t state);
  25. rt_int32_t (*const get_sclk)(void *data);
  26. rt_int32_t (*const get_mosi)(void *data);
  27. rt_int32_t (*const get_miso)(void *data);
  28. void (*const dir_mosi)(void *data, rt_int32_t state);
  29. void (*const dir_miso)(void *data, rt_int32_t state);
  30. void (*const udelay)(rt_uint32_t us);
  31. rt_uint32_t delay_us; /* sclk, mosi and miso line delay */
  32. };
  33. struct rt_spi_bit_obj
  34. {
  35. struct rt_spi_bus bus;
  36. struct rt_spi_bit_ops *ops;
  37. struct rt_spi_configuration config;
  38. };
  39. rt_err_t rt_spi_bit_add_bus(struct rt_spi_bit_obj *obj,
  40. const char *bus_name,
  41. struct rt_spi_bit_ops *ops);
  42. #ifdef __cplusplus
  43. }
  44. #endif
  45. #endif