你好,
我目前试图让我的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
什么好主意吗?
关键词:
设备:
嗨SamsonLeoMarch,
你能按照下面的步骤,让我知道你是否能够设置SPI总线在48MHz工作?
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);
REG_SET_FIELD(CRG_PER, CLK_PER_REG, SPI_CLK_SEL, clk_per_reg_local, 1);//选择SPI时钟- DIV1 -系统时钟
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
#定义dg_configUSE_HW_SPI (1)
#定义dg_configSPI_ADAPTER (1)
请尝试这些步骤,如果您的问题还没有被修复,请让我知道。
谢谢,PM_Dialog
谢谢你!改变MUX为SPI时钟是什么做了它。我已经正确地设置了PLL,但仍然使用DivN时钟而不是SPI的sys_时钟。
对于未来想要解决这个问题的人来说,下面就是答案:
嗨SamsonLeoMarch,
很高兴你把问题解决了。谢谢你的暗示和接受我的回答。
谢谢,PM_Dialog