⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
4个职位/ 0个新职位
最后发表
ethsiplab
离线
最后看到:1个月2个星期前
加入: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小时12分钟前
工作人员
加入:2018-02-08 11:03
嗨,基督徒,

嗨,基督徒,

让我查一下,我会尽快给你答复。

谢谢,PM_Dialog

ethsiplab
离线
最后看到:1个月2个星期前
加入:2019-09-13 12:58
有什么消息吗?现在我

有什么消息吗?到目前为止,我已经在DA1469x应用硬件设计指南中找到了“5.4.3从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

PM_Dialog
离线
最后看到:1小时12分钟前
工作人员
加入:2018-02-08 11:03
嗨,基督徒,

嗨,基督徒,

我为耽搁道歉。根据数据表,P0_14用于USB,特别是模拟USB全速D+信号(USBp)。请检查表2:DA14691/5引脚描述数据表。将XTAL32K导出到GPIO有两个选项。

  1. 导出XTAL32K到P0_14。

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

//www.xmece.com/sites/default/files/da14695-db-vfbga86_vd-sch.pdf

默认情况下R7(0 Ohm)和R8(0 Ohm)电阻不填充。在导出XTAL32K到P0_14的情况下,两个电阻都应该被填充,但您将不再有USB功能。HW修改后,请做以下SW修改为了演示,你应该在SDK的freertos_retarget项目中修改prvsetuhardware(),如下所示:

#define AUTOMATIC_CLOCK_OUTPUT (1) static void prvsetuhardware (void){/*初始化硬件*/ pm_system_init(peripher_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); }

这是两种不同的设置寄存器的方法。代码片段也将AUTOMATIC_CLOCK_OUTPUT设置为0。

默认的睡眠模式是扩展睡眠模式,因此您将看到XTAL32K导出到P0_14大约8秒。8秒后,设备将进入延长睡眠,配置将丢失。如果您希望将XTAL32K连续导出到P0_14,请将扩展睡眠模式(pm_mode_extended_sleep)禁用为激活模式(pm_mode_active)。

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

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

static void prvsetuhardware (void){/*初始化硬件*/ pm_system_init(peripher_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