无法输出XTAL32K

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
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 function设置为HW_GPIO_FUNC_GPIO。同时,我已经设置USBPAD_REG[USBPAD_EN]按照数据表第294页的指示(40.2.5特殊I/O注意事项)

我也尝试过上述方法的各种组合,但都不能奏效。

你能告诉我哪里做错了吗?

以上两种方法的区别是什么?

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

谢谢你的帮助!

设备:
PM_Dialog
离线
最后看到:11小时22分钟前
工作人员
加入: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
离线
最后看到:11小时22分钟前
工作人员
加入:2018-02-08 11:03
嗨,基督徒,

嗨,基督徒,

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

  1. 导出XTAL32K到P0_14。

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

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

默认情况下R7(0欧姆)和R8(0欧姆)电阻不填充。在将XTAL32K导出到P0_14的情况下,应该填充两个电阻,但您将不再有USB功能。在HW修改后,请做以下软件修改。出于演示目的,您应该修改SDK的freertos_retarget项目中的prvSetupHardware(),如下所示:

#define AUTOMATIC_CLOCK_OUTPUT (1) static void prvsetuhardware (void){/*初始化硬件*/ pm_system_init(外围);uint32_t val = GPIO->GPIO_CLK_SEL_REG;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(peri_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