C2000中文网
专业的C2000技术问题咨询交流的网站

F28069 flash加载

C2000阅读(5)

配置为flash启动,TI例程已配置好,不用实际操作,开发板上的硬件设置Boot Mode Selection,配置为GetMode,也就是123分别是HHL。完成上述步骤之后,我就build project 和debug程序了,但是debug程序时,出现无法连接到目标的问题。 

拨码开关S1设置为GetMode,引脚123分别设为HHL,引脚3设为L就无法与仿真器相连,debug程序时就出现无法连接到目标的情况,但是配置flash启动又需要拨码开关S1的引脚3设为L,我就困惑了。flash加载和拨码开关S1应如何加载和配置呢?怎么才能debug成功?加载程序时Boot to SARAM模式和boot to flash之间如何切换?

 

Green Deng:配置为HHL就可以了。连接仿真器的时候,3脚会由仿真器拉高,不需要你配置。一旦3脚拉高之后,12脚的电平情况就无效了。至于你配置为HHL的时候无法连接目标的问题,我认为应该是有其他原因。建议多做一些交叉实验确认一下硬件是否有问题?什么情况下能正常连接?

配置为flash启动,TI例程已配置好,不用实际操作,开发板上的硬件设置Boot Mode Selection,配置为GetMode,也就是123分别是HHL。完成上述步骤之后,我就build project 和debug程序了,但是debug程序时,出现无法连接到目标的问题。 

拨码开关S1设置为GetMode,引脚123分别设为HHL,引脚3设为L就无法与仿真器相连,debug程序时就出现无法连接到目标的情况,但是配置flash启动又需要拨码开关S1的引脚3设为L,我就困惑了。flash加载和拨码开关S1应如何加载和配置呢?怎么才能debug成功?加载程序时Boot to SARAM模式和boot to flash之间如何切换?

 

yingying fu:

回复 Green Deng:

使用另一块板子按此方法测试,配置为HHL连接仿真器的时候,3脚与仿真器连接的一端JTAG_TRST会由仿真器拉高,3脚与u1 芯片TMS320F2809MPZT连接的一端TRST仍是低电平L。这是我用示波器测到的。
build project后debug例程flash_f28069后出现无法连接,错误信息如下:
Error connecting to the target:
(Error -1135 @ 0x0)
The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation.
(Emulation package 8.3.0.00003)
当加载例程cpu_timer时拨码开关S1设置为EMU Mode,引脚123分别设为HHH,debug程序时是能正常连接且正常加载的。
请问如何解决这个问题?期待您的回答,谢谢

配置为flash启动,TI例程已配置好,不用实际操作,开发板上的硬件设置Boot Mode Selection,配置为GetMode,也就是123分别是HHL。完成上述步骤之后,我就build project 和debug程序了,但是debug程序时,出现无法连接到目标的问题。 

拨码开关S1设置为GetMode,引脚123分别设为HHL,引脚3设为L就无法与仿真器相连,debug程序时就出现无法连接到目标的情况,但是配置flash启动又需要拨码开关S1的引脚3设为L,我就困惑了。flash加载和拨码开关S1应如何加载和配置呢?怎么才能debug成功?加载程序时Boot to SARAM模式和boot to flash之间如何切换?

 

Green Deng:

回复 yingying fu:

这不科学啊,不管平时使用的时候还是datasheet或者user's guide上都是用的HHL,连接仿真器的时候也不没需要配置为HHH过。
有没有可能是仿真器有问题?有没有测试过其他仿真器?

配置为flash启动,TI例程已配置好,不用实际操作,开发板上的硬件设置Boot Mode Selection,配置为GetMode,也就是123分别是HHL。完成上述步骤之后,我就build project 和debug程序了,但是debug程序时,出现无法连接到目标的问题。 

拨码开关S1设置为GetMode,引脚123分别设为HHL,引脚3设为L就无法与仿真器相连,debug程序时就出现无法连接到目标的情况,但是配置flash启动又需要拨码开关S1的引脚3设为L,我就困惑了。flash加载和拨码开关S1应如何加载和配置呢?怎么才能debug成功?加载程序时Boot to SARAM模式和boot to flash之间如何切换?

 

yingying fu:

回复 Green Deng:

您好,您上一个回复我可以理解为连接开发板时,都是使用HHL,而不需要使用HHH吗?我重新更换了USB线,还有开发板,HHL配置下debug程序都出现此问题。
若我连接配置的有问题,我想请您回复正确的连接配置步骤,检查我之前配置中哪一步出错,谢谢

配置为flash启动,TI例程已配置好,不用实际操作,开发板上的硬件设置Boot Mode Selection,配置为GetMode,也就是123分别是HHL。完成上述步骤之后,我就build project 和debug程序了,但是debug程序时,出现无法连接到目标的问题。 

拨码开关S1设置为GetMode,引脚123分别设为HHL,引脚3设为L就无法与仿真器相连,debug程序时就出现无法连接到目标的情况,但是配置flash启动又需要拨码开关S1的引脚3设为L,我就困惑了。flash加载和拨码开关S1应如何加载和配置呢?怎么才能debug成功?加载程序时Boot to SARAM模式和boot to flash之间如何切换?

 

Green Deng:

回复 yingying fu:

抱歉我现在不是很确定这个设置。
目前我手头没有这块板子,但是根据之前的实验印象应该都是配置为HHL,而且我查了一下E2E上的帖子,也是这样的配置:e2e.ti.com/…/2984575
但是我又看了一下这份文档:www.ti.com/…/sprui11b.pdf
其中第7页的note中又提到:
The USB debugger cannot connect to the device when S1-Switch 3 is placed in the L
position because TSRTn is disconnected from the XDS100v2.
所以这个问题我可能要联系一下美国那边的工程师确认一下。但是,目前正值美国圣诞假期,他们没有上班,所以这个问题可能得搁置几天才能解决。。。

配置为flash启动,TI例程已配置好,不用实际操作,开发板上的硬件设置Boot Mode Selection,配置为GetMode,也就是123分别是HHL。完成上述步骤之后,我就build project 和debug程序了,但是debug程序时,出现无法连接到目标的问题。 

拨码开关S1设置为GetMode,引脚123分别设为HHL,引脚3设为L就无法与仿真器相连,debug程序时就出现无法连接到目标的情况,但是配置flash启动又需要拨码开关S1的引脚3设为L,我就困惑了。flash加载和拨码开关S1应如何加载和配置呢?怎么才能debug成功?加载程序时Boot to SARAM模式和boot to flash之间如何切换?

 

yingying fu:

回复 Green Deng:

好的,谢谢您的热心帮助,请您确认好后回复我,谢谢

28069与8305组合,lab5b,有几个问题需要请教

C2000阅读(7)

第一:电机给定速度时,使能位置1,但是需要等待几秒时间电机才能实际运行,这个时间可以取消还是需要修改,使时间缩小呢?如何修改呢?

第二:电机运行时,电机低速的振动比较大,在反转的启动时,出现超调现象,修改了PID参数,没有太大变化 ,请问是不是还有其他的原因呢?该如何修改呢?

第三:CCS内含有虚拟示波器,横坐标与纵坐标如何显示坐标的名称?它的横坐标是采样,我想问一下,他采样的时间是怎么计算的?能具体说说嘛?

Annie Liu:

为更加有效地解决您的问题,我们建议您将问题发布在E2E英文技术论坛上https://e2e.ti.com/support/microcontrollers/c2000/f/171,将由资深的工程师为您提供帮助。我们的E2E英文社区有TI专家进行回复,并得到全球各地工程师的支持,分享他们的知识和经验。

如何将F28M35的double数据类型设置为64位?

C2000阅读(14)

现调试发现double和float数据精度一样,都是32位,想提高精度为64位,如何设置?

Green Deng:

是的,C28中double和float数据精度一样,你可以使用long double型

28062的ECAP口会出现无法进入中断,请大神进来看下本人配置是否有问题?谢谢

C2000阅读(11)

最近在做一个项目,其中用到28062的ECAP3口做捕获,发现会间隔不定时间的不进入ECAP捕获中断。

本人是用ECAP捕获交流过零信号,其中ECAP设置捕获中断,在中断中用一个LED灯翻转指示。用示波器同时检测LED翻转指示信号和过零信号,发现过零信号有但是LED翻转信号会间隔丢失,即会出现偶尔的捕获失败,过零信号示波器显示是没有消失的,但是LED指示的信号却会在某个周期出现缺失。而且更严重会偶尔出现连续是三个过零捕获失败,已经验证多次现象,可以确定是捕获失败,过零信号一直有的。下面是我的配置,请各位大神给予指正,谢谢。

void InitECap3(void)
{
ECap3Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap3Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap3Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped

ECap3Regs.ECCTL1.bit.PRESCALE = 0; // n*2分频

// Configure peripheral registers
ECap3Regs.ECCTL2.bit.CONT_ONESHT = 1; // One-shot
ECap3Regs.ECCTL2.bit.STOP_WRAP = 0; //3 // Stop at 1 events
ECap3Regs.ECCTL1.bit.CAP1POL = 1; // Falling edge

ECap3Regs.ECCTL1.bit.CTRRST1 = 1; // Difference operation

ECap3Regs.ECCTL2.bit.SYNCI_EN = 1; // Enable sync in
ECap3Regs.ECCTL2.bit.SYNCO_SEL = 0; // Pass through
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units

ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap3Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads
ECap3Regs.ECEINT.bit.CEVT1 = 1; // 1 events = interrupt
}

interrupt void ecap3_isr(void)
{

dfreq = ECap3Regs.CAP1;

 Run_Led_Inverse = 1;
ECap3Regs.ECCLR.bit.CEVT1 = 1;
ECap3Regs.ECCLR.bit.INT = 1;
ECap3Regs.ECCTL2.bit.REARM = 1;

// Acknowledge this interrupt to receive more interrupts from group 4
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
}

Green Deng:CAP部分配置没什么问题。现在有两点怀疑的,一是你的程序中还有没有其他优先级高的中断抢占了cap中断造成cap中断丢失。二是你的LED反转应该是用的GPIO控制的吧?你控制GPIO用的是哪个寄存器?

最近在做一个项目,其中用到28062的ECAP3口做捕获,发现会间隔不定时间的不进入ECAP捕获中断。

本人是用ECAP捕获交流过零信号,其中ECAP设置捕获中断,在中断中用一个LED灯翻转指示。用示波器同时检测LED翻转指示信号和过零信号,发现过零信号有但是LED翻转信号会间隔丢失,即会出现偶尔的捕获失败,过零信号示波器显示是没有消失的,但是LED指示的信号却会在某个周期出现缺失。而且更严重会偶尔出现连续是三个过零捕获失败,已经验证多次现象,可以确定是捕获失败,过零信号一直有的。下面是我的配置,请各位大神给予指正,谢谢。

void InitECap3(void)
{
ECap3Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap3Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap3Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped

ECap3Regs.ECCTL1.bit.PRESCALE = 0; // n*2分频

// Configure peripheral registers
ECap3Regs.ECCTL2.bit.CONT_ONESHT = 1; // One-shot
ECap3Regs.ECCTL2.bit.STOP_WRAP = 0; //3 // Stop at 1 events
ECap3Regs.ECCTL1.bit.CAP1POL = 1; // Falling edge

ECap3Regs.ECCTL1.bit.CTRRST1 = 1; // Difference operation

ECap3Regs.ECCTL2.bit.SYNCI_EN = 1; // Enable sync in
ECap3Regs.ECCTL2.bit.SYNCO_SEL = 0; // Pass through
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units

ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap3Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads
ECap3Regs.ECEINT.bit.CEVT1 = 1; // 1 events = interrupt
}

interrupt void ecap3_isr(void)
{

dfreq = ECap3Regs.CAP1;

 Run_Led_Inverse = 1;
ECap3Regs.ECCLR.bit.CEVT1 = 1;
ECap3Regs.ECCLR.bit.INT = 1;
ECap3Regs.ECCTL2.bit.REARM = 1;

// Acknowledge this interrupt to receive more interrupts from group 4
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
}

user4383943:

回复 Green Deng:

非常感谢您的回复,中断肯定是有其他的。还有ECAP2中断,PWM中断(epwm2_timer_isr;epwm3_timer_isr),还有一些串口SCI中断,定时器中断等,但是按照我的理解,这个ECAP捕获不应该丢失,因为这个是20ms进来一次,其他的中断使用时间都是微秒级别,这个ECAP是属于硬件捕获(触发),软件上即使不能立马进入中断(假设被其他高优先级的中断抢占)也只是延时了一会,但是触发在硬件上已经产生,软件应该还是要进来的。关于那个寄存器我是翻转(#define Run_Led_InverseGpioDataRegs.GPBTOGGLE.bit.GPIO52),谢谢。

最近在做一个项目,其中用到28062的ECAP3口做捕获,发现会间隔不定时间的不进入ECAP捕获中断。

本人是用ECAP捕获交流过零信号,其中ECAP设置捕获中断,在中断中用一个LED灯翻转指示。用示波器同时检测LED翻转指示信号和过零信号,发现过零信号有但是LED翻转信号会间隔丢失,即会出现偶尔的捕获失败,过零信号示波器显示是没有消失的,但是LED指示的信号却会在某个周期出现缺失。而且更严重会偶尔出现连续是三个过零捕获失败,已经验证多次现象,可以确定是捕获失败,过零信号一直有的。下面是我的配置,请各位大神给予指正,谢谢。

void InitECap3(void)
{
ECap3Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap3Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap3Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped

ECap3Regs.ECCTL1.bit.PRESCALE = 0; // n*2分频

// Configure peripheral registers
ECap3Regs.ECCTL2.bit.CONT_ONESHT = 1; // One-shot
ECap3Regs.ECCTL2.bit.STOP_WRAP = 0; //3 // Stop at 1 events
ECap3Regs.ECCTL1.bit.CAP1POL = 1; // Falling edge

ECap3Regs.ECCTL1.bit.CTRRST1 = 1; // Difference operation

ECap3Regs.ECCTL2.bit.SYNCI_EN = 1; // Enable sync in
ECap3Regs.ECCTL2.bit.SYNCO_SEL = 0; // Pass through
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units

ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap3Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads
ECap3Regs.ECEINT.bit.CEVT1 = 1; // 1 events = interrupt
}

interrupt void ecap3_isr(void)
{

dfreq = ECap3Regs.CAP1;

 Run_Led_Inverse = 1;
ECap3Regs.ECCLR.bit.CEVT1 = 1;
ECap3Regs.ECCLR.bit.INT = 1;
ECap3Regs.ECCTL2.bit.REARM = 1;

// Acknowledge this interrupt to receive more interrupts from group 4
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
}

Green Deng:

回复 user4383943:

因为你是通过观察GPIO的,能否观察寄存器的值呢?
另外,有没有用例程测试过CAP模块是否正常?

最近在做一个项目,其中用到28062的ECAP3口做捕获,发现会间隔不定时间的不进入ECAP捕获中断。

本人是用ECAP捕获交流过零信号,其中ECAP设置捕获中断,在中断中用一个LED灯翻转指示。用示波器同时检测LED翻转指示信号和过零信号,发现过零信号有但是LED翻转信号会间隔丢失,即会出现偶尔的捕获失败,过零信号示波器显示是没有消失的,但是LED指示的信号却会在某个周期出现缺失。而且更严重会偶尔出现连续是三个过零捕获失败,已经验证多次现象,可以确定是捕获失败,过零信号一直有的。下面是我的配置,请各位大神给予指正,谢谢。

void InitECap3(void)
{
ECap3Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap3Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap3Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped

ECap3Regs.ECCTL1.bit.PRESCALE = 0; // n*2分频

// Configure peripheral registers
ECap3Regs.ECCTL2.bit.CONT_ONESHT = 1; // One-shot
ECap3Regs.ECCTL2.bit.STOP_WRAP = 0; //3 // Stop at 1 events
ECap3Regs.ECCTL1.bit.CAP1POL = 1; // Falling edge

ECap3Regs.ECCTL1.bit.CTRRST1 = 1; // Difference operation

ECap3Regs.ECCTL2.bit.SYNCI_EN = 1; // Enable sync in
ECap3Regs.ECCTL2.bit.SYNCO_SEL = 0; // Pass through
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units

ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap3Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads
ECap3Regs.ECEINT.bit.CEVT1 = 1; // 1 events = interrupt
}

interrupt void ecap3_isr(void)
{

dfreq = ECap3Regs.CAP1;

 Run_Led_Inverse = 1;
ECap3Regs.ECCLR.bit.CEVT1 = 1;
ECap3Regs.ECCLR.bit.INT = 1;
ECap3Regs.ECCTL2.bit.REARM = 1;

// Acknowledge this interrupt to receive more interrupts from group 4
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
}

user4383943:

回复 Green Deng:

是这样的,那个没用进ECAP中断还有其他的现象也是证明没用进入的,比如我是在那个外部循环20ms计数,在ECAP中断清零那个外部计数,确实会出现连续三次都没有被清零的。那个指示灯只是进一步证明没有翻转,因为就是在没有出现翻转,然后同时那个外部计数也没有被清零。这个不是每时每刻或者说很容易出现的,有的时候一个星期出现一次,有的时候半个月出现一次。我这个就是用来捕获市电过零的,外部就是通过那个计数三次连续没有被清,就报市电没有接入故障的,之前就是发现会无缘无故报市电没有接入故障,才发现这个ECAP口的问题,实际市电是一直存在的,这个可以确认的。

最近在做一个项目,其中用到28062的ECAP3口做捕获,发现会间隔不定时间的不进入ECAP捕获中断。

本人是用ECAP捕获交流过零信号,其中ECAP设置捕获中断,在中断中用一个LED灯翻转指示。用示波器同时检测LED翻转指示信号和过零信号,发现过零信号有但是LED翻转信号会间隔丢失,即会出现偶尔的捕获失败,过零信号示波器显示是没有消失的,但是LED指示的信号却会在某个周期出现缺失。而且更严重会偶尔出现连续是三个过零捕获失败,已经验证多次现象,可以确定是捕获失败,过零信号一直有的。下面是我的配置,请各位大神给予指正,谢谢。

void InitECap3(void)
{
ECap3Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap3Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap3Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped

ECap3Regs.ECCTL1.bit.PRESCALE = 0; // n*2分频

// Configure peripheral registers
ECap3Regs.ECCTL2.bit.CONT_ONESHT = 1; // One-shot
ECap3Regs.ECCTL2.bit.STOP_WRAP = 0; //3 // Stop at 1 events
ECap3Regs.ECCTL1.bit.CAP1POL = 1; // Falling edge

ECap3Regs.ECCTL1.bit.CTRRST1 = 1; // Difference operation

ECap3Regs.ECCTL2.bit.SYNCI_EN = 1; // Enable sync in
ECap3Regs.ECCTL2.bit.SYNCO_SEL = 0; // Pass through
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units

ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap3Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads
ECap3Regs.ECEINT.bit.CEVT1 = 1; // 1 events = interrupt
}

interrupt void ecap3_isr(void)
{

dfreq = ECap3Regs.CAP1;

 Run_Led_Inverse = 1;
ECap3Regs.ECCLR.bit.CEVT1 = 1;
ECap3Regs.ECCLR.bit.INT = 1;
ECap3Regs.ECCTL2.bit.REARM = 1;

// Acknowledge this interrupt to receive more interrupts from group 4
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
}

user4383943:

回复 Green Deng:

是这样的。首先那个灯的指示是我进一步证明没有进入ECAP中断的辅证。先是发现不能进入ECAP中断,才在中断中进行灯的翻转,看是否确实没有进来。因为我是在其他地方发现没有进入ECAP中断,我在程序的外部循环中有个定时器20ms会计数增加一次,如果在60ms加了3次,那么就会报故障,报市电没有接入故障。我这个ECAP本来就是采集市电过零的,就是有时偶然会出现误报市电没有接入故障才发现这个问题,但是实际市电电压可以确认是有的,过零信号也是有的,都有用示波器监测的。这个误报或者说不进入也不是每时每刻经常进入,他有时一个星期有时2个星期甚至更久,我是持续放在那里运行,然后确实出现60ms连续三次没有清零外部计数,而我们的过零是20ms来一次(50HZ)。

最近在做一个项目,其中用到28062的ECAP3口做捕获,发现会间隔不定时间的不进入ECAP捕获中断。

本人是用ECAP捕获交流过零信号,其中ECAP设置捕获中断,在中断中用一个LED灯翻转指示。用示波器同时检测LED翻转指示信号和过零信号,发现过零信号有但是LED翻转信号会间隔丢失,即会出现偶尔的捕获失败,过零信号示波器显示是没有消失的,但是LED指示的信号却会在某个周期出现缺失。而且更严重会偶尔出现连续是三个过零捕获失败,已经验证多次现象,可以确定是捕获失败,过零信号一直有的。下面是我的配置,请各位大神给予指正,谢谢。

void InitECap3(void)
{
ECap3Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap3Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap3Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped

ECap3Regs.ECCTL1.bit.PRESCALE = 0; // n*2分频

// Configure peripheral registers
ECap3Regs.ECCTL2.bit.CONT_ONESHT = 1; // One-shot
ECap3Regs.ECCTL2.bit.STOP_WRAP = 0; //3 // Stop at 1 events
ECap3Regs.ECCTL1.bit.CAP1POL = 1; // Falling edge

ECap3Regs.ECCTL1.bit.CTRRST1 = 1; // Difference operation

ECap3Regs.ECCTL2.bit.SYNCI_EN = 1; // Enable sync in
ECap3Regs.ECCTL2.bit.SYNCO_SEL = 0; // Pass through
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units

ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap3Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads
ECap3Regs.ECEINT.bit.CEVT1 = 1; // 1 events = interrupt
}

interrupt void ecap3_isr(void)
{

dfreq = ECap3Regs.CAP1;

 Run_Led_Inverse = 1;
ECap3Regs.ECCLR.bit.CEVT1 = 1;
ECap3Regs.ECCLR.bit.INT = 1;
ECap3Regs.ECCTL2.bit.REARM = 1;

// Acknowledge this interrupt to receive more interrupts from group 4
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
}

Green Deng:

回复 user4383943:

大概能理解你的思路,就是用cap中断清零计数器,3次未清零则认为是cap没有接收中断从而报错。不过我看你的cap配置确实没看出来问题,而且基本跟例程的一样。目前没有什么想法,推荐你升级到E2E英文论坛咨询一下这个问题:
e2e.ti.com/…/171

最近在做一个项目,其中用到28062的ECAP3口做捕获,发现会间隔不定时间的不进入ECAP捕获中断。

本人是用ECAP捕获交流过零信号,其中ECAP设置捕获中断,在中断中用一个LED灯翻转指示。用示波器同时检测LED翻转指示信号和过零信号,发现过零信号有但是LED翻转信号会间隔丢失,即会出现偶尔的捕获失败,过零信号示波器显示是没有消失的,但是LED指示的信号却会在某个周期出现缺失。而且更严重会偶尔出现连续是三个过零捕获失败,已经验证多次现象,可以确定是捕获失败,过零信号一直有的。下面是我的配置,请各位大神给予指正,谢谢。

void InitECap3(void)
{
ECap3Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap3Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap3Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped

ECap3Regs.ECCTL1.bit.PRESCALE = 0; // n*2分频

// Configure peripheral registers
ECap3Regs.ECCTL2.bit.CONT_ONESHT = 1; // One-shot
ECap3Regs.ECCTL2.bit.STOP_WRAP = 0; //3 // Stop at 1 events
ECap3Regs.ECCTL1.bit.CAP1POL = 1; // Falling edge

ECap3Regs.ECCTL1.bit.CTRRST1 = 1; // Difference operation

ECap3Regs.ECCTL2.bit.SYNCI_EN = 1; // Enable sync in
ECap3Regs.ECCTL2.bit.SYNCO_SEL = 0; // Pass through
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units

ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap3Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads
ECap3Regs.ECEINT.bit.CEVT1 = 1; // 1 events = interrupt
}

interrupt void ecap3_isr(void)
{

dfreq = ECap3Regs.CAP1;

 Run_Led_Inverse = 1;
ECap3Regs.ECCLR.bit.CEVT1 = 1;
ECap3Regs.ECCLR.bit.INT = 1;
ECap3Regs.ECCTL2.bit.REARM = 1;

// Acknowledge this interrupt to receive more interrupts from group 4
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
}

user4383943:

回复 Green Deng:

好的,谢谢

28335,ccsv9 ,graph显示有两种方法,一种是用直接点右键然后再选择graph,另一种方法是用dlog,这两种方法有和差别?

C2000阅读(13)

程序里有一个变量MotorSpeed, ccs在仿真的时候想要看一下 MotorSpeed 显示的波形,有两种方法:

1. 在dlog里面进行实现,在程序里将 DlogCh1 = MotorSpeed;  ,同时在graph里配置一下Start Address = DLOG_4CH_buff1,就可以显示波形了。

2. 直接在Expressions窗口找到变量MotorSpeed,点右键,点graph,同时可以看到Start Address = &MotorSpeed,这样也可以显示波形。

我的问题是,

1. 这两种显示变量 MotorSpeed 的波形的方法在本质上有什么差别?

2. 采用dlog实现波形(上面的第1种方法)采集要用到28335内部的ram作为数据的缓冲存储区,还要配置响应的cmd文件,那么采用Expressions里的变量(上面的第2种方法)直接用Start Address = &MotorSpeed来进行显示,为什么第2种方法不用配置ram的数据缓冲区?

3. 用dlog显示波形,为什么每次更新波形时,数据要存储到dsp的ram,我把数据依次存到电脑的内存或硬盘中不可以吗?这样也不用修改cmd文件了,还可以节省dsp的ram。

请帮忙具体的回答一下我以上三个问题,多谢了!

Green Deng:1、个人认为,DLOG是需要在芯片中预留一个RAM区域用于观测连续的数据,而Graph应该是通过JTAG直接访问芯片内存地址的。
2、如上述回答1中,Graph是Jtag直接访问内存地址,所以不需要缓冲区。
3、这点应该是模块的性质决定的。下面路径的USER'S GUIDE有介绍DLOG模块的,你可以了解一下:
C:\TI\controlSUITE\libs\app_libs\motor_control\drivers\f2833x_v2.0\~Docs

F28335的库

C2000阅读(13)

这些文件怎么用,头文件、函数接口是怎么样?有没有文档?

Green Deng:可以参考这个文档:www.ti.com/…/spru924f.pdf
例程可以参考:C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_examples_ccsv5\hrpwm_sfo_v5

280049 CLA运行速度比CPU慢很多

C2000阅读(18)

280049芯片,相同的一段ISR()函数,代码开始和结束利用GPIO作为测试信号,链接示波器检测GPIO信号

工程1:利用EPWM1 ZERO中断触发10us的周期中断,执行ISR()函数,通过示波器测量执行之间约6us。

工程2:利用EPWM2 ZERO中断触发10us的周期中断,执行CLATASK1,内部调用ISR()函数,通过示波器测量执行时间10us不能完成。

测试1:验证工程2中断的正确性,在工程2的ISR()函数内减少代码量,通过示波器检测中断时间,确认10us的中断是正确的。但是执行时间还是不正常。

例如:ISR()内代码只留下两行读取AD寄存器的代码:示波器检测执行时间需要120ns

//########################################################################################
// Function Name: CLALoopCtrlISR
// Input:// Output:// Return:// Description://########################################################################################
#pragma FUNC_ALWAYS_INLINE(CLALoopCtrlISR)
inline void CLALoopCtrlISR()
{ TEST3_SET();      // GPIO测试

stClaToCpuPara.iVoutADFbk = AdccResultRegs.ADCRESULT0; stClaToCpuPara.iPriCurADFbk = AdcbResultRegs.ADCRESULT0;

TEST3_CLR();         // GPIO测试
// Clear INT Flag
EPwm1Regs.ETCLR.bit.INT = 1;

}

请问,我时不时哪里还没有配置正确,盼专家解答,谢谢!

Aiden:ISR()内完整代码如下:
#pragma FUNC_ALWAYS_INLINE(CLALoopCtrlISR)
inline void CLALoopCtrlISR()
{ TEST3_SET();
stClaToCpuPara.iVoutADFbk = AdccResultRegs.ADCRESULT0; stClaToCpuPara.iPriCurADFbk = AdcbResultRegs.ADCRESULT0; stClaToCpuPara.iVoutADFbk = ((stClaToCpuPara.iVoutADFbk * AD_CAL_K / stSysFbkParaADFilter.stV2V5AD.lSample) & 0x0FFF);stClaToCpuPara.iPriCurADFbk = ((stClaToCpuPara.iPriCurADFbk * AD_CAL_K / stSysFbkParaADFilter.stV2V5AD.lSample) & 0x0FFF); if((stCpuToClaPara.bPIWorkEn == 1)&& (unFaultCode.uiWord == 0)){if(stCpuToClaPara.bSoftStartFlag == STATE_STARTING_OPENLOOP){stClaToCpuPara.iVoltLoopErr = stCpuToClaPara.iVoutSetPiont – stClaToCpuPara.iVoutADFbk;
if((stClaToCpuPara.iVoltLoopErr >= PI_CHANGE_VOUTERR_VALUE)&& (stClaToCpuPara.iVoltLoopErr >= stClaToCpuPara.iVoltLoopErrOld)){stClaToCpuPara.iVoltLoopKp = stCpuToClaPara.iVoltLoopKpDn;stClaToCpuPara.iVoltLoopKi = stCpuToClaPara.iVoltLoopKiDn;}else if((stClaToCpuPara.iVoltLoopErr <= -PI_CHANGE_VOUTERR_VALUE)&& (stClaToCpuPara.iVoltLoopErr <= stClaToCpuPara.iVoltLoopErrOld)){ stClaToCpuPara.iVoltLoopKp = stCpuToClaPara.iVoltLoopKpUp;stClaToCpuPara.iVoltLoopKi = stCpuToClaPara.iVoltLoopKiUp;}else{stClaToCpuPara.iVoltLoopKp = stCpuToClaPara.iVoltLoopKpNormal;stClaToCpuPara.iVoltLoopKi = stCpuToClaPara.iVoltLoopKiNormal;}if((stClaToCpuPara.iVoltLoopErr > 5) || (stClaToCpuPara.iVoltLoopErr < -5)){stClaToCpuPara.lVoltLoopPIOut += (int32)stClaToCpuPara.iVoltLoopKp * (stClaToCpuPara.iVoltLoopErr- stClaToCpuPara.iVoltLoopErrOld)+ (int32)stClaToCpuPara.iVoltLoopKi * stClaToCpuPara.iVoltLoopErr; } if(stClaToCpuPara.lVoltLoopPIOut > PI_OUT_MAX){stClaToCpuPara.lVoltLoopPIOut = PI_OUT_MAX;}else if(stClaToCpuPara.lVoltLoopPIOut < PI_OUT_MIN){stClaToCpuPara.lVoltLoopPIOut = PI_OUT_MIN;}
stClaToCpuPara.iVoltLoopErrOld = stClaToCpuPara.iVoltLoopErr;stClaToCpuPara.lActivePIOut = stClaToCpuPara.lVoltLoopPIOut;
//stClaToCpuPara.lCurrentLoopPIOut = stClaToCpuPara.lVoltLoopPIOut;}else{stClaToCpuPara.iVoltLoopErr = stCpuToClaPara.iVoutSetPiont – stClaToCpuPara.iVoutADFbk;stClaToCpuPara.iCurrentLoopErr = stCpuToClaPara.iCurrentSetPiont – stClaToCpuPara.iPriCurADFbk;
// VoltLoop PIif((stClaToCpuPara.iVoltLoopErr >= PI_CHANGE_VOUTERR_VALUE)&& (stClaToCpuPara.iVoltLoopErr >= stClaToCpuPara.iVoltLoopErrOld)){stClaToCpuPara.iVoltLoopKp = stCpuToClaPara.iVoltLoopKpDn;stClaToCpuPara.iVoltLoopKi = stCpuToClaPara.iVoltLoopKiDn;}else if((stClaToCpuPara.iVoltLoopErr <= -PI_CHANGE_VOUTERR_VALUE)&& (stClaToCpuPara.iVoltLoopErr <= stClaToCpuPara.iVoltLoopErrOld)){ stClaToCpuPara.iVoltLoopKp = stCpuToClaPara.iVoltLoopKpUp;stClaToCpuPara.iVoltLoopKi = stCpuToClaPara.iVoltLoopKiUp;}else{stClaToCpuPara.iVoltLoopKp = stCpuToClaPara.iVoltLoopKpNormal;stClaToCpuPara.iVoltLoopKi = stCpuToClaPara.iVoltLoopKiNormal;}
// CurrentLoop PIif((stClaToCpuPara.iCurrentLoopErr <= -PI_CHANGE_VOUTERR_VALUE)&& (stClaToCpuPara.iCurrentLoopErr <= stClaToCpuPara.iCurrentLoopErrOld)){ stClaToCpuPara.iCurrentLoopKp = stCpuToClaPara.iCurrentLoopKpUp;stClaToCpuPara.iCurrentLoopKi = stCpuToClaPara.iCurrentLoopKiUp;}else{stClaToCpuPara.iCurrentLoopKp = stCpuToClaPara.iCurrentLoopKpNormal;stClaToCpuPara.iCurrentLoopKi = stCpuToClaPara.iCurrentLoopKiNormal;}if((stClaToCpuPara.iVoltLoopErr > 5) || (stClaToCpuPara.iVoltLoopErr < -5)){stClaToCpuPara.lVoltLoopPIOut += (int32)stClaToCpuPara.iVoltLoopKp * (stClaToCpuPara.iVoltLoopErr-stClaToCpuPara.iVoltLoopErrOld)+ (int32)stClaToCpuPara.iVoltLoopKi * stClaToCpuPara.iVoltLoopErr; } if(stClaToCpuPara.lVoltLoopPIOut > PI_OUT_MAX){stClaToCpuPara.lVoltLoopPIOut = PI_OUT_MAX;}else if(stClaToCpuPara.lVoltLoopPIOut < PI_OUT_MIN){stClaToCpuPara.lVoltLoopPIOut = PI_OUT_MIN;}
stClaToCpuPara.lCurrentLoopPIOut += (int32)stClaToCpuPara.iCurrentLoopKp * (stClaToCpuPara.iCurrentLoopErr- stClaToCpuPara.iCurrentLoopErrOld)+ (int32)stClaToCpuPara.iCurrentLoopKi * stClaToCpuPara.iCurrentLoopErr;
if(stClaToCpuPara.lCurrentLoopPIOut > PI_OUT_MAX){stClaToCpuPara.lCurrentLoopPIOut = PI_OUT_MAX;}else if(stClaToCpuPara.lCurrentLoopPIOut < PI_OUT_MIN){stClaToCpuPara.lCurrentLoopPIOut = PI_OUT_MIN;}// Currentloop to Voltage loopif((stClaToCpuPara.lVoltLoopPIOutOld == PI_OUT_MAX) && (stClaToCpuPara.lVoltLoopPIOut < PI_OUT_MAX)){if(stClaToCpuPara.lCurrentLoopPIOutOld < stClaToCpuPara.lVoltLoopPIOut){stClaToCpuPara.lVoltLoopPIOut = stClaToCpuPara.lCurrentLoopPIOutOld;}}// Voltageloop to Currentloopelse if((stClaToCpuPara.lCurrentLoopPIOutOld == PI_OUT_MAX) && (stClaToCpuPara.lCurrentLoopPIOut < PI_OUT_MAX)){if(stClaToCpuPara.lVoltLoopPIOutOld < stClaToCpuPara.lCurrentLoopPIOut){stClaToCpuPara.lCurrentLoopPIOut = stClaToCpuPara.lVoltLoopPIOutOld;}}stClaToCpuPara.lVoltLoopPIOutOld = stClaToCpuPara.lVoltLoopPIOut;stClaToCpuPara.lCurrentLoopPIOutOld = stClaToCpuPara.lCurrentLoopPIOut;stClaToCpuPara.iCurrentLoopErrOld = stClaToCpuPara.iCurrentLoopErr;stClaToCpuPara.iVoltLoopErrOld = stClaToCpuPara.iVoltLoopErr;
if(stClaToCpuPara.lVoltLoopPIOut > stClaToCpuPara.lCurrentLoopPIOut){stClaToCpuPara.lActivePIOut = stClaToCpuPara.lCurrentLoopPIOut;}else{stClaToCpuPara.lActivePIOut = stClaToCpuPara.lVoltLoopPIOut;}}}
if(stCpuToClaPara.bSoftStartFlag == STATE_FINISH){CLASRSwitchCtrl();}
#if (OPENLOOP == 0)CLABurstModeCtrl();#endif
#if (OPENLOOP == 1)stClaToCpuPara.iPWMDutyCnt = stCpuToClaPara.iPWMDutyCntOpenLoop; #elsestClaToCpuPara.iPWMDutyCnt = stClaToCpuPara.lActivePIOut >> PI_OUT_Q;#endif
EPwm1Regs.CMPA.bit.CMPA = stClaToCpuPara.iPWMDutyCnt;EPwm1Regs.CMPB.bit.CMPB = PWM_DUTY_FULL – stClaToCpuPara.iPWMDutyCnt;
EPwm2Regs.CMPA.bit.CMPA = stClaToCpuPara.iPWMDutyCnt;EPwm2Regs.CMPB.bit.CMPB = PWM_DUTY_FULL – stClaToCpuPara.iPWMDutyCnt;EPwm7Regs.CMPA.bit.CMPA = stClaToCpuPara.iPWMDutyCnt + DOUBLE_PHASE_PWM7;EPwm7Regs.CMPB.bit.CMPB = PWM_DUTY_FULL – stClaToCpuPara.iPWMDutyCnt – DOUBLE_PHASE_PWM7;
stClaToCpuPara.iSOCTrigPoint = (stClaToCpuPara.iPWMDutyCnt >> 1) + SOC_TRIG_HW_DELAY;EPwm2Regs.CMPC = stClaToCpuPara.iSOCTrigPoint;

TEST3_CLR();// Clear INT FlagEPwm1Regs.ETCLR.bit.INT = 1;
}

如需要其他信息便于定位问题,请告知。由于公司加密软件原因工程无法直接上传,请谅解。谢谢!

280049芯片,相同的一段ISR()函数,代码开始和结束利用GPIO作为测试信号,链接示波器检测GPIO信号

工程1:利用EPWM1 ZERO中断触发10us的周期中断,执行ISR()函数,通过示波器测量执行之间约6us。

工程2:利用EPWM2 ZERO中断触发10us的周期中断,执行CLATASK1,内部调用ISR()函数,通过示波器测量执行时间10us不能完成。

测试1:验证工程2中断的正确性,在工程2的ISR()函数内减少代码量,通过示波器检测中断时间,确认10us的中断是正确的。但是执行时间还是不正常。

例如:ISR()内代码只留下两行读取AD寄存器的代码:示波器检测执行时间需要120ns

//########################################################################################
// Function Name: CLALoopCtrlISR
// Input:// Output:// Return:// Description://########################################################################################
#pragma FUNC_ALWAYS_INLINE(CLALoopCtrlISR)
inline void CLALoopCtrlISR()
{ TEST3_SET();      // GPIO测试

stClaToCpuPara.iVoutADFbk = AdccResultRegs.ADCRESULT0; stClaToCpuPara.iPriCurADFbk = AdcbResultRegs.ADCRESULT0;

TEST3_CLR();         // GPIO测试
// Clear INT Flag
EPwm1Regs.ETCLR.bit.INT = 1;

}

请问,我时不时哪里还没有配置正确,盼专家解答,谢谢!

Annie Liu:

回复 Aiden:

为更加有效地解决您的问题,我们建议您将问题发布在E2E英文技术论坛上https://e2e.ti.com/support/microcontrollers/c2000/f/171,将由资深的工程师为您提供帮助。我们的E2E英文社区有TI专家进行回复,并得到全球各地工程师的支持,分享他们的知识和经验。

LAUNCCHXL-F28069调试 问题

C2000阅读(11)

您好,我想请问 一下  1、F28069 提供的示例程序有那些是需要从boot to  fllash  模式 中执行的 ,

2、为“引导到Flash”模式设置所需的跳线是什么?  每个引导模式所需的跳线设置如表2.3、表2.4和表2.5所示。同时参考文献 f2806x-FRM-EX-UG.pdf ((据 表2.3 设置为EMU MODE,据 表 2.4是否需要在程序中设置boot to  fllash 为EMU-KKEY  // 0X555AA         EMU–BMODE // 0X000B ?))

3、InCCS v5, 在调试期间当代码加载到设备后,它自动编程到闪存。它的调试加载的步骤 是什么?

期待您解惑,谢谢

Green Deng:不知道你使用的例程来源是哪里,以C2000WARE中的例程来源为例:
1、在device-support中的例程大多是ram运行的。程序具体从ram还是flash运行,主要是看工程中的cmd文件是对应的ram的还是flash的。
2、引导模式其实就是芯片的boot方式,具体可以参考datasheet第46页6.1.10 Boot ROM。“跳线”应该就是指,芯片上电的时候需要将boot引脚对应的GPIO口配置为高电平或低电平所需要的接线。在LAUNCCHXL-F28069上应该已经设计了一排小开关可以控制这几个引脚的电平,你可以参考板子的硬件原理图找一下。
3、这个不是很理解你的意思。如果你已经配置好程序从flash启动的话,点击debug之后软件会自动将程序加载进芯片闪存。

您好,我想请问 一下  1、F28069 提供的示例程序有那些是需要从boot to  fllash  模式 中执行的 ,

2、为“引导到Flash”模式设置所需的跳线是什么?  每个引导模式所需的跳线设置如表2.3、表2.4和表2.5所示。同时参考文献 f2806x-FRM-EX-UG.pdf ((据 表2.3 设置为EMU MODE,据 表 2.4是否需要在程序中设置boot to  fllash 为EMU-KKEY  // 0X555AA         EMU–BMODE // 0X000B ?))

3、InCCS v5, 在调试期间当代码加载到设备后,它自动编程到闪存。它的调试加载的步骤 是什么?

期待您解惑,谢谢

yingying fu:

回复 Green Deng:

1223截图.docx例程来源是controlSUITE> …>F2806X>V151>F2806X_example_ccsv5,我想问跳线是LAUNCCHXL-F28069板子上的拨码开关S1控制的几个引脚是否都是设为high?如图所示

请问怎么配置程序从flash启动

您好,我想请问 一下  1、F28069 提供的示例程序有那些是需要从boot to  fllash  模式 中执行的 ,

2、为“引导到Flash”模式设置所需的跳线是什么?  每个引导模式所需的跳线设置如表2.3、表2.4和表2.5所示。同时参考文献 f2806x-FRM-EX-UG.pdf ((据 表2.3 设置为EMU MODE,据 表 2.4是否需要在程序中设置boot to  fllash 为EMU-KKEY  // 0X555AA         EMU–BMODE // 0X000B ?))

3、InCCS v5, 在调试期间当代码加载到设备后,它自动编程到闪存。它的调试加载的步骤 是什么?

期待您解惑,谢谢

Green Deng:

回复 yingying fu:

开关的设置可以参考:www.ti.com/…/sprui11b.pdf
第6页5.3 Boot Mode Selection,应该配置为GetMode,也就是123分别是HHL。

配置为flash启动,以例程C:\ti\controlSUITE\device_support\f2806x\v151\F2806x_examples_ccsv5\gpio_toggle为例,最基础的需要:
1、右键工程中的28069_RAM_Ink.cmd文件选择Excldue from build。
2、右键工程名,选择Add Files,并添加路径“C:\ti\controlSUITE\device_support\f2806x\v151\F2806x_common\cmd”下的“F28069.cmd”文件。
以上两步是将原工程中用于ram运行的文件替换为flash运行的文件。
3、最后,右键工程名,选择Properties,在Build – C2000 Compiler – Include Options – Add dir to #include search path中点击加号,将刚才“F28069.cmd”文件的路径添加进去。这步的话例程中已经有添加,我作为说明提示一下,实际应该不用操作。
完成上述步骤之后,就可以debug程序了,确保仿真器和芯片连接正常的话软件会自动执行erasing flash、loading program等等步骤,全部完成后就表示程序已经下载进flash了,再点击运行就是从flash启动了。

您好,我想请问 一下  1、F28069 提供的示例程序有那些是需要从boot to  fllash  模式 中执行的 ,

2、为“引导到Flash”模式设置所需的跳线是什么?  每个引导模式所需的跳线设置如表2.3、表2.4和表2.5所示。同时参考文献 f2806x-FRM-EX-UG.pdf ((据 表2.3 设置为EMU MODE,据 表 2.4是否需要在程序中设置boot to  fllash 为EMU-KKEY  // 0X555AA         EMU–BMODE // 0X000B ?))

3、InCCS v5, 在调试期间当代码加载到设备后,它自动编程到闪存。它的调试加载的步骤 是什么?

期待您解惑,谢谢

yingying fu:

回复 Green Deng:

好的,谢谢。前3个步骤例程中已经有添加,不用操作。之后的调试步骤是否和boot to SARAM的调试步骤相同?=》USB连接开发板和主机》导入例程(Example_28069xflash)》build project》View>目标配置》右击.ccxml文件》launch selected configuration 》connect target》run》load》load program,选择flash的输出文件进行加载》之后运行、暂停、停止。是否是按此步骤进行加载,期待您的解惑,谢谢

您好,我想请问 一下  1、F28069 提供的示例程序有那些是需要从boot to  fllash  模式 中执行的 ,

2、为“引导到Flash”模式设置所需的跳线是什么?  每个引导模式所需的跳线设置如表2.3、表2.4和表2.5所示。同时参考文献 f2806x-FRM-EX-UG.pdf ((据 表2.3 设置为EMU MODE,据 表 2.4是否需要在程序中设置boot to  fllash 为EMU-KKEY  // 0X555AA         EMU–BMODE // 0X000B ?))

3、InCCS v5, 在调试期间当代码加载到设备后,它自动编程到闪存。它的调试加载的步骤 是什么?

期待您解惑,谢谢

Green Deng:

回复 yingying fu:

如果你是使用的.out文件烧写的话是按照上述步骤。
如果你有原工程的,那编译之后直接点击debug,系统会自动执行run》load》load program这3个步骤。

您好,我想请问 一下  1、F28069 提供的示例程序有那些是需要从boot to  fllash  模式 中执行的 ,

2、为“引导到Flash”模式设置所需的跳线是什么?  每个引导模式所需的跳线设置如表2.3、表2.4和表2.5所示。同时参考文献 f2806x-FRM-EX-UG.pdf ((据 表2.3 设置为EMU MODE,据 表 2.4是否需要在程序中设置boot to  fllash 为EMU-KKEY  // 0X555AA         EMU–BMODE // 0X000B ?))

3、InCCS v5, 在调试期间当代码加载到设备后,它自动编程到闪存。它的调试加载的步骤 是什么?

期待您解惑,谢谢

yingying fu:

回复 Green Deng:

好的,谢谢您的解惑

CCS8.3的编译进度条怎么调出来

C2000阅读(17)

就是这个进度条,刚安装好,进去就没有,用的CCS版本是8.3.1,Always Run Background那个选项已经把勾去掉了,请问大佬们,这个经典的进度条怎么调出来啊?没有这个进度条看着很费劲啊

Green Deng:window – preferences – general中的Always Run Background是否有打勾?

就是这个进度条,刚安装好,进去就没有,用的CCS版本是8.3.1,Always Run Background那个选项已经把勾去掉了,请问大佬们,这个经典的进度条怎么调出来啊?没有这个进度条看着很费劲啊

FLY LEE:

回复 Green Deng:

去掉了,也不行

就是这个进度条,刚安装好,进去就没有,用的CCS版本是8.3.1,Always Run Background那个选项已经把勾去掉了,请问大佬们,这个经典的进度条怎么调出来啊?没有这个进度条看着很费劲啊

FLY LEE:

回复 Green Deng:

你好,请问还有没有什么隐藏的设置,会导致这个进度条出不来?

就是这个进度条,刚安装好,进去就没有,用的CCS版本是8.3.1,Always Run Background那个选项已经把勾去掉了,请问大佬们,这个经典的进度条怎么调出来啊?没有这个进度条看着很费劲啊

Green Deng:

回复 FLY LEE:

应该没有其他设置了。你有做过什么设置吗?正常来说这个进度条是默认显示的。

就是这个进度条,刚安装好,进去就没有,用的CCS版本是8.3.1,Always Run Background那个选项已经把勾去掉了,请问大佬们,这个经典的进度条怎么调出来啊?没有这个进度条看着很费劲啊

FLY LEE:

回复 Green Deng:

没有,都是软件默认的,没有就算了吧,也可能是我们公司电脑加密系统的问题

就是这个进度条,刚安装好,进去就没有,用的CCS版本是8.3.1,Always Run Background那个选项已经把勾去掉了,请问大佬们,这个经典的进度条怎么调出来啊?没有这个进度条看着很费劲啊

Green Deng:

回复 FLY LEE:

这个应该不影响调试。如果确实需要的话可以试一下更新CCS最新版

程序死在 __TI_resource_lock(__TI_LOCK_HEAP_ALLOC),什么原因?

C2000阅读(13)

在TMS320F28377D 中使用malloc函数程序死在__TI_resource_lock(__TI_LOCK_HEAP_ALLOC),调试显示Break at address "0x3fe00a" with no debug information available, or outside of program code.谁知道是什么原因?

Green Deng:应该是分配的地址有问题,类似问题可以参考:e2e.ti.com/…/737679

致力于C2000的技术推广

联系我们联系我们