现在使用psoc6. 发现spi口。 在进入deepsleep模式前,我想降低功耗,将spi口配置为高阻态模式:
//----------------------------------------------------
Cy_GPIO_SetDrivemode( SPI_GSensor_sclk_m_PORT, SPI_GSensor_sclk_m_NUM,CY_GPIO_DM_ANALOG);
Cy_GPIO_SetDrivemode( SPI_GSensor_mosi_m_PORT, SPI_GSensor_mosi_m_NUM,CY_GPIO_DM_ANALOG);
Cy_GPIO_SetDrivemode( SPI_GSensor_miso_m_PORT, SPI_GSensor_miso_m_NUM,CY_GPIO_DM_ANALOG);
Cy_GPIO_SetDrivemode( SPI_GSensor_ss0_m_PORT, SPI_GSensor_ss0_m_NUM,CY_GPIO_DM_ANALOG);
Cy_SysPm_DeepSleep(CY_SYSPM_WAIT_FOR_INTERRUPT);
BMI270_SPI_Init();
//-------------------------------------------------------
void BMI270_SPI_Init( void )
{
Cy_SCB_SPI_Init(SPI_GSensor_HW, SPI_GSensor_config, NULL);
Cy_SCB_SPI_SetAc
tiveSlaveSelect(SPI_GSensor_HW, SPI_GSensor_SPI_SLAVE_SELECT0);
/* Unmasking only the spi done interrupt bit */
SPI_GSensor_HW->INTR_M_MASK = SCB_INTR_M_SPI_DONE_Msk;
/* Configure User ISR */
Cy_SysInt_Init( ISR_SPI2_cfg, ISR_SPI2 );
/* Enable the interrupt */
NVIC_EnableIRQ( ISR_SPI2_cfg.intrSrc );
Cy_SCB_SPI_Enable(SPI_GSensor_HW);
}
//-----------------------------------------------------------
我发现一个问题就是我如果在进入睡眠前配置了spi的口为高阻态,在睡眠唤醒后,我的spi重新初始化也无法正常工作。 读到的设备数据异常。 我在程序中屏蔽掉配置高阻态的代码才能正常工作,请问是否我在睡眠唤醒后需要从新配置一下io口,在哪里配置,有参考代码吗?