增加主SPI速度

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在进入我们的新论坛平台,将提供更好的功能,并包含在主对话框网站内。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-semicondiondiondumon.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇文章
Samsonleomarch.
离线
最后一次露面:2年6天前
加入:2018-10-17 17:57
增加主SPI速度

你好,
我目前正在尝试在列出48MHz的数据表上运行我的SPI总线。我的理解是我需要做的就是用96MHz PLL设置我的初始时钟,然后在platform_devices中设置我的分频器到最小(2)。不幸的是,我似乎无法获得SPI时钟以更快地运行8MHz,这导致我相信时钟设置的时间不会从16MHz改变。

以下是相关代码:

main.c - system_init()
......
cm_sys_clk_init(sysclk_pll96);
cm_apb_set_clock_divider(apb_div1);
cm_ahb_set_clock_divider(ahb_div1);
cm_lp_clk_init();
......
cm_sys_clk_set(sysclk_pll96);
......
playform_devices.h.

#ifdef config_spi_display.
spi_slave_device(spi1,display_spi,hw_gpio_port_4,hw_gpio_pin_5,hw_spi_word_9bit,
hw_spi_pol_low,hw_spi_pha_mode_0,hw_spi_freq_div_2,-1);
#万一

有任何想法吗?

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

嗨Samsonleomarch,

请问您可以按照以下步骤操作,并让我知道您是否能够在48MHz上设置SPI总线进行操作?

  1. 将系统时钟设置为96MHzsystem_init()功能

cm_sys_clk_init(sysclk_xtal16m.);//而不是sysclk_pll96

cm_apb_set_clock_divider(apb_div1);

cm_ahb_set_clock_divider(ahb_div1);

cm_lp_clk_init();

/ *设置系统时钟* /

cm_sys_clk_set(sysclk_pll96);

  1. 设置SPI外围设备的时钟源hw_spi_init()功能:

REG_SET_FIELD(CRG_PER,CLK_PER_REG,SPI_CLK_SEL,CLK_PER_REG_LOCAL,1); //选择SPI时钟 - DIV1 - 系统时钟

  1. 设置SPI时钟的时钟部门platform_devices.h.标题文件

spi_slave_device(spi1,test_spi,hw_gpio_port_4,hw_gpio_pin_0,hw_spi_word_8bit,

hw_spi_pol_low,hw_spi_pha_mode_0,hw_spi_freq_div_2,0);// 48 MHz的SPI

  1. 在custom_config_qspi.h标题文件中定义以下宏定义

#define dg_configuse_hw_spi(1)

#define dg_configspi_adapter(1)

请尝试这些步骤,并告诉我您的问题是否尚未修复。

谢谢,PM_DIALOG.

Samsonleomarch.
离线
最后一次露面:2年6天前
加入:2018-10-17 17:57
谢谢!改变mux.

谢谢!改变SPI时钟的MUX是什么。我已经正确设置了PLL,但仍然使用DIVN时钟而不是SPI的SYS_CLOCK。

对于未来的任何人寻求解决这个问题,这就是它的原因:

在HW_SPI_INIT()函数中设置SPI外设的时钟源:
REG_SET_FIELD(CRG_PER,CLK_PER_REG,SPI_CLK_SEL,CLK_PER_REG_LOCAL,1); //选择SPI时钟 - DIV1 - 系统时钟

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

嗨Samsonleomarch,

很高兴你识上你的问题。感谢您的指示,接受我的答案。

谢谢,PM_DIALOG.