TI中文支持网
TI专业的中文技术问题搜集分享网站

ScanIf

SCANIF的SIFDACRx校不准,代码如下,请指教

取值代码:

m=10;
SIFCTL1 = 0;
SIFCTL3 &= ~(SIFIFGSET0 | SIFIFGSET1 |SIFIFGSET2);
SIFCTL3 |= 0;
j=0;
while (j<m)    //取十次值
{ SIFCTL1 = 0;
SIFDACR0 = 0x02FF; // SIFCH.0 – set to maximum value
SIFDACR1 = 0x02FF;
SIFCTL1 = 0x0201;
SIFOUT_Sta =FALSE;
for(k=0;(k<1000) && (SIFOUT_Sta==FALSE);k++)
{
for(i=0;i<=2000;i++)Feed_Dog();
SIFDACR0=SIFDACR0-1; SIFDACR1=SIFDACR1-1;
}
if(SIFOUT_Sta==TRUE)
{
SIFOUT_Sta =FALSE;
V0[j++] = SIFDACR1+1;
}
}
SIFCTL1 = 0;
SIFCTL3 &= ~(SIFIFGSET0 | SIFIFGSET1 |SIFIFGSET2);
SIFCTL3 |= SIFIFGSET0;
j=0;
while (j<m)
{
SIFCTL1 = 0;
SIFDACR0 = 0x200;
SIFDACR1 = 0x200;
SIFCTL1 = 0x0201;
SIFOUT_Sta =FALSE;
for(k=0;(k<1000) && (SIFOUT_Sta==FALSE);k++)
{
for(i=0;i<=2000;i++)Feed_Dog();
SIFDACR0=SIFDACR0+1;
SIFDACR1=SIFDACR1+1;
}
if(SIFOUT_Sta==TRUE)
{
SIFOUT_Sta =FALSE;
V1[j++] = SIFDACR1-1;
}
}
SIFCTL1 = 0;
V2=0;
Rank_Data(V0,m);   //从大到小排序
Rank_Data(V1,m);
for(j=2;j<8;j++)         //去除最大的两个和最小的两个取平均值
V2 += (V1[j] + V0[j]);
V2 /=12;                  
Calibration.SIFDACR_0 = V2 + 10;
Calibration.SIFDACR_1 = V2 – 5;

其中SIFOUT_Sta 由SCANIF的SIFIFG0中断来置为TRUE

HG:

你用的哪款芯片?

Jacky Xu:

SIF应该是FW427上的外设。

你可以先参考我们例程啊,flowmeter的源代码都是公开的。

zhi li10:

回复 Jacky Xu:

您好,例程的链接发我一下,我没找到,谢谢

zhi li10:

回复 HG:

FW428

Susan Yang:

回复 zhi li10:

可以在 http://www.ti.com/product/MSP430FW427/toolssoftware 下载例程

zhi li10:

回复 Susan Yang:

还是没有找到哦

灰小子:

回复 zhi li10:

http://www.ti.com/lit/zip/sprc154

赞(0)
未经允许不得转载:TI中文支持网 » ScanIf
分享到: 更多 (0)