28335 spi 波特率 配置, 找不到整数。

void InitPeripheralClocks(void)
{
EALLOW;

// HISPCP/LOSPCP prescale register settings, normally it will be set to default values
SysCtrlRegs.HISPCP.all = 0x0001;
SysCtrlRegs.LOSPCP.all = 0x0002;//默认配置,37.5M,假设值记为n
……
}

void spi_init()
{
InitSpiaGpio();

SpiaRegs.SPICCR.all =0x0007;  
SpiaRegs.SPICTL.all =0x000E;  
SpiaRegs.SPIBRR =0x0005; //假设值记为x     
//波特率 =LSPCLK/(SPIBRR+1) 
 如果想配置波特率为4.5M,就应该有150M/2^n)/(x+1)=4.5M; 
 但是好像求不出来同时为整数的n和x。

……
}

一般遇到这种情况,首先看下能不能将150M调整到一个合适的值,能调整到合适的值当然是最好的。如果调整不了也没关系,这时就只能找一个最近的整数了,这个时候信号会存在一点误差,像你这里的话,误差在1%以内
,即便正常通讯是没有问题的,直接用就是了