1.新增ST-SPI驱动。

This commit is contained in:
MacRsh
2023-12-03 19:36:34 +08:00
parent 503b0cf702
commit b3abe5ecff
3 changed files with 31 additions and 25 deletions

View File

@@ -153,6 +153,15 @@ static int drv_i2c_bus_configure(struct mr_i2c_bus *i2c_bus, struct mr_i2c_confi
I2C_AcknowledgeConfig(i2c_bus_data->instance, DISABLE);
}
/* Configure I2C */
I2C_InitStructure.I2C_ClockSpeed = config->baud_rate;
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_16_9;
I2C_InitStructure.I2C_OwnAddress1 = addr;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_Init(i2c_bus_data->instance, &I2C_InitStructure);
I2C_Cmd(i2c_bus_data->instance, state);
/* Configure NVIC */
NVIC_InitStructure.NVIC_IRQChannel = i2c_bus_data->irq;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
@@ -166,15 +175,7 @@ static int drv_i2c_bus_configure(struct mr_i2c_bus *i2c_bus, struct mr_i2c_confi
{
I2C_ITConfig(i2c_bus_data->instance, I2C_IT_EVT, state);
}
/* Configure I2C */
I2C_InitStructure.I2C_ClockSpeed = config->baud_rate;
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_16_9;
I2C_InitStructure.I2C_OwnAddress1 = addr;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_Init(i2c_bus_data->instance, &I2C_InitStructure);
I2C_Cmd(i2c_bus_data->instance, state);
I2C_ClearITPendingBit(i2c_bus_data->instance, I2C_IT_RXNE);
return MR_EOK;
}

View File

@@ -554,6 +554,15 @@ static int drv_serial_configure(struct mr_serial *serial, struct mr_serial_confi
GPIO_Init(serial_data->rx_port, &GPIO_InitStructure);
}
/* Configure UART */
USART_InitStructure.USART_BaudRate = config->baud_rate;
USART_InitStructure.USART_HardwareFlowControl = 0;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(serial_data->instance, &USART_InitStructure);
USART_Cmd(serial_data->instance, state);
USART_ClearFlag(serial_data->instance, USART_FLAG_RXNE);
USART_ClearFlag(serial_data->instance, USART_FLAG_TC);
/* Configure NVIC */
NVIC_InitStructure.NVIC_IRQChannel = serial_data->irq;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
@@ -565,15 +574,8 @@ static int drv_serial_configure(struct mr_serial *serial, struct mr_serial_confi
{
USART_ITConfig(serial_data->instance, USART_IT_TXE, DISABLE);
}
/* Configure UART */
USART_InitStructure.USART_BaudRate = config->baud_rate;
USART_InitStructure.USART_HardwareFlowControl = 0;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(serial_data->instance, &USART_InitStructure);
USART_Cmd(serial_data->instance, state);
USART_ClearFlag(serial_data->instance, USART_FLAG_RXNE);
USART_ClearFlag(serial_data->instance, USART_FLAG_TC);
USART_ClearITPendingBit(serial_data->instance, USART_IT_RXNE);
USART_ClearITPendingBit(serial_data->instance, USART_IT_TXE);
return MR_EOK;
}

View File

@@ -327,6 +327,15 @@ static int drv_spi_bus_configure(struct mr_spi_bus *spi_bus, struct mr_spi_confi
GPIO_Init(spi_bus_data->mosi_port, &GPIO_InitStructure);
}
/* Configure SPI */
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(spi_bus_data->instance, &SPI_InitStructure);
SPI_Cmd(spi_bus_data->instance, state);
SPI_I2S_ClearFlag(spi_bus_data->instance, SPI_I2S_FLAG_RXNE);
SPI_I2S_ClearFlag(spi_bus_data->instance, SPI_I2S_FLAG_TXE);
/* Configure NVIC */
NVIC_InitStructure.NVIC_IRQChannel = spi_bus_data->irq;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
@@ -340,13 +349,7 @@ static int drv_spi_bus_configure(struct mr_spi_bus *spi_bus, struct mr_spi_confi
{
SPI_I2S_ITConfig(spi_bus_data->instance, SPI_I2S_IT_RXNE, state);
}
/* Configure SPI */
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(spi_bus_data->instance, &SPI_InitStructure);
SPI_Cmd(spi_bus_data->instance, state);
SPI_I2S_ClearITPendingBit(spi_bus_data->instance, SPI_I2S_IT_RXNE);
return MR_EOK;
}