你好,
我目前正在尝试在列出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);
#万一
有任何想法吗?
关键词:
设备:
嗨Samsonleomarch,
请问您可以按照以下步骤操作,并让我知道您是否能够在48MHz上设置SPI总线进行操作?
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);// 48 MHz的SPI
#define dg_configuse_hw_spi(1)
#define dg_configspi_adapter(1)
请尝试这些步骤,并告诉我您的问题是否尚未修复。
谢谢,PM_DIALOG.
谢谢!改变SPI时钟的MUX是什么。我已经正确设置了PLL,但仍然使用DIVN时钟而不是SPI的SYS_CLOCK。
对于未来的任何人寻求解决这个问题,这就是它的原因:
嗨Samsonleomarch,
很高兴你识上你的问题。感谢您的指示,接受我的答案。
谢谢,PM_DIALOG.