spi_sample.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. * 2022-07-19 Rbbb666 first version
  9. */
  10. #include "board.h"
  11. #if defined(BSP_USING_SPI3_SAMPLE)
  12. #include <drv_spi.h>
  13. #define SPI_NAME "spi30"
  14. static struct rt_spi_device *spi_dev = RT_NULL;
  15. /* attach spi5 device */
  16. static int rt_spi_device_init(void)
  17. {
  18. struct rt_spi_configuration cfg;
  19. rt_hw_spi_device_attach("spi3", "spi30", NULL);
  20. cfg.data_width = 8;
  21. cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB | RT_SPI_NO_CS;
  22. cfg.max_hz = 1 *1000 *1000;
  23. spi_dev = (struct rt_spi_device *)rt_device_find(SPI_NAME);
  24. if (RT_NULL == spi_dev)
  25. {
  26. rt_kprintf("spi sample run failed! can't find %s device!\n", SPI_NAME);
  27. return -RT_ERROR;
  28. }
  29. rt_spi_configure(spi_dev, &cfg);
  30. return RT_EOK;
  31. }
  32. INIT_APP_EXPORT(rt_spi_device_init);
  33. /* spi5 loopback mode test case */
  34. static int spi_sample(int argc, char **argv)
  35. {
  36. rt_uint8_t t_buf[8], r_buf[8];
  37. int i = 0;
  38. static struct rt_spi_message msg1;
  39. if (argc != 9)
  40. {
  41. rt_kprintf("Please Usage:\n");
  42. rt_kprintf("spi_sample 1 2 3 4 5 6 7 8\n");
  43. return -RT_ERROR;
  44. }
  45. for (i = 0; i < 8; i++)
  46. {
  47. t_buf[i] = atoi(argv[i+1]);
  48. }
  49. msg1.send_buf = &t_buf;
  50. msg1.recv_buf = &r_buf;
  51. msg1.length = sizeof(t_buf);
  52. msg1.cs_take = 1;
  53. msg1.cs_release = 0;
  54. msg1.next = RT_NULL;
  55. rt_spi_transfer_message(spi_dev, &msg1);
  56. rt_kprintf("spi rbuf : ");
  57. for (i = 0; i < sizeof(t_buf); i++)
  58. {
  59. rt_kprintf("%x ", r_buf[i]);
  60. }
  61. rt_kprintf("\nspi loopback mode test over!\n");
  62. return RT_EOK;
  63. }
  64. MSH_CMD_EXPORT(spi_sample, spi loopback test);
  65. #endif /* BSP_USING_SPI3 */