XFusion API v1.3.0
载入中...
搜索中...
未找到
examples/peripherals/spi/spi_slave_half_duplex/main/xf_main.c

xf_hal spi 从机半双工示例。

1
17/* ==================== [Includes] ========================================== */
18
19#include "xf_hal.h"
20#include "xf_task.h"
21
22/* ==================== [Defines] =========================================== */
23
24#define DEFAULT_SPEED (1 * 1000 * 1000)
25
26#define DEFAULT_SPI_ROLE XF_HAL_SPI_HOSTS_SLAVE
27#define DEFAULT_SPI_NUM (0)
28#define DEFAULT_SPI_SAMPLE_MODE XF_HAL_SPI_MODE_0
29
30#define DEFAULT_SPI_MOSI_IO_NUM (9)
31#define DEFAULT_SPI_MISO_IO_NUM (11)
32#define DEFAULT_SPI_SCLK_IO_NUM (7)
33#define DEFAULT_SPI_CS_IO_NUM (10)
34
35#define TASK_PRIORITY 5
36#define TASK_DELAY_MS 2000
37
38#define TAG "example_spi"
39
40/* ==================== [Typedefs] ========================================== */
41
42/* ==================== [Static Prototypes] ================================= */
43
44static void spi_task(xf_task_t task);
45
46/* ==================== [Static Variables] ================================== */
47
48static bool is_next = false;
49
50/* ==================== [Macros] ============================================ */
51
52/* ==================== [Global Functions] ================================== */
53
54void xf_main(void)
55{
56 xf_hal_spi_gpio_t spi_io_cfg = {
58 .miso_num = DEFAULT_SPI_MISO_IO_NUM,
59 .sclk_num = DEFAULT_SPI_SCLK_IO_NUM,
60 .cs_num = DEFAULT_SPI_CS_IO_NUM,
61 .quadhd_num = XF_HAL_GPIO_NUM_NONE,
62 .quadwp_num = XF_HAL_GPIO_NUM_NONE,
63 };
64
69
71}
72
73/* ==================== [Static Functions] ================================== */
74
75static void spi_task(xf_task_t task)
76{
77 UNUSED(task);
78 if (is_next == false) {
79 XF_LOGI(TAG, "SPI slave read ... ...");
80 uint8_t rbuf[32] = {0};
81 int ret = xf_hal_spi_read(DEFAULT_SPI_NUM, rbuf, sizeof(rbuf), 1000);
82 if (ret < 0) {
83 return;
84 }
85 is_next = true;
86 XF_LOGI(TAG, "READ cmpl:%s", rbuf);
87 }
88 if (is_next == true) {
89 XF_LOGI(TAG, "SPI slave write ... ...");
90 uint8_t wbuf[] = "I M SLAVE";
91 int ret = xf_hal_spi_write(DEFAULT_SPI_NUM, wbuf, sizeof(wbuf), 1000);
92 if (ret < 0) {
93 return;
94 }
95 is_next = false;
96 XF_LOGI(TAG, "WRITE CMPL");
97 }
98 return;
99}
void xf_main(void)
Definition xf_main.c:28
#define XF_HAL_GPIO_NUM_NONE
无效 gpio 序号定义。
Definition xf_hal_gpio.h:37
xf_err_t xf_hal_spi_enable(xf_spi_num_t spi_num)
spi 启用函数。
Definition xf_hal_spi.c:92
xf_err_t xf_hal_spi_set_mode(xf_spi_num_t spi_num, xf_hal_spi_mode_t mode)
设置 spi 模式。
Definition xf_hal_spi.c:244
int xf_hal_spi_write(xf_spi_num_t spi_num, const uint8_t *buffer, uint32_t size, uint32_t timeout_ms)
spi 写入数据函数。
Definition xf_hal_spi.c:319
xf_err_t xf_hal_spi_set_gpio(xf_spi_num_t spi_num, const xf_hal_spi_gpio_t *spi_gpio)
设置 spi 的输出 io。
Definition xf_hal_spi.c:194
int xf_hal_spi_read(xf_spi_num_t spi_num, uint8_t *buffer, uint32_t size, uint32_t timeout_ms)
spi 读取数据函数。
Definition xf_hal_spi.c:350
xf_err_t xf_hal_spi_init(xf_spi_num_t spi_num, xf_hal_spi_hosts_t hosts, uint32_t speed)
spi 初始化函数。
Definition xf_hal_spi.c:50
static xf_task_t xf_ttask_create_loop(xf_task_func_t func, void *func_arg, uint16_t priority, uint32_t delay_ms)
在默认的任务管理下,创建 ttask 循环任务。
Definition xf_task.h:162
#define TAG
Definition xf_main.c:24
#define TASK_DELAY_MS
Definition xf_main.c:27
#define TASK_PRIORITY
Definition xf_main.c:26
static void spi_task(xf_task_t task)
Definition xf_main.c:75
#define DEFAULT_SPI_NUM
Definition xf_main.c:27
#define DEFAULT_SPI_ROLE
Definition xf_main.c:26
#define DEFAULT_SPI_CS_IO_NUM
Definition xf_main.c:33
#define DEFAULT_SPI_MISO_IO_NUM
Definition xf_main.c:31
#define DEFAULT_SPI_SAMPLE_MODE
Definition xf_main.c:28
#define DEFAULT_SPI_MOSI_IO_NUM
Definition xf_main.c:30
#define DEFAULT_SPI_SCLK_IO_NUM
Definition xf_main.c:32
static bool is_next
Definition xf_main.c:48
#define DEFAULT_SPEED
Definition xf_main.c:24
spi 的引脚设置。
Definition xf_hal_spi.h:143
xf_gpio_num_t mosi_num
Definition xf_hal_spi.h:148
static void task(xf_task_t task)
Definition xf_main.c:45
#define XF_LOGI(tag, format,...)
void * xf_task_t
任务句柄。
#define UNUSED(_x)