first commit v2.0.1
This commit is contained in:
95
XLSW_SONIC/board_init.c
Normal file
95
XLSW_SONIC/board_init.c
Normal file
@@ -0,0 +1,95 @@
|
||||
#include "gd32e23x.h"
|
||||
#include "board_init.h"
|
||||
#include "chirp_board_config.h"
|
||||
#include "i2c.h"
|
||||
|
||||
/*!
|
||||
\brief Init LED & IIC Pin
|
||||
\param[in] none
|
||||
\param[out] none
|
||||
\retval none
|
||||
\note LED Pin: GPIOB-01 Output - None PUPD - OD - 50MHz - Default Low
|
||||
\note SDA Pin: GPIOF-00 Output - PU - OD - 50MHz - Default None
|
||||
\note SCL Pin: GPIOF-01 Output - PU - OD - 50MHz - Default None
|
||||
*/
|
||||
void board_init_I2C(void)
|
||||
{
|
||||
/* Init LED, turned off */
|
||||
rcu_periph_clock_enable(CHIRP_PIN_LED_CLK);
|
||||
gpio_mode_set(CHIRP_PIN_LED_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, CHIRP_PIN_LED_PIN);
|
||||
gpio_output_options_set(CHIRP_PIN_LED_PORT, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, CHIRP_PIN_LED_PIN);
|
||||
gpio_bit_reset(CHIRP_PIN_LED_PORT, CHIRP_PIN_LED_PIN);
|
||||
|
||||
/* Enable clock, RCU_GPIOF RCU_I2C0 RCU_DMA */
|
||||
rcu_periph_clock_enable(CHIRP_PIN_IIC_PIN_CLK);
|
||||
rcu_periph_clock_enable(CHIRP_PIN_IIC_CLK);
|
||||
rcu_periph_clock_enable(CHIRP_PIN_IIC_DMA_CLK);
|
||||
|
||||
/* config IIC0(AF_1) GPIOF:PF0/PF1 */
|
||||
gpio_af_set(CHIRP_PIN_IIC_PORT, GPIO_AF_1, CHIRP_PIN_IIC_SDA_PIN | CHIRP_PIN_IIC_SCL_PIN);
|
||||
gpio_mode_set(CHIRP_PIN_IIC_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, CHIRP_PIN_IIC_SDA_PIN | CHIRP_PIN_IIC_SCL_PIN);
|
||||
gpio_output_options_set(CHIRP_PIN_IIC_PORT, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, CHIRP_PIN_IIC_SDA_PIN | CHIRP_PIN_IIC_SCL_PIN);
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Init & Enable USART0
|
||||
\param[in] none
|
||||
\param[out] none
|
||||
\retval none
|
||||
\note TXD Pin: GPIOA-09 Output - PU - PP - 10MHz - Default None
|
||||
\note RXD Pin: GPIOA-10 Output - PU - PP - 10MHz - Default None
|
||||
\note USART: USART0 - 115200 - 8 - N - 1
|
||||
*/
|
||||
void configure_console(void)
|
||||
{
|
||||
/* enable GPIOA clock */
|
||||
rcu_periph_clock_enable(RCU_GPIOA);
|
||||
/* enable USART clock */
|
||||
rcu_periph_clock_enable(RCU_USART0);
|
||||
/* connect port to USARTx_Tx */
|
||||
gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_9 | GPIO_PIN_10);
|
||||
/* configure USART Tx as alternate function push-pull */
|
||||
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_9 | GPIO_PIN_10);
|
||||
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_9 | GPIO_PIN_10);
|
||||
/* USART configure */
|
||||
usart_deinit(USART0);
|
||||
usart_baudrate_set(USART0, USART0_BAUDRATE);
|
||||
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
|
||||
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
|
||||
/* enable USART */
|
||||
usart_enable(USART0);
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Reset IIC0
|
||||
\param[in] none
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
void i2c_bus_reset(void)
|
||||
{
|
||||
i2c_deinit(I2C0);
|
||||
/* configure SDA/SCL for GPIO */
|
||||
GPIO_BC(CHIRP_PIN_IIC_PORT) |= CHIRP_PIN_IIC_SDA_PIN;
|
||||
GPIO_BC(CHIRP_PIN_IIC_PORT) |= CHIRP_PIN_IIC_SCL_PIN;
|
||||
gpio_output_options_set(CHIRP_PIN_IIC_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, CHIRP_PIN_IIC_SDA_PIN);
|
||||
gpio_output_options_set(CHIRP_PIN_IIC_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, CHIRP_PIN_IIC_SCL_PIN);
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
GPIO_BOP(CHIRP_PIN_IIC_PORT) |= CHIRP_PIN_IIC_SCL_PIN;
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
GPIO_BOP(CHIRP_PIN_IIC_PORT) |= CHIRP_PIN_IIC_SDA_PIN;
|
||||
/* connect I2C_SCL_PIN to I2C_SCL */
|
||||
/* connect I2C_SDA_PIN to I2C_SDA */
|
||||
gpio_output_options_set(CHIRP_PIN_IIC_PORT, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, CHIRP_PIN_IIC_SCL_PIN);
|
||||
gpio_output_options_set(CHIRP_PIN_IIC_PORT, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, CHIRP_PIN_IIC_SDA_PIN);
|
||||
/* configure the I2CX interface */
|
||||
i2c_master_init();
|
||||
}
|
||||
Reference in New Issue
Block a user