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
44
static
void
spi_task
(
xf_task_t
task
);
45
46
/* ==================== [Static Variables] ================================== */
47
48
static
bool
is_next
=
false
;
49
50
/* ==================== [Macros] ============================================ */
51
52
/* ==================== [Global Functions] ================================== */
53
54
void
xf_main
(
void
)
55
{
56
xf_hal_spi_gpio_t
spi_io_cfg = {
57
.
mosi_num
=
DEFAULT_SPI_MOSI_IO_NUM
,
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
65
xf_hal_spi_init
(
DEFAULT_SPI_NUM
,
DEFAULT_SPI_ROLE
,
DEFAULT_SPEED
);
66
xf_hal_spi_set_gpio
(
DEFAULT_SPI_NUM
, &spi_io_cfg);
67
xf_hal_spi_set_mode
(
DEFAULT_SPI_NUM
,
DEFAULT_SPI_SAMPLE_MODE
);
68
xf_hal_spi_enable
(
DEFAULT_SPI_NUM
);
69
70
xf_ttask_create_loop
(
spi_task
, NULL,
TASK_PRIORITY
,
TASK_DELAY_MS
);
71
}
72
73
/* ==================== [Static Functions] ================================== */
74
75
static
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
}
xf_main
void xf_main(void)
Definition
xf_main.c:28
XF_HAL_GPIO_NUM_NONE
#define XF_HAL_GPIO_NUM_NONE
无效 gpio 序号定义。
Definition
xf_hal_gpio.h:37
xf_hal_spi_enable
xf_err_t xf_hal_spi_enable(xf_spi_num_t spi_num)
spi 启用函数。
Definition
xf_hal_spi.c:92
xf_hal_spi_set_mode
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
xf_hal_spi_write
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_hal_spi_set_gpio
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
xf_hal_spi_read
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_hal_spi_init
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
xf_ttask_create_loop
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
TAG
#define TAG
Definition
xf_main.c:24
TASK_DELAY_MS
#define TASK_DELAY_MS
Definition
xf_main.c:27
TASK_PRIORITY
#define TASK_PRIORITY
Definition
xf_main.c:26
spi_task
static void spi_task(xf_task_t task)
Definition
xf_main.c:75
DEFAULT_SPI_NUM
#define DEFAULT_SPI_NUM
Definition
xf_main.c:27
DEFAULT_SPI_ROLE
#define DEFAULT_SPI_ROLE
Definition
xf_main.c:26
DEFAULT_SPI_CS_IO_NUM
#define DEFAULT_SPI_CS_IO_NUM
Definition
xf_main.c:33
DEFAULT_SPI_MISO_IO_NUM
#define DEFAULT_SPI_MISO_IO_NUM
Definition
xf_main.c:31
DEFAULT_SPI_SAMPLE_MODE
#define DEFAULT_SPI_SAMPLE_MODE
Definition
xf_main.c:28
DEFAULT_SPI_MOSI_IO_NUM
#define DEFAULT_SPI_MOSI_IO_NUM
Definition
xf_main.c:30
DEFAULT_SPI_SCLK_IO_NUM
#define DEFAULT_SPI_SCLK_IO_NUM
Definition
xf_main.c:32
is_next
static bool is_next
Definition
xf_main.c:48
DEFAULT_SPEED
#define DEFAULT_SPEED
Definition
xf_main.c:24
_xf_hal_spi_gpio_t
spi 的引脚设置。
Definition
xf_hal_spi.h:143
_xf_hal_spi_gpio_t::mosi_num
xf_gpio_num_t mosi_num
Definition
xf_hal_spi.h:148
task
static void task(xf_task_t task)
Definition
xf_main.c:45
XF_LOGI
#define XF_LOGI(tag, format,...)
Definition
xf_log_uitls.h:44
xf_task_t
void * xf_task_t
任务句柄。
Definition
xf_task_manager.h:40
UNUSED
#define UNUSED(_x)
Definition
xf_template_source_detail.c:333
生成于 2025年 一月 21日 星期二 17:25:08 , 为 XFusion API使用
1.9.8