[STC单片机] ST12C5A60AD与STC12C5620AD的SPI通讯

[复制链接]
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部