求助各位大神 我的系统时钟设置成80M(这个必须这个不能改了) 而我用ssi读写的EEPROM支持的最大时钟只有20M因此我想用内部的那个PIOSC(16M)作为SSI的时钟源这样跟系统时钟没冲突可以吗?
查看了手册之后我做了如下设置(我的ssi时钟源通过设置ssiicc以piosc为时钟源这样可以吗)结果没用,有懂的吗 怎么配置 需要注意什么?
void SSI_init(void)
{
HWREG(0x400fe000+ 0x61c) = 0x2;
//SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1); //为SSI提供时钟
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//为GPIOF端口提供时钟
//SSIDisable(SSI1_BASE);
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY_DD;
HWREG(GPIO_PORTF_BASE + GPIO_O_CR) = 0x1;
HWREG(SSI1_BASE + SSI_O_CR1) = 0X0;//sse位置0禁能SSI
//SSIClockSourceSet(SSI1_BASE,SSI_CLOCK_PIOSC);//API选择ssi时钟源
//设置SPI为主机模式0,8位数据宽度,1M的波特率//
// SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0,SSI_MODE_MASTER, 1000000, 8);
HWREG(SSI1_BASE + SSI_O_CC) = 0x5;//时钟源选择,该处选中PIOSC
HWREG(SSI1_BASE + SSI_O_CPSR)= 0x4;//时钟预分频,2-254之间的偶数
HWREG(SSI1_BASE + SSI_O_CR0)=0x307;//设置SCR,极性,相位,模式,位宽度
HWREG(SSI1_BASE + SSI_O_CR1) = 0X2;//sse位置1使能SSI
GPIOPinConfigure(GPIO_PF3_SSI1FSS);//SSI功能复用配置
GPIOPinConfigure(GPIO_PF2_SSI1CLK);
GPIOPinConfigure(GPIO_PF1_SSI1TX);
GPIOPinConfigure(GPIO_PF0_SSI1RX);
GPIOPinTypeSSI(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
//SSIEnable(SSI1_BASE);
// 配置片选管脚为输出
GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_3, GPIO_DIR_MODE_OUT);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_3,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
但是因为你的ssi读写的EEPROM支持的最大时钟只有20M,你可以在80MHZ的系统时钟上面分频,不用选择16MHZ了,但是分频后的时钟还要注意以下一点
一周热门 更多>