WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
spi.h
浏览该文件的文档.
1
9#ifndef SPI_H
10#define SPI_H
11
12#include <stdint.h>
13#include "errcode.h"
14#include "hal_spi.h"
15
16#ifdef __cplusplus
17#if __cplusplus
18extern "C" {
19#endif /* __cplusplus */
20#endif /* __cplusplus */
21
36
45
54
62typedef struct spi_dma_config {
63 uint8_t src_width;
72 uint8_t dest_width;
81 uint8_t burst_length;
94 uint8_t priority;
97
116
131
149errcode_t uapi_spi_set_tmod(spi_bus_t bus, hal_spi_trans_mode_t tmod, uint8_t data_frame_num);
150
167
184
201
218
219#if defined(CONFIG_SPI_SUPPORT_MASTER) && (CONFIG_SPI_SUPPORT_MASTER == 1)
236
278errcode_t uapi_spi_master_write(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout);
279
321errcode_t uapi_spi_master_read(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout);
322
365#endif /* CONFIG_SPI_SUPPORT_MASTER */
366
367#if defined(CONFIG_SPI_SUPPORT_SLAVE) && (CONFIG_SPI_SUPPORT_SLAVE == 1)
409errcode_t uapi_spi_slave_write(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout);
410
452errcode_t uapi_spi_slave_read(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout);
453
496#endif /* CONFIG_SPI_SUPPORT_SLAVE */
497
498#if !defined(CONFIG_SPI_SUPPORT_POLL_AND_DMA_AUTO_SWITCH)
499#if defined(CONFIG_SPI_SUPPORT_DMA) && (CONFIG_SPI_SUPPORT_DMA == 1)
518errcode_t uapi_spi_set_dma_mode(spi_bus_t bus, bool en, const spi_dma_config_t *dma_cfg);
519#endif /* CONFIG_SPI_SUPPORT_DMA */
520
521#if defined(CONFIG_SPI_SUPPORT_INTERRUPT) && (CONFIG_SPI_SUPPORT_INTERRUPT == 1)
536typedef void (*spi_tx_callback_t)(const void *buffer, uint32_t length);
537
558typedef void (*spi_rx_callback_t)(const void *buffer, uint32_t length, bool error);
559
579errcode_t uapi_spi_set_irq_mode(spi_bus_t bus, bool irq_en, spi_rx_callback_t rx_callback,
580 spi_tx_callback_t tx_callback);
581#endif /* CONFIG_SPI_SUPPORT_INTERRUPT */
582#endif /* NOT CONFIG_SPI_SUPPORT_POLL_AND_DMA_AUTO_SWITCH */
583
584#if defined(CONFIG_SPI_SUPPORT_LOOPBACK) && (CONFIG_SPI_SUPPORT_LOOPBACK == 1)
600errcode_t uapi_spi_set_loop_back_mode(spi_bus_t bus, bool loopback_en);
601#endif /* CONFIG_SPI_SUPPORT_LOOPBACK */
602
603#if defined(CONFIG_SPI_SUPPORT_CRC) && (CONFIG_SPI_SUPPORT_CRC == 1)
611typedef struct spi_crc_config {
612 uint32_t tx_crc_len;
614 uint32_t rx_crc_len;
616 uint32_t tx_crc_ini;
618 uint32_t rx_crc_ini;
620 uint32_t tx_crc_poly;
622 uint32_t rx_crc_poly;
624 uint32_t tx_crc_xor_out;
626 uint32_t rx_crc_xor_out;
628 bool tx_crc_refin;
630 bool tx_crc_refout;
632 bool rx_crc_refin;
634 bool rx_crc_refout;
636} spi_crc_config_t;
637
645typedef void (*spi_crc_err_callback_t)(spi_bus_t bus);
646
664errcode_t uapi_spi_set_crc_mode(spi_bus_t bus, const spi_crc_config_t *crc_config, spi_crc_err_callback_t cb);
665#endif /* CONFIG_SPI_SUPPORT_CRC */
666
667#if defined(CONFIG_SPI_SUPPORT_LPM)
681errcode_t uapi_spi_suspend(uintptr_t arg);
682
696errcode_t uapi_spi_resume(uintptr_t arg);
697#endif
698
703#ifdef __cplusplus
704#if __cplusplus
705}
706#endif /* __cplusplus */
707#endif /* __cplusplus */
708
709#endif
spi_bus_t
Definition of SPI bus index.
Definition platform_core.h:238
uint32_t errcode_t
Definition of error code.
Definition errcode.h:30
errcode_t uapi_spi_slave_read(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
从主机读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
Definition spi.c:1303
errcode_t uapi_spi_master_write(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
将数据从主机写入到从机。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
Definition spi.c:1083
struct spi_dma_config spi_dma_config_t
SPI DMA配置数据结构定义。
errcode_t uapi_spi_slave_writeread(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
从机写入和读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下两种种传输模式,但是不能在同一bus中同时使用。
Definition spi.c:1347
errcode_t uapi_spi_set_dma_mode(spi_bus_t bus, bool en, const spi_dma_config_t *dma_cfg)
使能/去使能DMA模式下SPI传输。
Definition spi.c:505
errcode_t uapi_spi_set_irq_mode(spi_bus_t bus, bool irq_en, spi_rx_callback_t rx_callback, spi_tx_callback_t tx_callback)
设置是否使用中断模式在主机模式下传输数据。
Definition spi.c:947
hal_spi_xfer_data_t spi_xfer_data_t
SPI传输结构体。
Definition spi.h:53
errcode_t uapi_spi_set_tmod(spi_bus_t bus, hal_spi_trans_mode_t tmod, uint8_t data_frame_num)
设置SPI的传输模式。
Definition spi.c:899
errcode_t uapi_spi_deinit(spi_bus_t bus)
去初始化 SPI。
Definition spi.c:472
errcode_t uapi_spi_master_read(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
从slave读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
Definition spi.c:1173
hal_spi_attr_t spi_attr_t
SPI基本属性定义。
Definition spi.h:35
errcode_t uapi_spi_slave_write(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
从机向主机写入数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
Definition spi.c:1256
errcode_t uapi_spi_get_attr(spi_bus_t bus, spi_attr_t *attr)
读取SPI的基础配置参数。
Definition spi.c:919
errcode_t uapi_spi_select_slave(spi_bus_t bus, spi_slave_t cs)
Master模式下选择需要对通的Slave设备。
Definition spi.c:1064
errcode_t uapi_spi_set_extra_attr(spi_bus_t bus, spi_extra_attr_t *extra_attr)
设置SPI的高级配置参数。
Definition spi.c:928
errcode_t uapi_spi_set_attr(spi_bus_t bus, spi_attr_t *attr)
设置SPI的基础配置参数。
Definition spi.c:910
errcode_t uapi_spi_get_extra_attr(spi_bus_t bus, spi_extra_attr_t *extra_attr)
读取SPI的高级配置参数。
Definition spi.c:937
hal_spi_extra_attr_t spi_extra_attr_t
SPI扩展属性定义。
Definition spi.h:44
void(* spi_rx_callback_t)(const void *buffer, uint32_t length, bool error)
SPI接收数据的回调函数,通过 uapi_spi_set_irq_mode 注册到驱动中。
Definition spi.h:558
errcode_t uapi_spi_init(spi_bus_t bus, spi_attr_t *attr, spi_extra_attr_t *extra_attr)
初始化 SPI。
Definition spi.c:435
errcode_t uapi_spi_master_writeread(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
主机写入和读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下两种种传输模式,但是不能在同一bus中同时使用。
Definition spi.c:1217
void(* spi_tx_callback_t)(const void *buffer, uint32_t length)
SPI发送数据的回调函数,通过 uapi_spi_set_irq_mode 注册到驱动中。
Definition spi.h:536
enum hal_spi_trans_mode hal_spi_trans_mode_t
传输模式。
enum spi_slave spi_slave_t
SPI slave select.
SPI基础配置参数定义。
Definition hal_spi.h:397
SPI扩展配置参数定义。
Definition hal_spi.h:464
SPI传输结构体。
Definition hal_spi.h:485
SPI DMA配置数据结构定义。
Definition spi.h:62
uint8_t burst_length
Definition spi.h:81
uint8_t dest_width
Definition spi.h:72
uint8_t src_width
Definition spi.h:63
uint8_t priority
Definition spi.h:94
unsigned int uintptr_t
Definition td_type.h:65
Definition hal_uart_v151_regs_def.h:38