Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions bsp/novosns/ns800/libraries/HAL_Drivers/drivers/SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ if GetDepend('BSP_USING_TIM'):

if GetDepend('BSP_USING_SPI'):
src += ['drv_spi.c']

if GetDepend('BSP_USING_I2C'):
src += ['drv_hard_i2c.c']
Comment on lines 28 to +32

group = DefineGroup('HAL_Drivers', src, depend = [''], CPPPATH = path)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@
*
* Change Logs:
* Date Author Notes
* 2024-02-06 Dyyt587 first version
* 2024-04-23 Zeidan Add I2Cx_xx_DMA_CONFIG
* 2024-06-23 wdfk-prog Add H7 hard I2C config
* 2026-06-07 dirtwillfly first version for NS800
*/
#ifndef __I2C_HARD_CONFIG_H__
#define __I2C_HARD_CONFIG_H__
Expand All @@ -18,242 +16,114 @@
extern "C" {
#endif

/* I2C1 default GPIO configuration */
/* GPIO_0 (SDA) -> GPIOA, GPIO_PIN_0 */
/* GPIO_1 (SCL) -> GPIOA, GPIO_PIN_1 */
#ifndef BSP_I2C1_SCL_PIN_NUM
#define BSP_I2C1_SCL_PIN_NUM 1U
#endif
#ifndef BSP_I2C1_SDA_PIN_NUM
#define BSP_I2C1_SDA_PIN_NUM 0U
#endif
#ifndef BSP_I2C1_SCL_PORT
#define BSP_I2C1_SCL_PORT GPIOA
#endif
#ifndef BSP_I2C1_SDA_PORT
#define BSP_I2C1_SDA_PORT GPIOA
#endif
#ifndef BSP_I2C1_SCL_PIN
#define BSP_I2C1_SCL_PIN GPIO_PIN_1
#endif
#ifndef BSP_I2C1_SDA_PIN
#define BSP_I2C1_SDA_PIN GPIO_PIN_0
#endif
#ifndef BSP_I2C1_SCL_ALT_FUNC
#define BSP_I2C1_SCL_ALT_FUNC ALT6_FUNCTION
#endif
#ifndef BSP_I2C1_SDA_ALT_FUNC
#define BSP_I2C1_SDA_ALT_FUNC ALT6_FUNCTION
#endif

/* I2C2 default GPIO configuration */
/* GPIO_34 (SDA) -> GPIOB, GPIO_PIN_2 */
/* GPIO_35 (SCL) -> GPIOB, GPIO_PIN_3 */
#ifndef BSP_I2C2_SCL_PIN_NUM
#define BSP_I2C2_SCL_PIN_NUM 35U
#endif
#ifndef BSP_I2C2_SDA_PIN_NUM
#define BSP_I2C2_SDA_PIN_NUM 34U
#endif
#ifndef BSP_I2C2_SCL_PORT
#define BSP_I2C2_SCL_PORT GPIOB
#endif
#ifndef BSP_I2C2_SDA_PORT
#define BSP_I2C2_SDA_PORT GPIOB
#endif
#ifndef BSP_I2C2_SCL_PIN
#define BSP_I2C2_SCL_PIN GPIO_PIN_3
#endif
#ifndef BSP_I2C2_SDA_PIN
#define BSP_I2C2_SDA_PIN GPIO_PIN_2
#endif
#ifndef BSP_I2C2_SCL_ALT_FUNC
#define BSP_I2C2_SCL_ALT_FUNC ALT6_FUNCTION
#endif
#ifndef BSP_I2C2_SDA_ALT_FUNC
#define BSP_I2C2_SDA_ALT_FUNC ALT6_FUNCTION
#endif

#ifdef BSP_USING_HARD_I2C1
#ifndef BSP_I2C1_BAUDRATE
#define BSP_I2C1_BAUDRATE 100000
#endif

#ifndef I2C1_BUS_CONFIG
#define I2C1_BUS_CONFIG \
{ \
.Instance = I2C1, \
.timing = 0x307075B1, \
.timeout = 1000, \
.name = "hwi2c1", \
.evirq_type = I2C1_EV_IRQn, \
.erirq_type = I2C1_ER_IRQn, \
#define I2C1_BUS_CONFIG \
{ \
.name = "hwi2c1", \
.Instance = I2C1, \
.baudrate = BSP_I2C1_BAUDRATE, \
.timeout = 1000, \
.irq_type = I2C1_MST_IRQn, \
.scl_pin_num = BSP_I2C1_SCL_PIN_NUM, \
.sda_pin_num = BSP_I2C1_SDA_PIN_NUM, \
.scl_port = BSP_I2C1_SCL_PORT, \
.sda_port = BSP_I2C1_SDA_PORT, \
.scl_pin = BSP_I2C1_SCL_PIN, \
.sda_pin = BSP_I2C1_SDA_PIN, \
.scl_alt_func = BSP_I2C1_SCL_ALT_FUNC, \
.sda_alt_func = BSP_I2C1_SDA_ALT_FUNC, \
}
#endif /* I2C1_BUS_CONFIG */
#endif /* BSP_USING_HARD_I2C1 */

#ifdef BSP_I2C1_TX_USING_DMA
#ifndef I2C1_TX_DMA_CONFIG
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
#define I2C1_TX_DMA_CONFIG \
{ \
.dma_rcc = I2C1_TX_DMA_RCC, \
.Instance = I2C1_TX_DMA_INSTANCE, \
.dma_irq = I2C1_TX_DMA_IRQ, \
.channel = I2C1_TX_DMA_CHANNEL \
}
#elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
#define I2C1_TX_DMA_CONFIG \
{ \
.dma_rcc = I2C1_TX_DMA_RCC, \
.Instance = I2C1_TX_DMA_INSTANCE, \
.dma_irq = I2C1_TX_DMA_IRQ, \
.request = DMA_REQUEST_I2C1_TX \
}
#endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
#endif /* I2C1_TX_DMA_CONFIG */
#endif /* BSP_I2C1_TX_USING_DMA */

#ifdef BSP_I2C1_RX_USING_DMA
#ifndef I2C1_RX_DMA_CONFIG
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
#define I2C1_RX_DMA_CONFIG \
{ \
.dma_rcc = I2C1_RX_DMA_RCC, \
.Instance = I2C1_RX_DMA_INSTANCE, \
.dma_irq = I2C1_RX_DMA_IRQ, \
.channel = I2C1_RX_DMA_CHANNEL, \
}
#elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
#define I2C1_RX_DMA_CONFIG \
{ \
.dma_rcc = I2C1_RX_DMA_RCC, \
.Instance = I2C1_RX_DMA_INSTANCE, \
.dma_irq = I2C1_RX_DMA_IRQ, \
.request = DMA_REQUEST_I2C1_RX \
}
#endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
#endif /* I2C1_RX_DMA_CONFIG */
#endif /* BSP_I2C1_RX_USING_DMA */

#ifdef BSP_USING_HARD_I2C2
#ifndef BSP_I2C2_BAUDRATE
#define BSP_I2C2_BAUDRATE 100000
#endif

#ifndef I2C2_BUS_CONFIG
#define I2C2_BUS_CONFIG \
{ \
.Instance = I2C2, \
.timing = 0x307075B1, \
.timeout = 1000, \
.name = "hwi2c2", \
.evirq_type = I2C2_EV_IRQn, \
.erirq_type = I2C2_ER_IRQn, \
#define I2C2_BUS_CONFIG \
{ \
.name = "hwi2c2", \
.Instance = I2C2, \
.baudrate = BSP_I2C2_BAUDRATE, \
.timeout = 1000, \
.irq_type = I2C2_MST_IRQn, \
.scl_pin_num = BSP_I2C2_SCL_PIN_NUM, \
.sda_pin_num = BSP_I2C2_SDA_PIN_NUM, \
.scl_port = BSP_I2C2_SCL_PORT, \
.sda_port = BSP_I2C2_SDA_PORT, \
.scl_pin = BSP_I2C2_SCL_PIN, \
.sda_pin = BSP_I2C2_SDA_PIN, \
.scl_alt_func = BSP_I2C2_SCL_ALT_FUNC, \
.sda_alt_func = BSP_I2C2_SDA_ALT_FUNC, \
}
#endif /* I2C2_BUS_CONFIG */
#endif /* BSP_USING_HARD_I2C2 */

#ifdef BSP_I2C2_TX_USING_DMA
#ifndef I2C2_TX_DMA_CONFIG
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
#define I2C2_TX_DMA_CONFIG \
{ \
.dma_rcc = I2C2_TX_DMA_RCC, \
.Instance = I2C2_TX_DMA_INSTANCE, \
.dma_irq = I2C2_TX_DMA_IRQ, \
.channel = I2C2_TX_DMA_CHANNEL, \
}
#elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
#define I2C2_TX_DMA_CONFIG \
{ \
.dma_rcc = I2C2_TX_DMA_RCC, \
.Instance = I2C2_TX_DMA_INSTANCE, \
.dma_irq = I2C2_TX_DMA_IRQ, \
.request = DMA_REQUEST_I2C2_TX \
}
#endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
#endif /* I2C2_TX_DMA_CONFIG */
#endif /* BSP_I2C2_TX_USING_DMA */

#ifdef BSP_I2C2_RX_USING_DMA
#ifndef I2C2_RX_DMA_CONFIG
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
#define I2C2_RX_DMA_CONFIG \
{ \
.dma_rcc = I2C2_RX_DMA_RCC, \
.Instance = I2C2_RX_DMA_INSTANCE, \
.dma_irq = I2C2_RX_DMA_IRQ, \
.channel = I2C2_RX_DMA_CHANNEL, \
}
#elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
#define I2C2_RX_DMA_CONFIG \
{ \
.dma_rcc = I2C2_RX_DMA_RCC, \
.Instance = I2C2_RX_DMA_INSTANCE, \
.dma_irq = I2C2_RX_DMA_IRQ, \
.request = DMA_REQUEST_I2C2_RX \
}
#endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
#endif /* I2C2_RX_DMA_CONFIG */
#endif /* BSP_I2C2_RX_USING_DMA */

#ifdef BSP_USING_HARD_I2C3
#ifndef I2C3_BUS_CONFIG
#define I2C3_BUS_CONFIG \
{ \
.Instance = I2C3, \
.timing = 0x307075B1, \
.timeout = 1000, \
.name = "hwi2c3", \
.evirq_type = I2C3_EV_IRQn, \
.erirq_type = I2C3_ER_IRQn, \
}
#endif /* I2C3_BUS_CONFIG */
#endif /* BSP_USING_HARD_I2C3 */

#ifdef BSP_I2C3_TX_USING_DMA
#ifndef I2C3_TX_DMA_CONFIG
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
#define I2C3_TX_DMA_CONFIG \
{ \
.dma_rcc = I2C3_TX_DMA_RCC, \
.Instance = I2C3_TX_DMA_INSTANCE, \
.dma_irq = I2C3_TX_DMA_IRQ, \
.channel = I2C3_TX_DMA_CHANNEL, \
}
#elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
#define I2C3_TX_DMA_CONFIG \
{ \
.dma_rcc = I2C3_TX_DMA_RCC, \
.Instance = I2C3_TX_DMA_INSTANCE, \
.dma_irq = I2C3_TX_DMA_IRQ, \
.request = DMA_REQUEST_I2C3_TX \
}
#endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
#endif /* I2C3_TX_DMA_CONFIG */
#endif /* BSP_I2C3_TX_USING_DMA */

#ifdef BSP_I2C3_RX_USING_DMA
#ifndef I2C3_RX_DMA_CONFIG
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
#define I2C3_RX_DMA_CONFIG \
{ \
.dma_rcc = I2C3_RX_DMA_RCC, \
.Instance = I2C3_RX_DMA_INSTANCE, \
.dma_irq = I2C3_RX_DMA_IRQ, \
.channel = I2C3_RX_DMA_CHANNEL, \
}
#elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
#define I2C3_RX_DMA_CONFIG \
{ \
.dma_rcc = I2C3_RX_DMA_RCC, \
.Instance = I2C3_RX_DMA_INSTANCE, \
.dma_irq = I2C3_RX_DMA_IRQ, \
.request = DMA_REQUEST_I2C3_RX \
}
#endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
#endif /* I2C3_RX_DMA_CONFIG */
#endif /* BSP_I2C3_RX_USING_DMA */

#ifdef BSP_USING_HARD_I2C4
#ifndef I2C4_BUS_CONFIG
#define I2C4_BUS_CONFIG \
{ \
.Instance = I2C4, \
.timing = 0x307075B1, \
.timeout = 1000, \
.name = "hwi2c4", \
.evirq_type = I2C4_EV_IRQn, \
.erirq_type = I2C4_ER_IRQn, \
}
#endif /* I2C4_BUS_CONFIG */
#endif /* BSP_USING_HARD_I2C4 */

#ifdef BSP_I2C4_TX_USING_DMA
#ifndef I2C4_TX_DMA_CONFIG
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
#define I2C4_TX_DMA_CONFIG \
{ \
.dma_rcc = I2C4_TX_DMA_RCC, \
.Instance = I2C4_TX_DMA_INSTANCE, \
.dma_irq = I2C4_TX_DMA_IRQ, \
.channel = I2C4_TX_DMA_CHANNEL, \
}
#elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
#define I2C4_TX_DMA_CONFIG \
{ \
.dma_rcc = I2C4_TX_DMA_RCC, \
.Instance = I2C4_TX_DMA_INSTANCE, \
.dma_irq = I2C4_TX_DMA_IRQ, \
.request = DMA_REQUEST_I2C4_TX \
}
#endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
#endif /* I2C4_TX_DMA_CONFIG */
#endif /* BSP_I2C4_TX_USING_DMA */

#ifdef BSP_I2C4_RX_USING_DMA
#ifndef I2C4_RX_DMA_CONFIG
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
#define I2C4_RX_DMA_CONFIG \
{ \
.dma_rcc = I2C4_RX_DMA_RCC, \
.Instance = I2C4_RX_DMA_INSTANCE, \
.dma_irq = I2C4_RX_DMA_IRQ, \
.channel = I2C4_RX_DMA_CHANNEL, \
}
#elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
#define I2C4_RX_DMA_CONFIG \
{ \
.dma_rcc = I2C4_RX_DMA_RCC, \
.Instance = I2C4_RX_DMA_INSTANCE, \
.dma_irq = I2C4_RX_DMA_IRQ, \
.request = DMA_REQUEST_I2C4_RX \
}
#endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
#endif /* I2C4_RX_DMA_CONFIG */
#endif /* BSP_I2C4_RX_USING_DMA */


#ifdef __cplusplus
}
#endif

#endif /*__I2C_HARD_CONFIG_H__ */

#endif /* __I2C_HARD_CONFIG_H__ */
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ extern "C" {

#if defined(SOC_SERIES_NS800RT7)
#include "rt7/uart_config.h"
#include "rt7/i2c_hard_config.h"

#endif

Expand Down
Loading
Loading