打印

怎么将内部16M的时钟作为SSI的时钟源?需要配置哪些寄存器?

[复制链接]
2184|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sayato|  楼主 | 2015-3-12 11:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
求助各位大神 我的系统时钟设置成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);
}

相关帖子

沙发
luofeng2g| | 2015-3-12 13:07 | 只看该作者
没有冲突的,具体怎么配置找个例程看看!

使用特权

评论回复
板凳
dirtwillfly| | 2015-3-12 14:17 | 只看该作者
@xyz549040622 帮忙给看看

使用特权

评论回复
地板
sayato|  楼主 | 2015-3-12 14:52 | 只看该作者
luofeng2g 发表于 2015-3-12 13:07
没有冲突的,具体怎么配置找个例程看看!

是没有冲突,我上面的程序虽然配置了,但是我怎么感觉这个内部时钟怎么没有用一样;这种例程不好找吧

使用特权

评论回复
5
xyz549040622| | 2015-3-14 10:56 | 只看该作者
SSI的时钟可以为系统时钟,也可以为PIOSC,如下图所示

但是因为你的ssi读写的EEPROM支持的最大时钟只有20M,你可以在80MHZ的系统时钟上面分频,不用选择16MHZ了,但是分频后的时钟还要注意以下一点

使用特权

评论回复
6
sayato|  楼主 | 2015-3-15 19:36 | 只看该作者
xyz549040622 发表于 2015-3-14 10:56
SSI的时钟可以为系统时钟,也可以为PIOSC,如下图所示

但是因为你的ssi读写的EEPROM支持的最大时钟只有20M ...

谢谢大哥能认真看完我的帖子,还看饿手册,但是按你说的这个思路,采用系统时钟分频,那个SSICPSR寄存器的值是根据你系统时钟,库函数自动算好填进去的,80M的话cpsr分频数是2那才40M没达到要求,再者我不用库函数直接操作了寄存器不知道为什么还是没用,说明**作的不对我预设的值没有写进寄存器这是很不明白的地方?

使用特权

评论回复
7
xyz549040622| | 2015-3-16 23:10 | 只看该作者
sayato 发表于 2015-3-15 19:36
谢谢大哥能认真看完我的帖子,还看饿手册,但是按你说的这个思路,采用系统时钟分频,那个SSICPSR寄存器 ...

这个分频系数是由你设置的,不一定就是二呀,可以为2-254之间的任意值,在数据手册的说明如下

使用特权

评论回复
8
xyz549040622| | 2015-3-16 23:12 | 只看该作者
sayato 发表于 2015-3-15 19:36
谢谢大哥能认真看完我的帖子,还看饿手册,但是按你说的这个思路,采用系统时钟分频,那个SSICPSR寄存器 ...

至于你说的操作寄存器后没反应的说法,TIVA对初始化的先后顺序都是有要求的,你可以参考官方例程的初始化程序,然后对照数据手册中的顺序看看

使用特权

评论回复
9
smilingangel| | 2015-3-17 22:08 | 只看该作者
xyz549040622 发表于 2015-3-14 10:56
SSI的时钟可以为系统时钟,也可以为PIOSC,如下图所示

但是因为你的ssi读写的EEPROM支持的最大时钟只有20M ...

楼上的参考图的很直观的。

使用特权

评论回复
10
sayato|  楼主 | 2015-3-19 15:30 | 只看该作者
xyz549040622 发表于 2015-3-16 23:12
至于你说的操作寄存器后没反应的说法,TIVA对初始化的先后顺序都是有要求的,你可以参考官方例程的初始化 ...

1:那个值在2-254 的确是这样的 ,这个是建立在你直接操作寄存器的基础上的。我把那个库函数计算模型看了一下,如果是调用库函数那个值一般都是2,也可以是其他的除非你的时钟频率特别高,ssi波特率设置的比较小才会是其他值。 ulMaxBitRate = ulSSIClk / ulBitRate;
    ulPreDiv = 0;
    do
    {
        ulPreDiv += 2;
        ulSCR = (ulMaxBitRate / ulPreDiv) - 1;
    }
    while(ulSCR > 255);
    HWREG(ulBase + SSI_O_CPSR) = ulPreDiv;

2:我上面的程序就是按照手册的操作顺序来的,就是你提供的第二张图,说真的 真没反应 头都大了 其中    HWREG(SSI1_BASE + SSI_O_CR1) = 0X0;//sse位置0禁能SSI,这个使能,失能的操作是有用的(测试过),实在搞不定啊 能不能麻烦大哥帮我试试啊,
3;还有个附带的问题 我的CCS 5.5运行的时候怎么观察不了寄存器的值

使用特权

评论回复
11
sayato|  楼主 | 2015-3-19 15:32 | 只看该作者
smilingangel 发表于 2015-3-17 22:08
楼上的参考图的很直观的。

我就是按照楼上的意思做的,我感觉没什么差错啊,你可以看我的程序 跟手册要求是一致的,

使用特权

评论回复
12
sayato|  楼主 | 2015-3-19 15:35 | 只看该作者
xyz549040622 发表于 2015-3-16 23:12
至于你说的操作寄存器后没反应的说法,TIVA对初始化的先后顺序都是有要求的,你可以参考官方例程的初始化 ...

还有不明白的 就是 我看手册,HWREG(SSI1_BASE + SSI_O_CC) = 0x5;//时钟源选择,该处选中PIOSC
这个地方写0x5,而那个库函数里面的定义的值却是1,我是用库函数选择时钟源,然后用SSIClockSourceGet()获取的返回值,

使用特权

评论回复
13
angerbird| | 2015-3-22 13:36 | 只看该作者
时钟源的选择与控制是很重要的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

35

帖子

0

粉丝