无法输出XTAL32K

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
ethsiplab.
离线
最后一次露面:3个月1周前
加入:2019-09-13 12:58
无法输出XTAL32K

你好呀,

我正在尝试在P0_14上输出XTAL32K,以便能够将其连接到外部传感器。但是,直到现在我没有成功尝试这样做。我始终将P0_14设置为输出模式并尝试以下内容:

1.我已将p0_14函数设置为hw_gpio_func_clock函数并设置gpio_clk_sel_reg [func_clock_en]
2.或者,我已经设置了GPIO_CLK_SEL_REG [FUNC_CLOCK_EN],同时将P0_14函数设置为HW_GPIO_FUNC_GPIO。同时,我按照数据表第294页的指示设置了USBPAD_REG [USBPAD_EN](40.2.5特殊I / O考虑因素)

我还尝试了上述方法的各种组合,但无法让它工作。

你能告诉我我做错了什么吗?

上面的两种方法之间有什么区别?

在数据表的第294页上(40.2.5特殊I / O考虑),它说,P0_14不应在睡眠模式下使用。这是否意味着,我无法在睡眠模式下输出XTAL32K?

谢谢你的帮助!

设备:
PM_DIALOG.
离线
最后一次露面:1天21小时前
职员
加入:2018-02-08 11:03
嗨基督徒,

嗨基督徒,

让我检查一下,我会尽快回复你。

谢谢,PM_DIALOG.

ethsiplab.
离线
最后一次露面:3个月1周前
加入:2019-09-13 12:58
有关此问题的任何消息?到目前为止,我

有关此问题的任何消息?到目前为止,我发现“5.4.3从DA1469X生成时钟输出”在DA1469X应用程序硬件设计指南中,从上面回答问题2和3。但是,它仍然没有工作。以下是我配置事物的方式:

在system_init()中,我将sleep_mode设置为pm_mode_idle以将处理器保存在活动状态下:

pm_sleep_mode_set(pm_mode_idle);

之后,我按照两种方法配置引脚(两者都不适用于我)。

方法1:

hw_gpio_set_pin_function(hw_gpio_port_1,hw_gpio_pin_2,hw_gpio_mode_output,hw_gpio_func_clock);gpio-> gpio_clk_sel_reg = gpio-> gpio_clk_sel_reg |0x08;// func_clock_en.

方法2:

hw_gpio_set_pin_function(hw_gpio_port_0,hw_gpio_pin_14,hw_gpio_mode_output,hw_gpio_func_clock)gpio-> gpio_clk_sel_reg = gpio-> gpio_clk_sel_reg |0x10; // xtal32k_output_en

PM_DIALOG.
离线
最后一次露面:1天21小时前
职员
加入:2018-02-08 11:03
嗨基督徒,

嗨基督徒,

我为延迟道歉。根据数据表,P0_14用于USB,专门用于模拟USB全速D +信号(USBP)。请查看数据表中的DA14691 / 5针描述。有两个选项可以将XTAL32K导出到GPIO。

  1. 将XTAL32K导出到P0_14。

DA1469x子板卡中需要硬件修改。假设您正在使用DA14695子板VFBGA86。可以在下面的链接中找到原理图:

https://www.dialog-seminile.com/sites/default/files/da14695-db-vfbga86_vd-sch.pdf.

默认情况下,R7(0 OHM)和R8(0欧姆)电阻未填充。如果将XTAL32K导出到P0_14,则应填充两个电阻,但您不再具有USB功能。在HW修改后,请执行以下SW修改。出于演示目的,您应该在SDK的FreertOS_Retarget项目中修改prvsetuphardware(),如下:

#define自动_clock_output(1)静态void prvsetuphardware(void){/ * init硬件* / pm_system_init(periph_init);uint32_t val = gpio-> gpio_clk_sel_reg;#if!automatic_clock_output reg_set_field(gpio,gpio_clk_sel_reg,func_clock_sel,val,0);REG_SET_FIELD(GPIO,GPIO_CLK_SEL_REG,FUNC_CLOCK_EN,VAL,1);#else reg_set_field(gpio,gpio_clk_sel_reg,xtal32k_output_en,val,1);#endif gpio-> gpio_clk_sel_reg = val;val = 0;val = gpreg-> usbpad_reg;REG_SET_FIELD(GPREG,USBPAD_REG,USBPAD_EN,VAL,1);gpreg-> usbpad_reg = val; hw_gpio_set_pin_function(HW_GPIO_PORT_0, HW_GPIO_PIN_14, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_CLOCK); hw_gpio_pad_latch_enable(HW_GPIO_PORT_0, HW_GPIO_PIN_14); }

是设置寄存器的两种不同的方法。代码片段也使用自动_clock_output设置为0。

默认休眠模式是扩展睡眠模式,因此您将看到XTal32k导出到8°C左右的P0_14。8SEC后,设备将扩展睡眠状态,配置将丢失。如果您希望将XTAL32K导出到P0_14继续,请禁用将扩展的睡眠模式(PM_Mode_exted_sleep)禁止到活动模式(PM_Mode_active)。

  1. 将XTAL32K导出到另一个GPIO,例如P0_28

在这种情况下,您不应需要执行任何硬件修改。只需在Freertos_Retarget项目中使用以下代码片段。

静态void prvsetuphardware(void){/ * init硬件* / pm_system_init(periph_init);uint32_t val = gpio-> gpio_clk_sel_reg;REG_SET_FIELD(GPIO,GPIO_CLK_SEL_REG,FUNC_CLOCK_SEL,VAL,0);REG_SET_FIELD(GPIO,GPIO_CLK_SEL_REG,FUNC_CLOCK_EN,VAL,1);gpio-> gpio_clk_sel_reg = val;hw_gpio_set_pin_function(hw_gpio_port_0,hw_gpio_pin_28,hw_gpio_mode_output,hw_gpio_func_clock);hw_gpio_pad_latch_enable(hw_gpio_port_0,hw_gpio_pin_28);}

谢谢,PM_DIALOG.