⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support。我们会在接下来的几天修复bug /优化搜索和标记。
4个职位/ 0个新职位
最后发表
SamsonLeoMarch
离线
最后看到:2年5个月前
加入:2018-10-17 17:57
增加主SPI速度

你好,
我目前试图让我的SPI总线在数据表列出的48MHz操作。我的理解是所有我需要做的就是设置初始时钟与platform_devices.h 96 mhz锁相环,然后把我的分频器最低(2)。不幸的是,我似乎无法得到我的spi比8 mhz时钟跑得更快,这让我相信从16 mhz时钟设置没有改变。

以下是相关代码:

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);
...
plateform_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);
# endif

什么好主意吗?

设备:
PM_Dialog
离线
最后看到:1周2天前
工作人员
加入:2018-02-08 11:03
嗨SamsonLeoMarch,

嗨SamsonLeoMarch,

你能按照下面的步骤,让我知道你是否能够设置SPI总线在48MHz工作?

  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);// SPI at 48 MHz

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

#定义dg_configUSE_HW_SPI (1)

#定义dg_configSPI_ADAPTER (1)

请尝试这些步骤,如果您的问题还没有被修复,请让我知道。

谢谢,PM_Dialog

SamsonLeoMarch
离线
最后看到:2年5个月前
加入:2018-10-17 17:57
谢谢你!改变了MUX

谢谢你!改变MUX为SPI时钟是什么做了它。我已经正确地设置了PLL,但仍然使用DivN时钟而不是SPI的sys_时钟。

对于未来想要解决这个问题的人来说,下面就是答案:

使用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周2天前
工作人员
加入:2018-02-08 11:03
嗨SamsonLeoMarch,

嗨SamsonLeoMarch,

很高兴你把问题解决了。谢谢你的暗示和接受我的回答。

谢谢,PM_Dialog