AD2S1210配置过程相关问题记录与解决(二)

项目场景:

 通过AD2S1210解码芯片对旋转变压器进行硬解码与DSP28335通过SPI通信获得转子位置,实现闭环控制。


问题描述

电机手动转动时正常工作,实际整车工况调试时在高速旋转过程偶发性角度突变
main中接收数据代码:


int main()
{
    InitSysCtrl();
    DINT;
 
	InitPieCtrl();
 
	IER = 0x0000;
	IFR = 0x0000;
 
	InitPieVectTable();
 
	AD2S1210_GPIO_Init();
 
	Init_SPI();
	EINT;
 
//初始化AD2S1210
	AD2S1210_Init();
//硬件已固定分辨率为10位 设置控制寄存器与实际分辨率匹配
//    WriteToAD2S1210(CONTROL, 0x7C);//10位分辨率 00
//设置激励频率 (晶振为8.192Mhz 分辨率为10位时 激励频率应该10Khz - 20Khz)
    WriteToAD2S1210(EXFREQUENCY, 0x3C);// 15KHZ -->FCW=(15KHz * 2^15)/8.192MHZ =60 = 0x3C
 
//初始化AD2S1210
    
 
    MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
    InitFlash();
 
    while(1)
    {
        temp = ReadPosition();//读取转子角度
        position = 5.3 * (temp * 1.0) / 60.0;//将角度由弧分转换为角度
    	delay(1);
 
    }
}

原因分析:

因为获取角度在PWM中断中执行,初期调试时为了尽可能优化PWM中断服务函数的执行时间(留余量避免中断溢出),当时最初是严格按照手册上的时序配置能正常使用后来为了优化采用了SAMPLE下降沿后立马拉低CS和WR然后马上进行SPI数据读取的方式,手动调试时与按手册配置并无区别,然后实际工况就采用了时间较短的这版程序。


解决方案:

将程序严格按照时序图进行配置,这件事告诉我们这么一个道理,规格书上的要求一定有着它的道理,稍微好一点的芯片都是经过芯片厂自己完备的测试后输出的规格书,所以不要像我一下耍小聪明。好啦本文的分享就到这啦,谢谢大家的阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值