主题:SysConfig 中讨论的其他器件
工具/软件:
尊敬的 TI 专家:
客户正在使用 SDK9.1。 客户在 ICSSG0上运行 EtherCAT、 在 ICSSG1上运行其 SigmaDelta。
他们已经按照以下线程配置 SYNC0。
它们的 SysConfig 配置如下所示。


但是、客户发现会这样 如果 SYNC0与 PWM 同步失败、则会导致 SYNC0与内部中断之间的漂移、以及 Σ-Δ 电流采样噪声和失速。
客户希望能知道是否可以在这里提供一些指导。
谢谢、
Kevin
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
尊敬的 TI 专家:
客户正在使用 SDK9.1。 客户在 ICSSG0上运行 EtherCAT、 在 ICSSG1上运行其 SigmaDelta。
他们已经按照以下线程配置 SYNC0。
它们的 SysConfig 配置如下所示。


但是、客户发现会这样 如果 SYNC0与 PWM 同步失败、则会导致 SYNC0与内部中断之间的漂移、以及 Σ-Δ 电流采样噪声和失速。
客户希望能知道是否可以在这里提供一些指导。
谢谢、
Kevin
尊敬的 Thomas:
我们根据参考进行了一些同步映射。 但我没有看到 PWM、sync0和内部任务之间的同步与 PWM 对齐。 我怀疑我们错过了一些内容、希望您能与我们一起回顾一下。
第二个问题是、我们想知道如何在直流模式下实现时钟同步。 您能否简单介绍一下 TI 解决方案、即网络基准时钟之间的时钟同步、基于 ECAT 消息中的时间戳驱动本地时钟、以及 ECAT sync0和其他任务(如 PWM、Σ-Δ 电流检测、较慢的调度器)之间的任务同步? 参考手册似乎提供了这样的解决方案。 非常感谢。
您好 Aaron、
根据 Logan 的最后一个回复、CLTRMMR EPWM0的先前值始终为0、这意味着配置无效。
客户发现发生这种情况的根本原因、就像 Logan 提到的、他们需要在写入 MMR 寄存器之前添加解锁功能、现在他们可以读出值为0x200、这表明现在配置了时间同步路由器38。
客户明天将测试实际行为、然后回来。
同时、能否请您反馈 Logan 的问题、是否必须使用以下代码行?
/*强制 EPWM0的软件同步。 其他 PWM 将通过硬件同步菊花链进行同步。 */
EPWM_tbTriggerSwSync (gEpwm0BaseAddr);
谢谢、
Kevin
HI RAM、
感谢你的帮助。 我们也认为它与 SDF 参数和配置有关。 我的同事 Ariel 将更新 SDFM 配置。 这里更多地介绍了电流检测噪声现象。 希望这些信息能为您提供帮助。

谢谢
Logan
关于 SD 配置:
void SigmaDeltaManagerAM243x::SDLoadDefaultParams()
{
uint16_t i、j;
PRUManagerAM243x* p_PRU_manager = PRUManagerAM243x::GetSingleton();
sPruInfo s_PRU_basic_info = p_PRU_manager->GetApplicationInfo (ePruFunctions::PRU_SigmaDelta);
对于(I = 0;I<MAX_NUM_OF_Axs;I++)
{
SigmaDeltaManagerAM243x:::m_Map_SD_LoadShare[i] Axis_Data。s Sdfm_Params。U16_LoadShare = 0;/* loadshare*/
SigmaDeltaManagerAM243x:::m_Map_SD_PRU_ID[i] Axis_Data。s Sdfm_Params。U16_AM243x Pru_Id = s_PRU_basic_info.m_U16_PRU_ID;// 1
SigmaDeltaManagerAM243x:::m_Map_SD_PRU_DSP[i]。s Sdfm_Params。U16_AM243x Slice_Id = Axis_Data Slice_Id;//1
SigmaDeltaManagerAM243x:::m_Map_SD_PRU[i].s Axis_Data Sdfm_Params.u32_PRU = 300000000;/* Pru_Clock 时钟*/
SigmaDeltaManagerAM243x:::m_Map_SD_IEP[i].s Axis_Data Sdfm_Params.p_[0]= 300000000;/* Iep_Clock 时钟*的值
SigmaDeltaManagerAM243x:::m_Map_SD_Microsoft[i] Axis_Data。s Sdfm_Params。Iep_Clock [1]= 0;
SigmaDeltaManagerAM243x:::m_Map_SD_SD_SD_SSD[i].s Axis_Data Sdfm_Params.u32_SD = 20000000;/* Sd_Clock 时钟的值(它应完全等于 SD 时钟值)*/
SigmaDeltaManagerAM243x:::m_Map_SD_Power[i] Axis_Data。s Sdfm_Params.U16_COM Is_Double_Update = 1;/*启用双更新*/
SigmaDeltaManagerAM243x:::m_Map_SD_MD_Microsoft[i].s Axis_Data Sdfm_Params.f_ First_Sample_Trigger_Time = 54.4;/*首次采样触发时间*/
SigmaDeltaManagerAM243x:::m_Map_SD_MD_Microsoft[i].s Axis_Data Sdfm_Params.f_ Second_Sample_Trigger_Time = 54.4 + 62.5;/*第二个采样触发时间*/
SigmaDeltaManagerAM243x:::m_Map_SD_PWM[i]。s pwm.u32_pwm Sdfm_Params = m_f_pwm_freq;/* Axis_Data Epwm_Out_Freq 输出频率*/
对于(j = 0;j<NUM_CH_SUPPORTED;j++)
{
SigmaDeltaManagerAM243x:::m_Map_SD_Reservd[i] Axis_Data。s Sdfm_Params.p_s Threshold_Parms [j]={350,000,1000、0};/*阈值参数(高、低和电阻)*/
SigmaDeltaManagerAM243x::::m_Map_SD_Channel[i].s Axis_Data Sdfm_Params.p_s Clock_Parms [j]={0、0};/*所有通道的时钟源和时钟反转*/
SigmaDeltaManagerAM243x:::m_Map_SD_MD_Power[i] Axis_Data。s Sdfm_Params.p_u32_P[j] Zero_Cross_Threshold = 1700;
}
对于(j = 0;j<NUM_SD_CH;j++)
{
SigmaDeltaManagerAM243x:::m_Map_SD_AM243[i].s Axis_Data Sdfm_Params.p_U16_U16_Power[j][0] Fast_Detect = 4;
SigmaDeltaManagerAM243x:::m_Map_SD_AM243[i].s Axis_Data Sdfm_Params.p_U16_U16_Power[j][1] Fast_Detect = 18;
SigmaDeltaManagerAM243x:::m_Map_SD_AM243[i].s Axis_Data Sdfm_Params.p_U16_U16_Power[j][2] Fast_Detect = 2;
}
SigmaDeltaManagerAM243x:::m_Map_SD_OSR[i]。s OSR.U16_OSR=255 Sdfm_Params;/*过流 Over_Current_Osr:影响计数为 Axis_Data + 1 */
SigmaDeltaManagerAM243x:::m_Map_SD_OSR[i].s Axis_Data OSR.U16_OSR=63;/*正常电流 Normal_Current_Osr:影响计数为 Sdfm_Params + 1*/
SigmaDeltaManagerAM243x:::m_Map_SD_SI[I].s Axis_Data Sdfm_Params.U16_COM En_Over_Current = 0;/*比较器启用*/
SigmaDeltaManagerAM243x:::m_Map_SD_Output[i].s Sdfm_Params.u32_Output Sdfm_Samples_Addr =(uint32_t)&g_p_u32_Output Axis_Data Sdfm_Sample;
SigmaDeltaManagerAM243x:::m_Map_SD_MD_Microsoft[i] Axis_Data。s Sdfm_Params。U16_AM243x En_Fast_Detect = 0;
SigmaDeltaManagerAM243x:::m_Map_SD_MD_Microsoft[i] Axis_Data。s Sdfm_Params。U16_AM243x En_Phase_Delay = 0;
SigmaDeltaManagerAM243x:::m_Map_SD_MD_Microsoft[i] Axis_Data。s Sdfm_Params。U16_AM243x En_Zero_Cross = 0;
SigmaDeltaManagerAM243x:::m_Map_SD_MD_Microsoft[i] Axis_Data。s Sdfm_Params。U16_AM243x En_Continuous_Mode = 0;
SigmaDeltaManagerAM243x:::m_Map_SD_MD_Microsoft[i] Axis_Data。u32_0V Axis_Current_= 0;
SigmaDeltaManagerAM243x:::m_Map_SD_MD_Power[i][u32_PowerW.0 Axis_Data Axis_Current_;
SigmaDeltaManagerAM243x:::m_Map_SD_AM243[i].u32_OSR.OSR = 262144;//m_MAP_OSR_Maxu Normal_Current_Osr Value_Output ((SigmaDeltaManagerAM243x:::m_Map_SD_AM24[i].s Max_Filter_Output_ Sdfm_Params Axis_Data Axis_Data + 1);
}
返回;
}
请假设 g 'i'(索引)为0并且不会更大
这是我们的 SDFM .asm -请注意、它是使用您当时发送给我们的以下代码编辑的: e2e.ti.com/.../Firmware2-_2800_1_2900_.asm
尊敬的 Logan/Ariel:
SigmaDeltaManagerAM243x::m_Map_SD_PWM_PWM[i] Axis_Data。s Sdfm_Params pwm.u32_pwm = m_f_pwm_freq;/* Epwm_Out_Freq 输出频率*/
请共享"m_f_pwm_freq"/*PWM 输出频率*/的配置值
我们仅经历了一个驱动阶段的电流检测噪声、在电路板中定义为 V 相。 [/报价]您正在为 V 相使用哪个 SDFM 通道? 在硬件设置或 SDFM 时钟输入源方面、V PHASE 和其他(工作相位)之间是否存在任何差异?
SDFM 时钟源是什么? 您是使用 SDK 中提供的 ECAP、还是使用任何外部时钟源?
BR、
Achala Ram
m_f_pwm_freq = 8000 -还请假设执行转换并获得正确的值。
通道1用于 V 相
通道2用于 W 相
通道0已配置-但未使用(.asm 未修改通道0)。
SDFM 实际上是 SDK 示例-提供的 ECAP

SDFM_PRU = 1
SDFM_TZ = 9
不知道您的意思:"? 在硬件设置或 SDFM 时钟输入源方面、V PHASE 和其他(工作相位)之间是否存在任何差异?
如果 GPIO 配置没有回答您的问题:请详细说明
尊敬的 Ariel:
SDFM 参数和固件更改看起来正确无误。 我还通过配置相同的参数测试了您共享的固件、但没有在任何信道上观察到任何噪音。

不确定您的意思是:"? 在硬件设置或 SDFM 时钟输入源方面、V PHASE 和其他(工作阶段)之间是否存在任何差异?'
硬件侧是否有任何因素会给 CH1 SD 数据输入增加噪声? 通道1 (SD1_DATA)和通道2 (SD2_DATA)如何接收输入? 它们是从同一调制器还是不同的调制器接收输入?
感谢与关注、
Achala Ram
我还要请各位回顾以下几点:
/*所有三个通道的配置如下*/
for (u16_sdfm_ch_num = 0;u16_sdfm_ch_num < NUM_CH_SUPPORT_PER_AXIS;u16_sdfm_ch_num++)
{
/*设置比较器 OSR 或过流 OSR*/
SDFM_setCompFilterOverSamplingRatio (hSdfm、U16_sdfm_ch_num、p_sdfm_PRMs->U16_PRMs Over_Current_Osr);
/*设置 ACC 源或过滤器类型*/
SDFM_configDataFilter (hSdfm、U16_sdfm_ch_num、U16_accumolator_filter_type);
/*为所有三个通道设置时钟反相和时钟源*/
SDFM_selectClockSource (hSdfm、u16_sdfm_ch_num、p_sdfm_PRMs->p_s Clock_Parms [u16_sdfm_ch_num]);
/*设置阈值*/
SDFM_setCompFilterThresholds (hSdfm、u16_sdfm_ch_num、p_sdfm_PRMs->p_s Threshold_Parms [u16_sdfm_ch_num]);
if (p_sdfm_PRMs->U16_IF En_Fast_Detect)
{
/*快速检测配置*/
SDFM_configFastDetect (hSdfm、u16_sdfm_ch_num、(uint8_t*) p_sdfm_PRMs->p_U16_PRM[u16_sdfm_ch_num] Fast_Detect);
}
if (p_sdfm_PRMs->U16_IF En_Over_Current)
{
SDFM_enableComparator (hSdfm、U16_sdfm_ch_num);
}
暴露
{
SDFM_disableComparator (hSdfm、u16_sdfm_ch_num);
}
/*仅对 AXIS 的第一个通道启用零交叉*/
if (p_sdfm_PRMs->U16_PRMs->U16_LoadShare En_Zero_Cross &&((p_sdfm_PRMs->U16_LoadShare && U16_sdfm_ch_num == 2)||(!p_sdfm_PRMs->U16_LoadShare))
{
SDFM_enableZeroCrossDetection (hSdfm、u16_sdfm_ch_num、p_sdfm_PRMs->p_u32_SDFm[u16_sdfm_ch_num] Zero_Cross_Threshold);
}
}
如前所述、我们正在使用通道1和通道2、但仍然配置了通道0、PRU 代码也会对其进行采样、但我们根本不使用这些数据。
如果我配置 ch0、这里是否有可能导致我们出现问题的东西?
谢谢
如前所述、我们正在使用通道1和通道2、但仍然配置了通道0、PRU 代码也会对其进行采样、但我们根本不使用这些数据。
如果我配置 ch0、这里是否有可能导致我们出现问题的东西?
[/报价]否、它不会导致其他通道(在固件端)出现任何问题。
我们知道它是检测噪声、因为当电机处于静止状态时、软件中记录的电流尖峰可能会达到2A。 我们的 ia 根据 iv 和 iw 计算。
您能否分享 CH1的原始数据( g_p_u32_Sdfm_SampleOutput 100-200个样本的值)? ia 计算时、添加额外/随机值是否有任何变化?
uch 现象很少发生、但确实发生了。 发生这种情况时、它可以持续很长的时间、直到有时进行下电上电。 我们通常会执行下电上电来重现故障。 并且尖峰在时间上非常随机地发生,在它上找不到持久性。
您能详细说明一下吗? 有时在 CH1 (V 相)电源复位后未观察到噪声吗?
此致、
Achala Ram
SigmaDeltaManagerAM243x:::m_Map_SD_DeltaManagerAM243x Axis_Data [i]。s Sdfm_Params。U16_USB Is_Double_Update = 1;/*启用双更新*/
SigmaDeltaManagerAM243x:::m_Map_SD_MD_Microsoft[i].s Axis_Data Sdfm_Params.f_ First_Sample_Trigger_Time = 54.4;/*首次采样触发时间*/
SigmaDeltaManagerAM243x:::m_Map_SD_CC_SQ[i].s Axis_Data Sdfm_Params.f_ Second_Sample_Trigger_Time = 54.4 + 62.5;/*第二个样本触发器
您是否可以禁用双重更新和检查、或提前触发第二个样本2 -3 µs? 如果 Sync0发生的较早或较晚(由1-2个 IEP 计数)、则双更新中第三个样本的时序窗口可能不匹配。
配置的第二个采样触发时间为116.9 µs、双更新完成时间为9.6 µs、使双更新的端点为126.5 µs (超过 IEP 复位窗口125us)。 如果 IEP 通过一个 IEP 计数提前或延迟复位、这可能会导致问题
此致、
Achala Ram
嗨 RAM
如果您还记得-您已经在这里帮助我解决了这个问题-除非仍有需要完成的部件缺失。
我们使用建议#2 (Firmware2.asm)-在每个第一个 NC 样本中清除缓冲区。
当时-我们在两个通道(v&w)上都看到了它。 我们还通过视频通话与您分享。
修复后,我们不再遇到它-它是非常持久和容易重现。
我们已经知道第二个采样时间是在新的 ePWM 周期开始后的时间。
即使建议的固件不能解决此问题-我们如何仅在1个通道而不是在两个通道上看到噪声?
由于此问题很难重现(有时需要几个小时)、我希望100%确定我们所做的任何更改、并了解此问题的根本原因。
我们必须启用双采样。
提前移动第二个采样触发器是可以的-但据我的理解、我将错过安静区域中的采样。
因此:
1.如果可能、我想得到一个答案-对于我们的第一个和第二个样品、最有效的起始采样时间应该是什么?
2..或者-如果解决方案2确实复位了缓冲区、则 IEP 计数器无需执行此操作。 是否有办法通过 IEP 计数器禁用 SD 缓冲器自动复位?
3.此外,反转 SD 时钟如何影响固件?
4.信道之间是否有延迟补偿? 如果是、它是如何工作的?