跳到主要内容

GPIO配置和输出失败的问题

da1469x.

3个月前

张贴了杰瑞娟225分 4回复
0旋转

我们正在使用SDK_10.0.10.118,并希望将GPIO输出设置为无效,但失败。

你可以帮我检查缺少任何配置吗?

hw_gpio_set_pin_function(hw_gpio_port_0,hw_gpio_pin_12,hw_gpio_mode_output,hw_gpio_func_gpio);
hw_gpio_configure_pin_power(hw_gpio_port_0,hw_gpio_pin_12,hw_gpio_power_v33);
hw_gpio_configure_pin(hw_gpio_port_0,hw_gpio_pin_12,hw_gpio_mode_output,hw_gpio_func_gpio,true);

hw_gpio_pad_latch_enable(hw_gpio_port_0,hw_gpio_pin_12);

os_delay_ms(1000);
hw_gpio_set_inactive(hw_gpio_port_0,hw_gpio_pin_12);
os_delay_ms(1000);
hw_gpio_set_active(hw_gpio_port_0,hw_gpio_pin_12);
os_delay_ms(1000);
hw_gpio_set_inactive(hw_gpio_port_0,hw_gpio_pin_12);

3个月前

杰瑞娟 225分

设置PIN高/低电平后,引脚状态不会相应地更改,不确定发生了什么。

3个月前

PM_DIALOG.

嗨杰瑞,

P0_12和P0_13是CMAC SWD。

请参阅第40.2.1节可编程引脚分配和表146:修复了数据表的特定信号的分配。另请参见第299页的注1。

da1469x数据表:https://www.dialog-seminile.com/sites/default/files/2020-12/da1469x_datasheet_3v2.pdf.

默认情况下启用CMAC调试器 - 请参阅bsb_debug.h中的dg_configenable_cmac_debugger。

因此,为了禁用CMAC调试器并使用P0_12或P0_13作为GPIO,将DG_CONFIGENABLE_CMAC_DEBUGGEG设置为“自定义配置文件(custom_config_xxx.h)”。

请参阅下面的代码片段,用于在periph_init()中切换p0_12和p0_13。

在custom_config_xxx.h中:

#define dg_configenable_cmac_debugger(0)

在periph_init():

hw_gpio_configure_pin(hw_gpio_port_0,hw_gpio_pin_12,hw_gpio_mode_output,hw_gpio_func_gpio,false);hw_gpio_configure_pin(hw_gpio_port_0,hw_gpio_pin_13,hw_gpio_mode_output,hw_gpio_func_gpio,false);hw_gpio_pad_latch_enable(hw_gpio_port_0,hw_gpio_pin_12);hw_gpio_pad_latch_enable(hw_gpio_port_0,hw_gpio_pin_13);hw_clk_delay_usec(100);hw_gpio_set_active(hw_gpio_port_0,hw_gpio_pin_12);hw_gpio_set_active(hw_gpio_port_0,hw_gpio_pin_13);hw_clk_delay_usec(100);hw_gpio_set_inactive(hw_gpio_port_0,hw_gpio_pin_12);hw_gpio_set_inactive(hw_gpio_port_0,hw_gpio_pin_13); hw_gpio_pad_latch_disable(HW_GPIO_PORT_0, HW_GPIO_PIN_12); hw_gpio_pad_latch_disable(HW_GPIO_PORT_0, HW_GPIO_PIN_13);

谢谢,PM_DIALOG.

3个月前

杰瑞娟 225分

嗨pm_dialog,

谢谢你的建议。在配置GPIO之前,我已经禁用了CMAC调试器。
从您的示例代码中,它是否意味着在我将GPIO设置为高电平之前,我需要启用闩锁?
hw_gpio_pad_latch_enable()

在我将它设置为低电平之前,我需要禁用闩锁?但我没有看到其他GPIO设置这样做,是必要的功能我需要在我设置任何GPIO之前称之为吗?

接受答案!

3个月前

PM_DIALOG.

嗨杰瑞,

当锁存GPIO时,即激活焊盘并将其连接到数字逻辑。当未分离时,它会断开焊盘与数字逻辑的连接,并保持焊盘状态。我能够用您提供的代码在Periph_init()中切换GPIO。您正在尝试切换p0_12的代码中的哪个位置?

为了使用CMAC调试器PAD作为GPIOS,您应该:

1.如我以前的回复中所建议的建议禁用CMAC调试器

2.将焊盘配置为GPIOS。

请参阅下面的示例代码,用于切换P0_12:

hw_gpio_configure_pin(hw_gpio_port_0,hw_gpio_pin_12,hw_gpio_mode_output,hw_gpio_func_gpio,false);hw_gpio_pad_latch_enable(hw_gpio_port_0,hw_gpio_pin_12);hw_clk_delay_usec(100);hw_gpio_set_active(hw_gpio_port_0,hw_gpio_pin_12);hw_clk_delay_usec(100);hw_gpio_set_inactive(hw_gpio_port_0,hw_gpio_pin_12);hw_gpio_pad_latch_disable(hw_gpio_port_0,hw_gpio_pin_12);

谢谢,PM_DIALOG.