跳到主要内容

filipheral_init()外的spi初始化

2年前

filipheral_init()外的spi初始化

张贴了DLO.0分 2回复
0旋转

我正在尝试在Connect中初始化SPI并在断开连接中解除激活它。使用下面的代码,代码挂在其中


{
} whiled(getBits16(spi_ctrl_reg,spi_int_bit)== 0);//调查等待SPI传输

UINT32_T SPI_ACCESS(UINT32_T DataToSend)

以下是我在Connect和Disconnect上的代码:


void user_on_connection(uint8_t connection_idx,struct gapc_connection_req_ind const * param)
{
spi_pad_t spi_it8951_cs_pad;
gpio_setactive(IT8951_CTRL_PORT,PWR_IT8951);
thene_gpio_state = true;
default_app_on_connection(connection_idx,param);

conn_idx = connection_idx;

功能_timer = app_easy_timer(60,get_features);

ARCH_PRINTF(“设备连接\ r \ n”);
gpio_configurepin(spi2_gpio_port,spi2_cs_pin,输出,pid_spi_en,true);
gpio_configurepin(spi2_gpio_port,spi2_clk_pin,输出,pid_spi_clk,false);
gpio_configurepin(spi2_gpio_port,spi2_do_pin,输出,pid_spi_do,false);
gpio_configurepin(spi2_gpio_port,spi2_di_pin,输入,pid_spi_di,false);
SetBits16(Sys_ctrl_reg,pad_latch_en,1);
spi_it8951_cs_pad.port = gpio_port_2;
spi_it8951_cs_pad.pin = gpio_pin_1;
spi_init(&spi_it8951_cs_pad,spi_mode_16bit,spi_rool_master,spi_clk_idle_pol_low,spi_pha_mode_0,spi_mint_disable,spi_xtal_div_8);
}

/ **
****************************************************************************************
* @brief处理断开的事件
* @param [in]断开消息的Param参数
* @return void.
****************************************************************************************
* /
void user_on_disconnect(struct gapc_disconnect_ind const * param)
{
default_app_on_disconnect(param);
ARCH_PRINTF(“设备已断开连接,原因%i \ r \ n”,(int)param->原因);
gpio_setinactive(IT8951_CTRL_PORT,PWR_IT8951);
thene_gpio_state = false;
gpio_configurepin(spi2_gpio_port,spi2_cs_pin,输入,pid_gpio,false);
gpio_configurepin(spi2_gpio_port,spi2_clk_pin,输入,pid_gpio,false);
gpio_configurepin(spi2_gpio_port,spi2_do_pin,输入,pid_gpio,false);
gpio_configurepin(spi2_gpio_port,spi2_di_pin,输入,pid_gpio,false);
SetBits16(Sys_ctrl_reg,pad_latch_en,1);
}

如果我没有正确初始化,请告诉我。我无法在peripheral_init中初始化它的原因是因为当我没有启用其电源导轨时,从设备绘制来自GPIO引脚的电源。所以我在等待用户在为从设备启用电源之前连接,然后初始化SPI端口进行通信。断开连接后,我需要禁用端口,以便从SPI引脚尝试绘制电源。

当初始化代码放在peripheral_init中时,一切都很好,所以我知道其余的代码是功能的。

谢谢,
DL.

接受答案!

2年前

PM_DIALOG.

嗨DLO,

我无法在初始化代码中找到任何错误。如果您使用的是使用任何睡眠模式配置,请澄清您吗?如果您使用睡眠模式,当设备从睡眠中唤醒时,将不会执行USER_ON_CONNECTION()函数,因此不会配置GPIO。因此,当设备在已提及时唤醒或在PERIPH_INIT()函数中时,您应该再次配置它们。

谢谢,PM_DIALOG.

2年前

DLO. 0分

非常感谢您的提示!我通过启用/禁用一个标志并将初始化丢弃Periph_init来解决它。