最近在学习SPI的通讯,使用的是飞思卡尔MKL16Z128VFT4芯片,spi驱动中,可选的spi速率最高达到24MHz,默认的速率为1MHz,在实验中发现,当配置为6MHz时,可以正常进行通讯,但配置超过6MHz时,则无法进行通讯,检查spi时钟引脚没有波形。结合KL16手册上的时钟树部分进行分析,spi使用的是Bus clock,System oscillator外接16MHz的晶振,那么从Bus clock/Flash clock输出的时钟一定要经过OUTDIV1和OUTDIV4的分频处理,图1为时钟树。16MHz的晶振先经过PLL4分频,再24倍频,MCGOUTCLK的值为96MHz,然后OUTDIV1和OUTDIV4均进行2分频,输出的Bus clock值则为24MHz,代码如图2所示。如果MCGOUTCLK值为96MHz,那么分频后到达Bus clock的值不能超过24MHz,即对OUTDIV1和OUTDIV4的分频系数有要求,(已测试验证)。想请教,SPI的速率值不能设置超过6MHz,和时钟树这边的输出有没有关联,还是别的什么原因?
|