请问SPI要做哪些设置?

pcbaggio   2009-6-24 16:47 楼主
我只对它的控制寄存器进行了设置,程序总是进入死循环,是不是还需要其他设置?我现在时写主控芯片的程序,被控芯片的程序是固化好的。

回复评论 (8)

要是我问这个问题的话 我起码得先把当前用的哪种MCU说一下~
如果是进入死循环,那应该是在发送或者接收时,检查标志位(应该是当前SPI忙的那个状态寄存器的位)时,死在里面了,最大的可能就是SPI的IO没配置好或者SPI寄存器的配置没弄好。
不过一般的MCU都有提供库或者Demo吧,在上面改改就好了~
点赞  2009-6-24 16:58
用的是disPIC5013.
我是说现在还没有写接收和发送函数在里面,只是初始化了一下SPI(并且只初始化了SPI控制寄存器SPI2CON和使能寄存器SPI2STAT)。
现在没有Demo参考。要通讯的是一个规则定义好了的芯片。

请问一下,是不是SPI时钟是怎么样的?是不是只要主控芯片设置好分频比例,然后使能,主控芯片就会输出时钟呢?
点赞  2009-6-24 17:24
只有有数据传输的时候才有时钟输出的

没用过PIC的MCU

不过我理解一般意义上都是
1、IO一般都是复用的,所以先将IO复用为SPI的模式,(有些IO还要设定其工作的的时钟频率)
2、进入SPI的设定模式(MSP430好像就需要寄存器先进入Reset状态才能使设定有效)
3、设定控制寄存器:SPI主还是从了、时钟源了,分频了、8或者16bit了、LSB或MSB了 等等。。。
4、使能(或许有,或许没有)

没用过PIC以上仅供参考
点赞  2009-6-24 17:42
哦   非常感谢!

中断需要设置吗?

如果初始化成功,是不是初始化完成后,就能接收到数据了?
点赞  2009-6-24 18:02
SPIxSTAT和SPIXCON都需要设置,而且要设置好SKP和SKE,DSPIC系列的单片机只有在SPIXBUF中写入了数据才会产生SCK信号,所以要接收数据也要先往SPIXBUF中写入了数据,SPI初始化后SCK是暂时不工作的。
点赞  2009-6-25 07:02
一般情况SPI都不用中断模式的
当然要不闲麻烦或者需要SOMI的话在中断里处理更好了~
初始化成功后,就能接收和发送了。当然测试工作得做好,用示波器看SCK和SIMO或者SOMI的波形,再对照寄存器的状态,慢慢调试吧。
点赞  2009-6-25 08:52
引用: 引用 5 楼 s0153253 的回复:
SPIxSTAT和SPIXCON都需要设置,而且要设置好SKP和SKE,DSPIC系列的单片机只有在SPIXBUF中写入了数据才会产生SCK信号,所以要接收数据也要先往SPIXBUF中写入了数据,SPI初始化后SCK是暂时不工作的。

O(∩_∩)O谢谢
点赞  2009-6-25 10:07
引用: 引用 6 楼 lmlmlmnew 的回复:
一般情况SPI都不用中断模式的
当然要不闲麻烦或者需要SOMI的话在中断里处理更好了~
初始化成功后,就能接收和发送了。当然测试工作得做好,用示波器看SCK和SIMO或者SOMI的波形,再对照寄存器的状态,慢慢调试吧。

O(∩_∩)O~谢谢。我修改了一下初始化的设置的顺序,使用中断不断的发送数据,已经可以发送数据了,不过很奇怪的是没有时钟,我再研究一下,O(∩_∩)O~
点赞  2009-6-25 10:12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复