From 8d661093bd85746d98d914dadad2ac8e95971471 Mon Sep 17 00:00:00 2001 From: Zhongeating <1371696226@qq.com> Date: Thu, 20 Nov 2025 08:14:07 +0000 Subject: [PATCH] =?UTF-8?q?spi=E7=89=87=E9=80=89=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/drivers/chips/ws63/porting/spi/spi_porting.c | 2 +- src/drivers/chips/ws63/porting/spi/spi_porting.h | 4 ++-- src/drivers/drivers/hal/spi/v151/hal_spi_v151.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/drivers/chips/ws63/porting/spi/spi_porting.c b/src/drivers/chips/ws63/porting/spi/spi_porting.c index 8d3a009de..ebd51ce65 100755 --- a/src/drivers/chips/ws63/porting/spi/spi_porting.c +++ b/src/drivers/chips/ws63/porting/spi/spi_porting.c @@ -267,7 +267,7 @@ uintptr_t spi_porting_base_addr_get(spi_bus_t index) uint32_t spi_porting_max_slave_select_get(spi_bus_t bus) { unused(bus); - return (uint32_t)SPI_SLAVE0; + return (uint32_t)SPI_SLAVE_MAX_NUM; } void spi_porting_set_device_mode(spi_bus_t bus, spi_mode_t mode) diff --git a/src/drivers/chips/ws63/porting/spi/spi_porting.h b/src/drivers/chips/ws63/porting/spi/spi_porting.h index 5b6f811c6..4f252c4ec 100755 --- a/src/drivers/chips/ws63/porting/spi/spi_porting.h +++ b/src/drivers/chips/ws63/porting/spi/spi_porting.h @@ -64,10 +64,10 @@ typedef enum spi_mode { * @brief SPI slave select. */ typedef enum spi_slave { - SPI_SLAVE0 = 0, /*!< SPI Slave index 0. */ + SPI_SLAVE0 = 1, /*!< SPI Slave index 0. */ SPI_SLAVE1, /*!< SPI Slave index 1. */ SPI_SLAVE_MAX_NUM, - SPI_SLAVE_NONE = SPI_SLAVE_MAX_NUM + SPI_SLAVE_NONE = 0 } spi_slave_t; /** diff --git a/src/drivers/drivers/hal/spi/v151/hal_spi_v151.c b/src/drivers/drivers/hal/spi/v151/hal_spi_v151.c index 25b85d3cf..10c4948cf 100755 --- a/src/drivers/drivers/hal/spi/v151/hal_spi_v151.c +++ b/src/drivers/drivers/hal/spi/v151/hal_spi_v151.c @@ -109,7 +109,7 @@ static bool hal_spi_is_attr_valid(spi_bus_t bus, const hal_spi_attr_t *attr, con /* Only SPI master need to select slave and set clock. */ if (attr->is_slave == 0) { - if (attr->slave_num > spi_porting_max_slave_select_get(bus) + 1) { + if (attr->slave_num >= spi_porting_max_slave_select_get(bus)) { return false; } if (hal_spi_is_attr_freq_valid(attr->freq_mhz, spi_frame_format) != true) { @@ -619,7 +619,7 @@ static errcode_t hal_spi_ctrl_select_slave(spi_bus_t bus, hal_spi_ctrl_id_t id, return ERRCODE_SPI_TIMEOUT; } uint32_t slave = (uint32_t)param; - hal_spi_ser_set_ser(bus, slave); + hal_spi_ser_set_ser(bus, (slave == 0) ? 0 : bit(slave - 1)); g_hal_spi_attrs[bus].slave_num = slave + 1; return ERRCODE_SUCC; -- Gitee