am5728通过DM框架配置GPIO管脚

本文以AM5728为例,详细介绍了如何通过DM框架配置GPIO管脚,包括多路复用设置、设备树节点添加、GPIO资源申请以及GPIO引脚的高低电平设置。此外,还提供了DM框架下的GPIO接口函数说明。
摘要由CSDN通过智能技术生成

以配置gpio3_31为例:
查看芯片手册:
这里写图片描述
这里gpio3_31为复用管脚,首先要配置寄存器将此管脚设置为gpio功能。
vim board/ti/am57xx/mux_data.h 所有多路复寄存器信息都在此定义:

const struct pad_conf_entry core_padconf_array_essential_x15[] = {
    {GPMC_AD0, (M2 | PIN_INPUT | MANUAL_MODE)},   /*gpmc_ad0.vin3a_d0 */
     {GPMC_AD1, (M2 | PIN_INPUT | MANUAL_MODE)},    /* gpmc_ad1.vin3a_d1 */
     {GPMC_AD2, (M2 | PIN_INPUT | MANUAL_MODE)},     /* gpmc_ad2.vin3a_d2 */
     {GPMC_AD3, (M2 | PIN_INPUT | MANUAL_MODE)},     /* gpmc_ad3.vin3a_d3 */
     {GPMC_AD4, (M2 | PIN_INPUT | MANUAL_MODE)},     /* gpmc_ad4.vin3a_d4 */
     ...
     {VIN2A_FLD0, (M14 | PIN_INPUT_PULLUP)}, /* vin2a_fld0.gpio3_30 */
     {VIN2A_HSYNC0, (M14 | PIN_INPUT_PULLUP)},       /* vin2a_hsync0.gpio    3_31 */
     {VIN2A_VSYNC0, (M14 | PIN_INPUT)},      /* vin2a_vsync0.gpio4_0 */
     {VIN2A_D0, (M11 | PIN_INPUT)},  /* vin2a_d0.pr1_uart0_rxd */
     {VIN2A_D1, (M11 | PIN_OUTPUT)}, /* vin2a_d1.pr1_uart0_txd */
     ...

接下来看看uboot代码中如何设置多路复用的:
vim board/ti/am57xx/board.c

512  *ctrl = &dra7xx_ctrl;
660   pconf = core_padconf_array_essential_x15;
661   pconf_sz =ARRAY_SIZE(core_padconf_array_essential_x15);
678    /* Do the muxing here */
679   do_set_mux32((*ctrl)->control_padconf_core_base, pconf, pconf_sz);

照猫画虎,自己的代码这样写:
1.定义结构体:

const struct pad_conf_entry my_
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值