summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormengplus <[email protected]>2023-11-21 18:27:24 +0800
committerMeco Man <[email protected]>2023-11-23 09:05:45 -0500
commit0396b52db046d715022f2e29b0ef923d8413171e (patch)
tree3b3a53e38941ca43051139edf7ffcdca11f22ef8
parent5a438c818aefb2e314cce2c16a024aaf6ff97234 (diff)
fix(spi):多个SPI公用一个ops.data
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.c5
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.h1
2 files changed, 4 insertions, 2 deletions
diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.c b/bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.c
index eadf5eb4f3..fae3841a6f 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.c
+++ b/bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.c
@@ -209,11 +209,12 @@ int rt_hw_softspi_init(void)
for (int i = 0; i < obj_num; i++)
{
- stm32_soft_spi_ops.data = (void *)&soft_spi_config[i];
+ memcpy(&spi_obj[i].ops, &stm32_soft_spi_ops, sizeof(struct rt_spi_bit_ops));
+ spi_obj[i].ops.data = (void *)&soft_spi_config[i];
spi_obj[i].spi.ops = &stm32_soft_spi_ops;
spi_obj[i].cfg = (void *)&soft_spi_config[i];
stm32_spi_gpio_init(&spi_obj[i]);
- result = rt_spi_bit_add_bus(&spi_obj[i].spi, soft_spi_config[i].bus_name, &stm32_soft_spi_ops);
+ result = rt_spi_bit_add_bus(&spi_obj[i].spi, soft_spi_config[i].bus_name, &spi_obj[i].ops);
RT_ASSERT(result == RT_EOK);
}
diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.h b/bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.h
index 9f70d61562..d6415875e8 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.h
+++ b/bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.h
@@ -28,6 +28,7 @@ struct stm32_soft_spi_config
struct stm32_soft_spi
{
struct rt_spi_bit_obj spi;
+ struct rt_spi_bit_ops ops;
struct stm32_soft_spi_config *cfg;
};