打印
[STC单片机]

ST12C5A60AD与STC12C5620AD的SPI通讯

[复制链接]
1633|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sherryky|  楼主 | 2013-10-24 16:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
系统采用ST12C5A60AD(外挂24M晶振)与STC12C5620AD(外挂16M晶振)实现SPI通讯传递数据。
其中60AD为从机:
void SPI_slave(void)
{
    SPCTL = 0;
    SPDAT = 0;
    SPSTAT= 0XC0;
    SPCTL = 0xED;
    IP2  |= 0x02;
    IP2H |= 0x02; //优先级提高到第一级
}
5620AD配置为主机:
void SPI_master(void)
{
    SPCTL = 0;
    SPDAT = 0;
    SPSTAT= 0xc0;
    SPCTL = 0xfd;
    SPSTAT = SPIF;
}
两个单片机的SPI端口都设置为准双向口模式,
在通讯中发现一个现象,就是数据传输的时候:如果传输的数据是奇数,最高位被置1,传输的数据时偶数,最高位被清0
将LSB改为MSB后SCK信号都产生不了,看了数据手册实在想不明白是怎么回事,请高手指点。
用逻辑分析仪读各信号逻辑和数据都是正确的。

相关下载

相关帖子

沙发
sherryky|  楼主 | 2013-10-24 16:59 | 只看该作者
即逻辑分析仪看到的信号是对的(即主机实际发出的信号),从机读到信号后就出问题了(即奇数最高位置1,偶数最高位清0)。

使用特权

评论回复
板凳
a20084666| | 2013-10-25 07:05 | 只看该作者
不懂帮你顶起

使用特权

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

本版积分规则

6

主题

20

帖子

0

粉丝