打印

求助dsPIC的slave SPI问题

[复制链接]
3834|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhabin|  楼主 | 2010-9-11 22:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用dsPIC33FJ32MC204芯片, 工作于带片选16位从SPI模式。
       SPI1CON1bits.DISSCK = 0;
       SPI1CON1bits.DISSDO = 0;
       SPI1CON1bits.MODE16 = 1;
       SPI1CON1bits.SMP = 0;
       SPI1CON1bits.CKE = 0;
       SPI1CON1bits.CKP = 1;
       SPI1CON1bits.SSEN = 1;
       SPI1CON1bits.MSTEN = 0;
     当接受一个16位数, 发现一个怪问题, 其收到的16位数就是我写入SPI1BUF中的数左移一位, 即使关闭SDO输出(DISSDO=1)也一样。但一旦设置为8位模式(MODE16=0)则可以接收前面8位数。同样硬件在8位从SPI模式可以工作,说明接线没有问题。
     后来改用dsPIC33FJ64MC510, 则发现片选引脚SSI1(RB2)有问题, 将其拉成高电平也能接收。开始怀疑SSI的接线不正确, 采用帧SPI主模式做了一下测试, 在RB2的引脚上确实有帧脉冲输出, 接线上也应该没有问题。
    有哪位仁兄用过dsPIC33的从SPI模式, 盼望指教一下, 谢谢。
沙发
zuoyou| | 2010-9-11 22:45 | 只看该作者
看看IC BUG报告

使用特权

评论回复
板凳
zhabin|  楼主 | 2010-9-12 10:17 | 只看该作者
IC BUG报告中没有

使用特权

评论回复
地板
headwolf_83| | 2010-9-12 10:24 | 只看该作者
如果数据OK,但是移动了一位,这是典型的CKE,CKP设置错误。

使用特权

评论回复
5
headwolf_83| | 2010-9-12 10:25 | 只看该作者
不大可能是什么IC BUG。你要是不知道,也别怕折腾,反正就4种,一个个实验过去就可以了。

使用特权

评论回复
6
zhabin|  楼主 | 2010-9-13 21:29 | 只看该作者
你没看清楚, 在16位模式下, 我收到的数据是我发出的数据左移一位, 而不是应该接收的数据, 就好像设了LOOPBACK一样

使用特权

评论回复
7
zhabin|  楼主 | 2010-9-15 15:02 | 只看该作者
已解决, 最后发现还是CKE,CKP设置错误. PIC的slave SPI的表现很奇怪, 在设置错误时表现并不是简单得移位错误.

使用特权

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

本版积分规则

6

主题

21

帖子

0

粉丝