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

HALL读取问题

Hello TI:

在使用F28027做BLDC的有感控制时,使用GPIO16 17 18作为外部触发中断读取HALL的值,在中断中使用下面的语句读取HALL值。

Hall= (GpioDataRegs.GPADAT.all >>16) & 0x00000007;   (Hall的类型为unsigned char) 

GpioDataRegs.GPADAT.all对应16 17 18的bit值是正确的,但是最终得到的结果并不正确。为何不能这样直接读取???

注意到在BLDC_Sensored(28035)例程中读取HALL的方式为

temp = (GpioDataRegs.GPADAT.all>>24)&0x00000007; /* read all three GPIOs at once*/ \
\
HallGpioBitA = (temp&0x00000001);          /* save GPIO24 – A*/ \
HallGpioBitB = (temp&0x00000002)>>1;   /* save GPIO25 – B*/ \
HallGpioBitC = (temp&0x00000004)>>2;     /* save GPIO26 – C*/ \
HallGpioBitA = HallGpioBitA;                         /*<<2; shift GPIO24 – A*/ \
HallGpioBitB = HallGpioBitB<<1;                 /* shift GPIO25 – B*/ \
HallGpioBitC = HallGpioBitC<<2;               /*<<1; shift GPIO26 – C*/ \
\
v.HallGpio = HallGpioBitA + HallGpioBitB + HallGpioBitC;

这里为何不直接采取temp的值作为HALL结果呢???

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