在RTP程序里操作GPIO输出有哪些注意事项?

蔡芳芳 |浏览259次
收藏|2023/03/16 15:42

满意回答

2023/03/16 15:44

【MA35D1】在RTP程序里操作GPIO输出有哪些注意事项

1) 需要在TFA的dts里配置sspcc,将相应的GPIO配置给subm使用

找到您板子对应的dts文件,以BGA312 256MB的芯片为例在MA35D1_Buildroot/output/build/arm-trusted-firmware-custom/fdts/ma35d1-cpu800-wb-256m.dts

如图配置相应的GPIO为subm

注意可以在RTP的程序里读写GPIO对应的寄存器,如果SSPCC设置不正确就不能写对应的寄存器

2) 在A35 kernel加载完成以后运行RTP程序或打开Debug

3) 在RTP程序里打开对应的GPIO时钟使能

/* Unlock protected registers */

 SYS_UnlockReg();

/* Enable IP clock */

    CLK_EnableModuleClock(GPA_MODULE);

    CLK_EnableModuleClock(GPB_MODULE);

    CLK_EnableModuleClock(GPC_MODULE);

    CLK_EnableModuleClock(GPD_MODULE);

    CLK_EnableModuleClock(GPE_MODULE);

    CLK_EnableModuleClock(GPF_MODULE);

    CLK_EnableModuleClock(GPG_MODULE);

    CLK_EnableModuleClock(GPH_MODULE);

    CLK_EnableModuleClock(GPI_MODULE);

    CLK_EnableModuleClock(GPJ_MODULE);

    CLK_EnableModuleClock(GPK_MODULE);

    CLK_EnableModuleClock(GPL_MODULE);

    CLK_EnableModuleClock(GPM_MODULE);

        CLK_EnableModuleClock(GPN_MODULE);

 

    /* Update System Core Clock */

    /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock. */

SystemCoreClockUpdate();

/* Lock protected registers */

    SYS_LockReg();

4) 确认对应的GPIO的MFP寄存器值是0,作为GPIO功能

SYS->GPA_MFPL=0;

       SYS->GPA_MFPH=0;

5) 设置对应的GPIO为输出功能

GPIO_SetMode(PA, BIT3, GPIO_MODE_OUTPUT);

6) 设置输出电平

两种方式

位操作

PA3 = 0;

或者字输出

PA->DOUT=0x55555555;此方式可以结合PA->DATMSK执行位操作

 

7) GPIO输出驱动能力可调

默认PA->DS和PA->UDS都是0,为最小驱动能力

驱动能力在0至7之间调整

最高为PA->DS=0x77777777;PA->UDS=0x77777777

 

8) 可以设置PA->SLEWCTL设置输出信号斜率

9) 可以通过设置PA->PUSEL设置管脚上拉下拉,注意上拉仅在输入模式和开楼模式下有效,下拉仅在准双向模式下有效。

10)  模拟IP的GPIO可以通过PA->DINOFF来关闭数字输入通道

11)  输入管脚可以设置PA->SMTEN打开施密特触发功能


qwang

其他回答(0)
0人关注该问题
+1
 加载中...