主题中讨论的其他器件: TMS320F28334
您好!
几年来、我们一直在将 TMS320F28335完美地应用到我们的高级步进驱动器中。
现在、对于供应链上的问题、我尝试使用具有 相同封装的 TMS320F28334。
但我发现 ADC 工作不正常。 在我们的应用中、转换与 PWM 同步。
我已对工程进行了修改、以使用此新模型、仅更改 GEL 和链接器文件。 工作代码完全相同。
要使用此 DSP、我应该更改什么? 理论上只能更改内存大小!
此致。
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.
您好!
几年来、我们一直在将 TMS320F28335完美地应用到我们的高级步进驱动器中。
现在、对于供应链上的问题、我尝试使用具有 相同封装的 TMS320F28334。
但我发现 ADC 工作不正常。 在我们的应用中、转换与 PWM 同步。
我已对工程进行了修改、以使用此新模型、仅更改 GEL 和链接器文件。 工作代码完全相同。
要使用此 DSP、我应该更改什么? 理论上只能更改内存大小!
此致。
您的应用是否使用 eCAP5或 eCAP6 ( 32位捕捉输入或辅助 PWM 输出)?
数据表显示 TMS320F28335具有 eCAP1/2/3/4/5/6、但 TMS320F28334只有 eCAP1/2/3/4:
Fermin、
您能描述一下导致 ADC 问题的 F28334发生了什么情况吗? 从您的帖子中、结果的时序似乎在 F28335与 F28334之间不一致? 这将有助于澄清这一点。 这两个器件之间的 ADC 或 PWM 没有差异。
虽然 F28334与 F28335上的闪存在物理上只有一半、但扇区大小也是1/2、因此仍然有8个扇区、以实现更好的擦除灵活性。 除了前面提到的 eCAP、这是两个器件之间唯一的其他差异。
现在就提出一些想法、但您的代码中是否有一些嵌入式擦除在移植时可能没有考虑到这一点?
最棒的
Matthew
您好!
我将生成2个 PWM 信号来控制两个线圈中的电流。
与这些 PWM 同步、我测量与生成的电流相对应的两个电压、并按如下方式提取 ISR 中的转换值:
中断空 ADC_ISR (空)
{
Adc1Res = AdcRegs.ADCRESULT1 >> 4;//将结果存储在全局范围内
Adc2Res = AdcRegs.ADCRESULT0 >> 4;
//为下一个 ADC 序列重新初始化
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; //复位 SEQ1
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; //清除 INT SEQ1位
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;//确认 PIE 中断
}
现在、当我获取该 Adc1Res 或 Adc2Res 时、值不会改变、始终= 2339
修改我的修改后的28334_RAM_lnk.cmd 更改如下:
//原件
//RAML1 :origin = 0x009000,length = 0x001000
//RAML2 :origin = 0x00A000、length = 0x001000
//RAML3 :origin = 0x00B000、length = 0x001000
//Adapted
RAML1 :origin = 0x009000,length = 0x003000 //为.text 空间中存储的变量添加了空间
RAML2 :origin = 0x00C000、length = 0x001000 //允许编译
RAML3 :origin = 0x00D000、length = 0x001000
我可能对每个区域的大小分配有误。 但是、我也尝试过原始 F28334.cmd、也不起作用。
在回答您的最后一个问题时、我只更改了链接器文件、因为我几年前完成了此开发、现在再也不能更改了。
谢谢。
DMA 也可以访问 RAML2和 RAML3、在 F28335的早期代码中、是否有可能将它们分配给某些 DMA 用途、而这正是对数据的过度写入?
当您看到2339时、它是否直接来自 ADCRESULT 的 Adc1Res 变量? 您能否在 ADC_ISR 中的此部分代码中设置断点以确认 ADCRESULT 是否也卡住?
如果您还可以检查 ADCINREFP/REFM 引脚并记下电压、我们可以确保 ADC 正确加电。
最棒的
Matthew
您好!
现在是时候穿上这套蠕虫套装了!!!
ADCRFM 上的电压不正确、因为 ADCREXT 输入电阻器和 ADCREFP 滤波电容器之间的交叉非常小。
现在、28334的测量与28335完美!
顺便说一下、在测试期间、什么是 RAM 中的良好内存分配?
相反、这是:
RAML1:origin = 0x009000,length = 0x003000 //为.text 空间中存储的变量添加了空间
RAML2:origin = 0x00C000、length = 0x001000 //允许编译
RAML3:origin = 0x00D000、length = 0x001000
谢谢。
Fermin