STC12LE5A60S2的硬件SPI的逻辑分析截图-这样正常吗?
写了一个简单的程序测试STC12LE5A60S2的硬件SPI,程序附后,其实非常简单就是通过SPI发送一个0xAA(二进制10101010)。通过逻辑分析仪发现实际的时序图如下,实际上看到发出去的数据应该是0x94,晶振是22.1184的:
http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_693976QNFVBN.jpg
STC硬件SPI得到时序图 (原文件名:hard-spi.jpg)
代码如下:
#include <intrins.h>
#include "../cpus/stc1t.h"
#define SPIF 0x80
#define WCOL 0x40
#define ESPI 0x02
sbit SPISS = P1^3;
void init_spi()
{
SPCTL |= 0x80; // SSIG = 1 由MSTR确定是主机还是从机
SPCTL |= 0x40; // SPEN = 1 SPI使能
SPCTL |= 0x20; // DORD = 1 LSP最先发送
SPCTL |= 0x10; // MSTR = 1 确定MCU为主机
SPCTL |= 0x08; // CPOL = 1 SPI空闲时为高电平
SPCTL |= 0x04; // CPHA = 1 数据在前时钟沿驱动,后时钟沿采样
SPCTL &= 0xFC; // SPR1=0;SPR0=0 SPI时钟=CPU_CLK/4
IE2 |= ESPI; // IE2.1
}
#pragma disable
void spr_isr() interrupt 9 using 1
{
SPSTAT = SPIF | WCOL;
SPISS = 1;
}
void main()
{
init_spi();
EA = 1;
SPDAT = 0xAA;
while(1)
{
}
} 回复【楼主位】li3p
-----------------------------------------------------------------------
将SPI的时钟降为CPU_CLK/16之后的结果,可以看到多了一个bit,后面的8个bit倒是正确的。
有遇到过这个问题的前辈吗?是我哪里的问题?
http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_693977U1JPYT.jpg
STC硬件SPI得到时序图 - 16分频 (原文件名:hard-spi-2.jpg)
页:
[1]