你好,
我目前正在尝试让我的SPI总线在48MHz列出的数据表上运营。我的理解是我需要做的就是用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,
您能否按照以下步骤操作,如果您能够将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);// 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.