一、母线电压采集问题:文件目录(C:\ti\controlSUITE\development_kits\TMDSIDDK_v2.0\IDDK_PM_Servo_F2837x_v2_00_00_00)
目录下的IDDK_PM_Servo_F2837x.C文件中:
1、母线电压采样配置:
// Bus Voltage Feedback at B0 (not used) 母线电压反馈
// **************************************
AdcbRegs.ADCSOC3CTL.bit.CHSEL = 0; // SOC3 will convert pin B0
AdcbRegs.ADCSOC3CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles
AdcbRegs.ADCSOC3CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C
//源程序没有以下这两句,添加后进行仿真,旋转母线电压20V~30V,使用示波器观察MCU端口有电压变化,而软件读取ADCbResultRegs.ADCPPB4RESULT 中的数据始随电压值变化,通过读取的寄存器或保存数组中可以看到,存在一两个数据是错误的,不知道问题出在哪里,其它值根据测得电压值计算是对的。
AdcbRegs.ADCPPB4CONFIG.bit.CONFIG = 3; //dx PPB is associated with SOC3
AdcbRegs.ADCPPB4OFFCAL.bit.OFFCAL = 0; //dx Write zero to this for now till offset ISR is run
以下是仿真时,读取寄存器值、读取多个电压值、电压最大值、最小值截取,如下图:
以上电压值是通过ADC_VBUS[20] = AdcbResultRegs.ADCPPB4RESULT.bit.PPBRESULT;得到的,会仿真时也会发现寄存器中的值出错,该图中1228值就是错误的;通过软件进行筛选最大最小值后,最大值2132,最小值会更新到0;问题找出。
2、电流采样部分配置:
#if (CGND == HOT)
// Shunt Motor Currents (SV) @ A4 反馈电流Ifb-SV
// ********************************
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin A4 采样电流管脚A4 (A4 反馈电流Ifb-SV)
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 采样窗口设置
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 根据根据需要进行配置
// Configure the post processing block (PPB) to eliminate subtraction related calculation
AdcaRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcaRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
// Shunt Motor Currents (SW) @ B4 反馈电流Ifb-SW
// ********************************
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin B4 采样电流管脚B4
AdcbRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 在系统时钟周期采样窗口
AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 触发源选择
// Configure PPB to eliminate subtraction related calculation
AdcbRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcbRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
#endif
电压采样部分我对照一下手册,没有找出问题在哪里,又对照一下电阻采样部分配置,认为配置方式是一样的,而电流采样部分确是正确的(电机可以正常运行,电流波形可以看到);所有目前没有搞明白问题所在,麻烦你帮忙解决一下,多谢!
Eric Ma:
首先,建议你下载一下勘误表,然后看一下你用的芯片版本,里面的有一些ADC的勘误。
其次,建议你直接输入一个稳定的电压,如果用电池输入最好,测一下是否还有这种波动,防止是因为你信号的原因。
ERIC
一、母线电压采集问题:文件目录(C:\ti\controlSUITE\development_kits\TMDSIDDK_v2.0\IDDK_PM_Servo_F2837x_v2_00_00_00)
目录下的IDDK_PM_Servo_F2837x.C文件中:
1、母线电压采样配置:
// Bus Voltage Feedback at B0 (not used) 母线电压反馈
// **************************************
AdcbRegs.ADCSOC3CTL.bit.CHSEL = 0; // SOC3 will convert pin B0
AdcbRegs.ADCSOC3CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles
AdcbRegs.ADCSOC3CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C
//源程序没有以下这两句,添加后进行仿真,旋转母线电压20V~30V,使用示波器观察MCU端口有电压变化,而软件读取ADCbResultRegs.ADCPPB4RESULT 中的数据始随电压值变化,通过读取的寄存器或保存数组中可以看到,存在一两个数据是错误的,不知道问题出在哪里,其它值根据测得电压值计算是对的。
AdcbRegs.ADCPPB4CONFIG.bit.CONFIG = 3; //dx PPB is associated with SOC3
AdcbRegs.ADCPPB4OFFCAL.bit.OFFCAL = 0; //dx Write zero to this for now till offset ISR is run
以下是仿真时,读取寄存器值、读取多个电压值、电压最大值、最小值截取,如下图:
以上电压值是通过ADC_VBUS[20] = AdcbResultRegs.ADCPPB4RESULT.bit.PPBRESULT;得到的,会仿真时也会发现寄存器中的值出错,该图中1228值就是错误的;通过软件进行筛选最大最小值后,最大值2132,最小值会更新到0;问题找出。
2、电流采样部分配置:
#if (CGND == HOT)
// Shunt Motor Currents (SV) @ A4 反馈电流Ifb-SV
// ********************************
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin A4 采样电流管脚A4 (A4 反馈电流Ifb-SV)
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 采样窗口设置
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 根据根据需要进行配置
// Configure the post processing block (PPB) to eliminate subtraction related calculation
AdcaRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcaRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
// Shunt Motor Currents (SW) @ B4 反馈电流Ifb-SW
// ********************************
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin B4 采样电流管脚B4
AdcbRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 在系统时钟周期采样窗口
AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 触发源选择
// Configure PPB to eliminate subtraction related calculation
AdcbRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcbRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
#endif
电压采样部分我对照一下手册,没有找出问题在哪里,又对照一下电阻采样部分配置,认为配置方式是一样的,而电流采样部分确是正确的(电机可以正常运行,电流波形可以看到);所有目前没有搞明白问题所在,麻烦你帮忙解决一下,多谢!
dxss dx:
回复 Eric Ma:
Eric ma:
你好!我使用的芯片是F28379DZwTT,图片如下:.
1、我使用示波器检出进入DSP管脚的电压,没有出现波动现象,比较平稳;在官网网上下载了Silicon Errata F28379D .pdf,以下是一些错误列表,看了半天,不知道如何使用;也不知道如何解决?(另外使用例程:C:\ti\controlSUITE\device_support\F2837xD\v210\F2837xD_examples_Cpu1\adc_soc_software下的代码,一样存在ADC采样错误值),麻烦你帮助一下,谢谢!
2、这块板子是从原厂TI买的,做伺服使用的(目录路径:C:\ti\controlSUITE\development_kits\TMDSIDDK_v2.0\IDDK_PM_Servo_F2837x_v2_00_00_00),另外还有一个问题是,矢量控制需要采集母线电压,母线电压也应该在计算中应用到的,而官网代码没有用采集母线电压,这点想不通,有疑问。
以下是原始注释:
// Bus Voltage Feedback at B0 (not used) 母线电压反馈 // ************************************** AdcbRegs.ADCSOC3CTL.bit.CHSEL = 0; // SOC3 will convert pin B0 AdcbRegs.ADCSOC3CTL.bit.ACQPS = 50; // sample window in SYSCLK cycles AdcbRegs.ADCSOC3CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C
麻烦您帮忙解决以下,实在没有招了!多谢!
一、母线电压采集问题:文件目录(C:\ti\controlSUITE\development_kits\TMDSIDDK_v2.0\IDDK_PM_Servo_F2837x_v2_00_00_00)
目录下的IDDK_PM_Servo_F2837x.C文件中:
1、母线电压采样配置:
// Bus Voltage Feedback at B0 (not used) 母线电压反馈
// **************************************
AdcbRegs.ADCSOC3CTL.bit.CHSEL = 0; // SOC3 will convert pin B0
AdcbRegs.ADCSOC3CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles
AdcbRegs.ADCSOC3CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C
//源程序没有以下这两句,添加后进行仿真,旋转母线电压20V~30V,使用示波器观察MCU端口有电压变化,而软件读取ADCbResultRegs.ADCPPB4RESULT 中的数据始随电压值变化,通过读取的寄存器或保存数组中可以看到,存在一两个数据是错误的,不知道问题出在哪里,其它值根据测得电压值计算是对的。
AdcbRegs.ADCPPB4CONFIG.bit.CONFIG = 3; //dx PPB is associated with SOC3
AdcbRegs.ADCPPB4OFFCAL.bit.OFFCAL = 0; //dx Write zero to this for now till offset ISR is run
以下是仿真时,读取寄存器值、读取多个电压值、电压最大值、最小值截取,如下图:
以上电压值是通过ADC_VBUS[20] = AdcbResultRegs.ADCPPB4RESULT.bit.PPBRESULT;得到的,会仿真时也会发现寄存器中的值出错,该图中1228值就是错误的;通过软件进行筛选最大最小值后,最大值2132,最小值会更新到0;问题找出。
2、电流采样部分配置:
#if (CGND == HOT)
// Shunt Motor Currents (SV) @ A4 反馈电流Ifb-SV
// ********************************
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin A4 采样电流管脚A4 (A4 反馈电流Ifb-SV)
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 采样窗口设置
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 根据根据需要进行配置
// Configure the post processing block (PPB) to eliminate subtraction related calculation
AdcaRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcaRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
// Shunt Motor Currents (SW) @ B4 反馈电流Ifb-SW
// ********************************
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin B4 采样电流管脚B4
AdcbRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 在系统时钟周期采样窗口
AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 触发源选择
// Configure PPB to eliminate subtraction related calculation
AdcbRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcbRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
#endif
电压采样部分我对照一下手册,没有找出问题在哪里,又对照一下电阻采样部分配置,认为配置方式是一样的,而电流采样部分确是正确的(电机可以正常运行,电流波形可以看到);所有目前没有搞明白问题所在,麻烦你帮忙解决一下,多谢!
Eric Ma:
回复 dxss dx:
1. 把那个母线电压输入到别的通道,用controlSUITE的例程测,有问题吗?会不会是那个通道损坏的原因?
2. 因为用的是有传感器的矢量控制算法,所以不需要母线电压。母线电压只是用来做一些母线波动前馈补偿来用,可以用于当母线波动时,快速PID响应。如果没有母线补偿,也没关系。
ERIC
一、母线电压采集问题:文件目录(C:\ti\controlSUITE\development_kits\TMDSIDDK_v2.0\IDDK_PM_Servo_F2837x_v2_00_00_00)
目录下的IDDK_PM_Servo_F2837x.C文件中:
1、母线电压采样配置:
// Bus Voltage Feedback at B0 (not used) 母线电压反馈
// **************************************
AdcbRegs.ADCSOC3CTL.bit.CHSEL = 0; // SOC3 will convert pin B0
AdcbRegs.ADCSOC3CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles
AdcbRegs.ADCSOC3CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C
//源程序没有以下这两句,添加后进行仿真,旋转母线电压20V~30V,使用示波器观察MCU端口有电压变化,而软件读取ADCbResultRegs.ADCPPB4RESULT 中的数据始随电压值变化,通过读取的寄存器或保存数组中可以看到,存在一两个数据是错误的,不知道问题出在哪里,其它值根据测得电压值计算是对的。
AdcbRegs.ADCPPB4CONFIG.bit.CONFIG = 3; //dx PPB is associated with SOC3
AdcbRegs.ADCPPB4OFFCAL.bit.OFFCAL = 0; //dx Write zero to this for now till offset ISR is run
以下是仿真时,读取寄存器值、读取多个电压值、电压最大值、最小值截取,如下图:
以上电压值是通过ADC_VBUS[20] = AdcbResultRegs.ADCPPB4RESULT.bit.PPBRESULT;得到的,会仿真时也会发现寄存器中的值出错,该图中1228值就是错误的;通过软件进行筛选最大最小值后,最大值2132,最小值会更新到0;问题找出。
2、电流采样部分配置:
#if (CGND == HOT)
// Shunt Motor Currents (SV) @ A4 反馈电流Ifb-SV
// ********************************
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin A4 采样电流管脚A4 (A4 反馈电流Ifb-SV)
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 采样窗口设置
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 根据根据需要进行配置
// Configure the post processing block (PPB) to eliminate subtraction related calculation
AdcaRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcaRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
// Shunt Motor Currents (SW) @ B4 反馈电流Ifb-SW
// ********************************
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin B4 采样电流管脚B4
AdcbRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 在系统时钟周期采样窗口
AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 触发源选择
// Configure PPB to eliminate subtraction related calculation
AdcbRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcbRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
#endif
电压采样部分我对照一下手册,没有找出问题在哪里,又对照一下电阻采样部分配置,认为配置方式是一样的,而电流采样部分确是正确的(电机可以正常运行,电流波形可以看到);所有目前没有搞明白问题所在,麻烦你帮忙解决一下,多谢!
dxss dx:
回复 Eric Ma:
Eric Ma:
你好!
1、我根据你所提示的,将原来B0管脚的母线电压输入信号,连接到到C3管脚上,也有采样错误数据。
配置:
//将管脚连接到C3上,配置如下:
AdccRegs.ADCSOC2CTL.bit.CHSEL = 3; // SOC2 will convert pin C3 AdccRegs.ADCSOC2CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles AdccRegs.ADCSOC2CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C // Configure PPB to eliminate subtraction related calculation AdccRegs.ADCPPB3CONFIG.bit.CONFIG = 2; // PPB is associated with SOC2 AdccRegs.ADCPPB3OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
读取寄存器AdccResultRegs.ADCPPB3RESULT.bit.PPBRESULT中数据,也有错误值。
所以应该判断不是原来的管脚损坏,个人认为应该是手册配置上有错误或芯片ADC模块有缺陷,勘误手册看了一遍,不知道如何下手,感觉也没有明确指出错误点或明确如何改正。目前比较困惑。
2、因为是做伺服控制,所以控制精度需要很高,如果没有母线电机参与计算,在带载变化过大时及反电动势补偿,过欠压保护都没法做的,会存在较大风险,所以目前急切需要配置好母线采样;(另外,由于目前采样问题出现错误采样数据,极有可能在采样Ia、Ib电流值也会存在错误数据,若上高压风险可能会更大。)
我们公司在上海,联系的几家代理商答应解决,确迟迟没有结果,想拜访TI原厂工程师,代理们为了维护面子,情愿做不下来单子,也不提供原厂的联系方式,问题一直拖2个月了,一直很郁闷。
一、母线电压采集问题:文件目录(C:\ti\controlSUITE\development_kits\TMDSIDDK_v2.0\IDDK_PM_Servo_F2837x_v2_00_00_00)
目录下的IDDK_PM_Servo_F2837x.C文件中:
1、母线电压采样配置:
// Bus Voltage Feedback at B0 (not used) 母线电压反馈
// **************************************
AdcbRegs.ADCSOC3CTL.bit.CHSEL = 0; // SOC3 will convert pin B0
AdcbRegs.ADCSOC3CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles
AdcbRegs.ADCSOC3CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C
//源程序没有以下这两句,添加后进行仿真,旋转母线电压20V~30V,使用示波器观察MCU端口有电压变化,而软件读取ADCbResultRegs.ADCPPB4RESULT 中的数据始随电压值变化,通过读取的寄存器或保存数组中可以看到,存在一两个数据是错误的,不知道问题出在哪里,其它值根据测得电压值计算是对的。
AdcbRegs.ADCPPB4CONFIG.bit.CONFIG = 3; //dx PPB is associated with SOC3
AdcbRegs.ADCPPB4OFFCAL.bit.OFFCAL = 0; //dx Write zero to this for now till offset ISR is run
以下是仿真时,读取寄存器值、读取多个电压值、电压最大值、最小值截取,如下图:
以上电压值是通过ADC_VBUS[20] = AdcbResultRegs.ADCPPB4RESULT.bit.PPBRESULT;得到的,会仿真时也会发现寄存器中的值出错,该图中1228值就是错误的;通过软件进行筛选最大最小值后,最大值2132,最小值会更新到0;问题找出。
2、电流采样部分配置:
#if (CGND == HOT)
// Shunt Motor Currents (SV) @ A4 反馈电流Ifb-SV
// ********************************
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin A4 采样电流管脚A4 (A4 反馈电流Ifb-SV)
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 采样窗口设置
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 根据根据需要进行配置
// Configure the post processing block (PPB) to eliminate subtraction related calculation
AdcaRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcaRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
// Shunt Motor Currents (SW) @ B4 反馈电流Ifb-SW
// ********************************
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin B4 采样电流管脚B4
AdcbRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 在系统时钟周期采样窗口
AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 触发源选择
// Configure PPB to eliminate subtraction related calculation
AdcbRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcbRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
#endif
电压采样部分我对照一下手册,没有找出问题在哪里,又对照一下电阻采样部分配置,认为配置方式是一样的,而电流采样部分确是正确的(电机可以正常运行,电流波形可以看到);所有目前没有搞明白问题所在,麻烦你帮忙解决一下,多谢!
dxss dx:
回复 dxss dx:
Eric Ma:
你好!确保外部给定信号是稳定的,我们使用示波器和万用表都进行测试过;做如下实验:(之前只有F28379D板子,没有F28377D板子,昨天找到板子,发现异常如下:)
1、我们配置B0通道,采样电压:
发现使用的是F28379D,在F28379D板子上采样母线电压是错误的;同样的程序,我们下载到F28377D板子上,采样的数据是正确的。
2、为了排除F28379D的通道B0损害可能;进行配置到A0通道上:
同样发现使用的是F28379D,在F28379D板子上采样母线电压是错误的;同样的程序,我们下载到F28377D板子上,采样的数据是正确的。
1>下图是:在F28377D板子,最大值是1979,最小值是1968;没有波动,采样值与论值相符合。
2>以下是F28379D开发板采样数据如下:F28379D采样最大值是2752,采样最小值是1056;采样值波动很大。(外面给的信号,通过示波器测量都是稳定的;)
麻烦吴Eric Ma帮忙确认一下,F28379D(完整型号:TMX320F28379DZWTT)芯片是否存在异常。急等答复。多谢!
一、母线电压采集问题:文件目录(C:\ti\controlSUITE\development_kits\TMDSIDDK_v2.0\IDDK_PM_Servo_F2837x_v2_00_00_00)
目录下的IDDK_PM_Servo_F2837x.C文件中:
1、母线电压采样配置:
// Bus Voltage Feedback at B0 (not used) 母线电压反馈
// **************************************
AdcbRegs.ADCSOC3CTL.bit.CHSEL = 0; // SOC3 will convert pin B0
AdcbRegs.ADCSOC3CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles
AdcbRegs.ADCSOC3CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C
//源程序没有以下这两句,添加后进行仿真,旋转母线电压20V~30V,使用示波器观察MCU端口有电压变化,而软件读取ADCbResultRegs.ADCPPB4RESULT 中的数据始随电压值变化,通过读取的寄存器或保存数组中可以看到,存在一两个数据是错误的,不知道问题出在哪里,其它值根据测得电压值计算是对的。
AdcbRegs.ADCPPB4CONFIG.bit.CONFIG = 3; //dx PPB is associated with SOC3
AdcbRegs.ADCPPB4OFFCAL.bit.OFFCAL = 0; //dx Write zero to this for now till offset ISR is run
以下是仿真时,读取寄存器值、读取多个电压值、电压最大值、最小值截取,如下图:
以上电压值是通过ADC_VBUS[20] = AdcbResultRegs.ADCPPB4RESULT.bit.PPBRESULT;得到的,会仿真时也会发现寄存器中的值出错,该图中1228值就是错误的;通过软件进行筛选最大最小值后,最大值2132,最小值会更新到0;问题找出。
2、电流采样部分配置:
#if (CGND == HOT)
// Shunt Motor Currents (SV) @ A4 反馈电流Ifb-SV
// ********************************
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin A4 采样电流管脚A4 (A4 反馈电流Ifb-SV)
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 采样窗口设置
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 根据根据需要进行配置
// Configure the post processing block (PPB) to eliminate subtraction related calculation
AdcaRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcaRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
// Shunt Motor Currents (SW) @ B4 反馈电流Ifb-SW
// ********************************
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 4; // SOC0 will convert pin B4 采样电流管脚B4
AdcbRegs.ADCSOC0CTL.bit.ACQPS = 30; // sample window in SYSCLK cycles 在系统时钟周期采样窗口
AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // trigger on ePWM1 SOCA/C 触发源选择
// Configure PPB to eliminate subtraction related calculation
AdcbRegs.ADCPPB1CONFIG.bit.CONFIG = 0; // PPB is associated with SOC0
AdcbRegs.ADCPPB1OFFCAL.bit.OFFCAL = 0; // Write zero to this for now till offset ISR is run
#endif
电压采样部分我对照一下手册,没有找出问题在哪里,又对照一下电阻采样部分配置,认为配置方式是一样的,而电流采样部分确是正确的(电机可以正常运行,电流波形可以看到);所有目前没有搞明白问题所在,麻烦你帮忙解决一下,多谢!
hang1:
回复 dxss dx:
1不接采样信号 对比 采样结果
2不接采样信号,直接采样内部基准电压,对比采样结果