【背景】
使用STM32F103ZET6的片子。
基于STM32F10x_StdPeriph_Lib_V3.5.0的标准库样例程序,目前已经可以使用SPI,和TI的ADS8688进行配合工作了,使用的SCK是9M。
但后续因为采用率的要求,需要将SCK提高到16M等(TI ADS8688的最高工作频率是17M)。
虽然可以通过修改SPI配置中的分频系数,来提高SCK到18M,但这样就超过ADS8688的最高工作频率了,会使得数据不对。
【问题】
(1) 请问除了通过SPI设置中的分频系数,还有其它办法来更改SCK吗?(如果能更改为16M甚好);
(2) 目前了解下来,通过SPI设置中的分频系数,只能得到少数几种可能的SCK。是否有其它思路和办法,可以获得更多种SCK频率?
谢谢
目前程序中时钟,和SPI的设置如下:(晶振8M)
---------------------------------------------------------------------------------------------------
void RCC_Configuration(void)
{
/* PCLK2 = HCLK/2 */
RCC_PCLK2Config(RCC_HCLK_Div2);
/* Enable SPI Master peripheral clocks --------------------------------------------------*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1, ENABLE);
}
/* SPI_MASTER configuration ------------------------------------------------*/
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure); |