效果如下:
1、当点击按钮后,关掉传感器电源,但是2650和传感器spi是相互连接的,但是spi的输出管脚有漏电流,所以进入低功耗的时候 调用DiableIOs,是输出管脚浮空。
2、再次点击按钮后,开启传感器电源,让传感器工作,调用EnableIOs开启spi的输出。
问题:
1、不知道我这种方式是否可行,下面两个函数是否写错。
2、PIN_setConfig的第二个参数是mask,不明白第二个参数的用途,这里使用的是PIN_BM_ALL,不知是否有问题
/*
#define PPG_CLK IOID_0
#define PPG_MISO IOID_1#define PPG_MOSI IOID_2
#define PPG_CS IOID_3
*/
void DiableIOs()
{
PIN_setConfig(m_csPinHandle, PIN_BM_ALL, PPG_CS | PIN_GPIO_OUTPUT_DIS);
PIN_setConfig(m_mosiPinHandle, PIN_BM_ALL, PPG_MOSI | PIN_GPIO_OUTPUT_DIS);
PIN_setConfig(m_clkPinHandle, PIN_BM_ALL, PPG_CLK | PIN_GPIO_OUTPUT_DIS);
}
void EnableIOs()
{
PIN_setConfig(m_csPinHandle, PIN_BM_ALL, PPG_CS | PIN_GPIO_OUTPUT_EN);
PIN_setConfig(m_mosiPinHandle, PIN_BM_ALL, PPG_MOSI | PIN_GPIO_OUTPUT_EN);
PIN_setConfig(m_clkPinHandle, PIN_BM_ALL, PPG_CLK | PIN_GPIO_OUTPUT_EN);
}
Viki Shi:
你只更改了管脚吗?SPI driver也需要关闭,PIN_setConfig的详细描述请看:
user1388075:
回复 Viki Shi:
那我还开了串口,还要关掉串口,还要关掉spi。
那个standby demo感觉缺少参照性。感觉这一路下来stanby挺麻烦的。shutup应该不用管这么多吧,直接进入shutup模式就行了。另:
你这里说的关闭spi具体调用哪个函数
user1388075:
回复 Viki Shi:
void DiableIOs(){ //PIN_setConfig(m_csPinHandle, PIN_BM_ALL, PPG_CS | PIN_GPIO_OUTPUT_DIS); //PIN_setConfig(m_mosiPinHandle, PIN_BM_ALL, PPG_MOSI | PIN_GPIO_OUTPUT_DIS); //PIN_setConfig(m_clkPinHandle, PIN_BM_ALL, PPG_CLK | PIN_GPIO_OUTPUT_DIS); mySPI_close(0); closeUart(); PIN_setConfig(m_csPinHandle, PIN_BM_DRVSTR, PPG_CS | PIN_INPUT_EN | PIN_NOPULL ); PIN_setConfig(m_csPinHandle, PIN_BM_DRVSTR, PPG_MOSI | PIN_INPUT_EN | PIN_NOPULL ); PIN_setConfig(m_csPinHandle, PIN_BM_DRVSTR, PPG_MISO | PIN_INPUT_EN | PIN_NOPULL ); PIN_setConfig(m_csPinHandle, PIN_BM_DRVSTR, PPG_CLK | PIN_INPUT_EN | PIN_NOPULL ); PIN_setConfig(m_ledPinHandle, PIN_BM_DRVSTR, PPG_LED | PIN_INPUT_EN | PIN_NOPULL ); PIN_setConfig(m_ledPinHandle, PIN_BM_DRVSTR, PPG_INT | PIN_INPUT_EN | PIN_NOPULL ); PIN_setConfig(m_ledPinHandle, PIN_BM_DRVSTR, PPG_POW_EN | PIN_INPUT_EN | PIN_NOPULL ); PIN_setConfig(m_ledPinHandle, PIN_BM_DRVSTR, PPG_RX | PIN_INPUT_EN | PIN_NOPULL ); PIN_setConfig(m_ledPinHandle, PIN_BM_DRVSTR, PPG_TX | PIN_INPUT_EN | PIN_NOPULL ); PINCC26XX_setWakeup(PpgBtnTableWakeUp);
//hPins = PIN_open(&LedPinState, LedPinTable); Power_shutdown(NULL, 0);
}
这么干, 电流300多微安
实测cs和clk还是高电平对外输出电流,是这么操作io不正确么?