基于DSP28335的M/T法测速程序与硬件连接
时间: 2023-11-27 21:50:20 浏览: 48
M/T法是常用的测速方法之一,它通过测量旋转体上某一点的运动状态,推导出旋转体的转速或者线速度。下面我来介绍一下基于DSP28335的M/T法测速程序和硬件连接。
硬件连接:
1.将编码器的A相和B相信号分别接到DSP28335的GPIO口上,可以选择XINT1和XINT2。
2.将编码器的Z相信号接到DSP28335的GPIO口上,可以选择XINT3。
3.将编码器的电源和地线接到DSP28335的相应端口上。
程序设计:
1.配置GPIO口和中断服务函数:
```c
//配置GPIO口
void InitEncoderGpio(void)
{
EALLOW;
//配置A相
GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0; //使能上拉
GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 1; //配置为XINT1
XIntruptRegs.XINT1CR.bit.POLARITY = 0;//设置为下降沿触发
//配置B相
GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0; //使能上拉
GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 1; //配置为XINT2
XIntruptRegs.XINT2CR.bit.POLARITY = 0;//设置为下降沿触发
//配置Z相
GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; //使能上拉
GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 1; //配置为XINT3
XIntruptRegs.XINT3CR.bit.POLARITY = 0;//设置为下降沿触发
EDIS;
}
//中断服务函数
interrupt void EncoderISR(void)
{
//处理编码器信号
//...
//清除中断标志位
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
```
2.初始化DSP28335的中断向量表:
```c
//初始化中断向量表
void InitPieVectTable(void)
{
int16 i;
for(i=0;i<128;i++)
PieVectTable.M_INT[i] = &ISR_ILLEGAL;
PieVectTable.XINT1 = &EncoderISR;
PieVectTable.XINT2 = &EncoderISR;
PieVectTable.XINT3 = &EncoderISR;
}
```
3.启用中断:
```c
//启用中断
void EnableInterrupts(void)
{
EINT; //总中断使能
ERTM; //实时中断使能
}
```
4.编写主程序:
```c
void main(void)
{
InitSysCtrl(); //初始化系统时钟和GPIO口
InitEncoderGpio(); //初始化编码器GPIO口
InitPieVectTable(); //初始化中断向量表
EnableInterrupts(); //启用中断
//主循环
while(1)
{
//读取编码器的计数值
//...
//计算速度
//...
}
}
```
以上是基于DSP28335的M/T法测速程序和硬件连接,具体实现可以根据实际情况进行调整。