解決A9139M0 PM2喚醒後I/O 輸入功能失效 或是 I2C功能失效問題

SamYang2024-06-03M0核90
  • 本篇介紹當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

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

  • 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"

如下:

d4197cf1ad6a843f605181796ad6c12.png 

Demo Code:

RC_A9139M0_x1_433MHz Band Ref. Code_NonRF_V0.5_Test SleepTimer I2C_0603.zip

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。