解決A9139M0 PM2喚醒後I/O 輸入功能失效 或是 I2C功能失效問題
本篇介紹當A9139M0進入PM2,喚醒後出現I/O OUTENABLECLR 輸入功能失效問題
由於Ref. code進入PM mode的時候,為了防止其他IO影響到PM電流,會在進PM的時候把所有IO設成 高阻抗模式
因此從PM2喚醒後,需要設定想使用的I/O對應的MIx_WBUSx set="1",把該I/O設為Normal,這樣I/O才能正常工作
注意:修改前需要Unlook,Unlook方法:
POWER->PWR_TA = 0xAAAAAAAA; POWER->PWR_TA = 0x55555555;
然後再執行設定底下對應的I/O Contolx Reg
Demo Code:
RC_A9139M0_x1_433MHz Band Ref. Code_NonRF_V0.5_Test SLPTimer0_IO_InPutFunction_0603.zip
SLPTIMER0_enable();啟動sleep timer while(1) { //==========PM2喚醒後============= POWER->PWR_TA = 0xAAAAAAAA; POWER->PWR_TA = 0x55555555; POWER->IO_CTRL1 = 0x00000008; //P0.11 //================================================================= GPIO0->OUTENABLESET |= BIT10;//Set P0.10輸出PIN GPIO0->OUTENABLECLR = BIT11;//Set P0.11輸入PIN GPIO0->PUN_PIN.P11=1; //判斷P0.11是否為0 if(GPIO0->DATA_PIN.P11 == 0) { GPIO0->DATAOUT_PIN.P10 ^= 1;//翻轉I/O P0.10 Delay100us ( 10 ); GPIO0->DATAOUT_PIN.P10 ^= 1;//翻轉I/O P0.10 Delay100us ( 10 ); } PM2();//再次進PM2等待下次SleepTimer中斷後喚醒 }
若使用Amiccom提供的I2C Ref code,記得也需要將P0.04(SCL)/P0.05(SDL) I/O Control Pin設成"1"
如下:
Demo Code:
RC_A9139M0_x1_433MHz Band Ref. Code_NonRF_V0.5_Test SleepTimer I2C_0603.zip