hardware-spi
硬件 SPI API。
详细描述
RP 系列微控制器拥有 2 个相同的串行外设接口(SPI)控制器实例。
PrimeCell SSP 是用于与具有 Motorola SPI、National Semiconductor Microwire 或 Texas Instruments 同步串行接口的外设进行同步串行通信的主设备或从设备接口。
可使用 spi_set_slave 函数将控制器定义为主设备或从设备。
每个控制器可连接到多个 GPIO 引脚,有关更多信息,请参阅数据手册中的 GPIO 功能选择表。
宏
#define spi0 ((spi_inst_t **)spi0_hw)<br/> *#define spi1 ((spi_inst_t **)spi1_hw)#define SPI_NUM(spi)#define SPI_INSTANCE(num)#define SPI_DREQ_NUM(spi, is_tx)#define SPI_IS_INSTANCE(spi)#define SPI_RESET_NUM(spi)
枚举
enum spi_cpha_t { SPI_CPHA_0 = 0, SPI_CPHA_1 = 1 }: SPI CPHA(时钟相位)值枚举。enum spi_cpol_t { SPI_CPOL_0 = 0, SPI_CPOL_1 = 1 }: SPI CPOL(时钟极性)值枚举。enum spi_order_t { SPI_LSB_FIRST = 0, SPI_MSB_FIRST = 1 }: SPI 位序值枚举。
函数
uint spi_init (spi_inst_t *spi, uint baudrate)
初始化 SPI 实例。
void spi_deinit (spi_inst_t *spi)
取消初始化 SPI 实例。
uint spi_set_baudrate (spi_inst_t *spi, uint baudrate)
设置 SPI 波特率。
uint spi_get_baudrate (const spi_inst_t *spi)
获取 SPI 波特率。
static uint spi_get_index (const spi_inst_t *spi)
将 SPI 实例转换为硬件实例编号。
static spi_inst_t * spi_get_instance (uint num)
通过实例编号获取 SPI 实例。
static void spi_set_format (spi_inst_t *spi, uint data_bits, spi_cpol_t cpol, spi_cpha_t cpha, __unused spi_order_t order)
配置 SPI。
static void spi_set_slave (spi_inst_t *spi, bool slave)
设置 SPI 主/从模式。
static bool spi_is_writable (const spi_inst_t *spi)
检查是否可以向 SPI 设备写入。
static bool spi_is_readable (const spi_inst_t *spi)
检查是否可以从 SPI 设备读取。
static bool spi_is_busy (const spi_inst_t *spi)
检查 SPI 是否忙碌。
int spi_write_read_blocking (spi_inst_t **spi, const uint8_t **src, uint8_t *dst, size_t len)
向/从 SPI 设备写入/读取。
int spi_write_blocking (spi_inst_t **spi, const uint8_t **src, size_t len)
向 SPI 设备写入,阻塞。
int spi_read_blocking (spi_inst_t **spi, uint8_t repeated_tx_data, uint8_t **dst, size_t len)
从 SPI 设备读取。
int spi_write16_read16_blocking (spi_inst_t **spi, const uint16_t **src, uint16_t *dst, size_t len)
向/从 SPI 设备写入/读取半字。
int spi_write16_blocking (spi_inst_t **spi, const uint16_t **src, size_t len)
向 SPI 设备写入。
int spi_read16_blocking (spi_inst_t **spi, uint16_t repeated_tx_data, uint16_t **dst, size_t len)
从 SPI 设备读取。
static uint spi_get_dreq (spi_inst_t *spi, bool is_tx)
返回用于调节特定 SPI 实例传输速率的 DREQ。
宏定义文档
spi0
#define spi0 ((spi_inst_t *)spi0_hw)
第一个(SPI 0)硬件 SPI 实例的标识符(用于 SPI 函数)。
例如:spi_init(spi0, 48000)
spi1
#define spi1 ((spi_inst_t *)spi1_hw)
第二个(SPI 1)硬件 SPI 实例的标识符(用于 SPI 函数)。
例如:spi_init(spi1, 48000)
SPI_NUM
#define SPI_NUM(spi)
返回 SPI 实例的 SPI 编号。
注意:此宏旨在在编译时解析,不进行参数检查。