本帖最后由 FSL_TICS_A 于 2014-5-5 11:37 编辑
下面这个程序就是一个模拟spi过程来读芯片max6675.开始总线时钟8m的,就总报错,后来我总线改24m了,就一切正常了,这是为什么呢?
uint R_MAX6675(uchar abc)//
{
uchar i,TongDao;
uint wd_data;
MAX_SCK=0;DelayNS(10);
TongDao=abc;
if(TongDao==1)
{
MAX_CS1=0;
MAX_CS2=1;
MAX_CS3=1;
MAX_CS4=1;
}
else if(TongDao==2)
{
MAX_CS1=1;
MAX_CS2=0;
MAX_CS3=1;
MAX_CS4=1;
}
else if(TongDao==3)
{
MAX_CS1=1;
MAX_CS2=1;
MAX_CS3=0;
MAX_CS4=1;
}
else if(TongDao==4)
{
MAX_CS1=1;
MAX_CS2=1;
MAX_CS3=1;
MAX_CS4=0;
}
else
{
MAX_CS1=1;
MAX_CS2=1;
MAX_CS3=1;
MAX_CS4=1;
}
DelayNS(10);
//15
MAX_SCK=1;DelayNS(10);
MAX_SCK=0;DelayNS(10);
wd_data=0;
//14~3 0-4095 0-1023.75c 温度值=1023.75*转换后的数字量/4095
for(i=0;i<12;i++)
{
MAX_SCK=1;DelayNS(10);
wd_data = wd_data << 1;
if(MAX_SO==1) wd_data++;
MAX_SCK=0;DelayNS(10);
}
//2
MAX_SCK=1;DelayNS(10);
MAX_SCK=0;DelayNS(10);
//1
MAX_SCK=1;DelayNS(10);
MAX_SCK=0;DelayNS(10);
//0
MAX_SCK=1;DelayNS(10);
MAX_SCK=0;DelayNS(10);
MAX_CS1=1;
MAX_CS2=1;
MAX_CS3=1;
MAX_CS4=1;
DelayNS(10000);
return wd_data;
} |