TI中文支持网
TI专业的中文技术问题咨询交流网站

tms320F28377d 的emif模块,使用它来读写MR4A16b芯片?读写的数据不对,请问什么原因?

C2000阅读(1)

tms320F28377d  的emif模块,使用它来读写MR4A16b芯片?读写的数据不对,引脚配置检查过了没有问题。MR4A16b的字节使能信号是一直使能,引脚直接接gnd,时序配置如下(系统时钟200M,EMIF的分频系数是1,EMIF的时钟为200M):

 Emif1Regs.ASYNC_CS2_CR.all =(EMIF_ASYNC_ASIZE_16  |

EMIF_ASYNC_TA_1 |

EMIF_ASYNC_RHOLD_2 |

EMIF_ASYNC_RSTROBE_4 |

EMIF_ASYNC_RSETUP_2 |

EMIF_ASYNC_WHOLD_2 |

EMIF_ASYNC_WSTROBE_2 |

EMIF_ASYNC_WSETUP_2 |

EMIF_ASYNC_EW_DSIABLE |

EMIF_ASYNC_SS_DISABLE

);

写入的数据不确定是不是写入,读取的数据全部是0.

controlSULTE 中这个芯片单核V190 下面,emif1_16bit_asram_cpu1,中使用的asram是哪个芯片,有对应的原理图吗?

Green Deng:

例程没有规定哪款芯片,故也没有提供原理图。有一份设计准则你可以参考一下:www.ti.com/…/sprac96a.pdf
上述你说读取的数据全是0,是否有测试过数据引脚上的是否有信号?

user4329368:

回复 Green Deng:

提到的文档我看过,没提供特别有用的信息。用的芯片引脚全在下面,没法测试,还有其他方法吗?

Green Deng:

回复 user4329368:

硬件没办法确定的话只能考虑从软件上看了,但是你上传的也仅仅是时序配置的部分程序,是否方便将.C文件上传一下?或者其他重要的配置部分程序。

固定_c_int00函数地址

C2000阅读(2)

请问这个地址如何固定?

Susan Yang:

请问之前的方法,您是否有尝试过?是有错误还是?

1 在page0的memory中定义一个地址,是_c_int00所要放的地址,如

CINT00 : origin = 0x13E000, length = 0x000050

2 然后在段中定义如下语句

boot : > CINT00 PAGE = 0

{ -l rts2800_fpu32.lib<boot.obj>(.text) /*fix _c_int00 address as 0x13e000*/

}

Susan Yang:

也有之前的讨论贴

e2e.ti.com/…/543027

打开controlSUITE\powerSUITE\v_1_07_00_00\tidm_1000文件中的main.cfg出现报错

C2000阅读(5)

你好,

我在打开controlSUITE\powerSUITE\v_1_07_00_00\tidm_1000文件中的main.cfg出现报错

1.如下图

2. 我之前买过三相VIENNA的产品,是基于C2000Ware_DigitalPower_SDK_3_00_00_00\solutions\tidm_1000的参考设计手册

你们有没有基于这个controlSUITE\powerSUITE\v_1_07_00_00\tidm_1000做的三相vienna的参考设计手册??我觉得这个的程序看起来比基于C2000Ware_DigitalPower_SDK_3_00_00_00\solutions\tidm_1000好太多了。我想基于这个例程做实验

Susan Yang:

1 请问您使用的是哪个版本的CCS? 我用CCS9.1来测试,是没有错误的

2 您可以在下面的路径内进行查找: C:\ti\controlSUITE\development_kits\tidm_1000\v1_01_00_00

user6100255:

回复 Susan Yang:

我用的是CCS 10版本,我是直接安装的controlSUITE,如果要打开main.cfg,是不是需要安装其他文件?

我找到那个例程了,请问这C2000Ware_DigitalPower_SDK_3_00_00_00和controlSUITE只是编程不一样,都是用的同一个板子吧?我按照这个controlSUITE的列程给板子上电,不会炸吧?

Susan Yang:

回复 user6100255:

1 您是使用右键点击main.cfg,OPEN–>OPEN WITHXGCONF?

2 controlsuit使用的是 www.ti.com/…/TIDM-1000

在C:\ti\controlSUITE\development_kits\tidm_1000\v1_01_00_00\docs 中有相关说明

user6100255:

回复 Susan Yang:

是的,我直接是右键点击main.cfg,OPEN–>OPEN WITH XGCONF,但还是不行

user6100255:

回复 Susan Yang:

好的,我照着找出来了

但是这个的安装在哪里呀?只有一个more

电击more进去后,出现的是GUI Composer v2的文档,没有看到下载的地方

user6100255:

回复 Susan Yang:

依然报错

如下

user6100255:

回复 Susan Yang:

感谢你的回复

我按照您的指示,安装了相应的powersuite

然而打开main.cfg的时候,一直卡在该界面

或许是软件问题,所以,如果我想的是用CCS9.0.1之前的早期版本,是否可以打开该文件??

关于AD基值的问题

C2000阅读(2)

大家好,是这样的,我想从HVMotor套件中读回此时的三相电压电流以及母线电压,我可以读出对应AD采回的数值(0-4095),但是我想将其还原成实际值时,应当怎么处理呢?是不是除以4096再乘以一个基值,也就是该AD模块能采集的最大值,这个最大值应该为多少呢?

使用的mcu是28035,谢谢!

Green Deng:

AD模块的读数时0~4095,对应的是0~3.3v的电压采样范围。也就是输入到ADC引脚的电压是0~3.3v的值。

关于boot 启动

C2000阅读(1)

1 这个 boot 启动,  如何使用 ?

2,没有crc 校验啊

3,

EntryAddr = GetLongData();

CopyData();

这2个语句具体怎么操作?

Susan Yang:

请问您现在使用的是哪款芯片/开发板?

一般boot的相关说明和使用可以在TRM内找到,如 28377的话,可以在第四章 ROM Code and Peripheral Booting 找到

www.ti.com.cn/…/spruhm8i.pdf

您现在主要目的是使用SCI BOOT? 我对您的描述有些疑惑

28377烧写正常,运行时报错

C2000阅读(5)

dsp烧写正常,点击运行就会报错。逐步运行发现是在系统初始化的时候保存,报错信息如下:

C28xx_CPU1: Error: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 8.1.0.00007)

C28xx_CPU1: Trouble Halting Target CPU: (Error -1135 @ 0x8525) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 8.1.0.00007)

C28xx_CPU1: Unable to determine target status after 20 attempts

C28xx_CPU1: Failed to remove the debug state from the target before disconnecting.  There may still be breakpoint op-codes embedded in program memory.  It is recommended that you reset the emulator before you connect and reload your program before you continue debugging

jtag在配置文件中的测试是正常的,请问各位朋友是哪里出了问题?

Susan Yang:

您使用的是自己的板子还是开发板?

除了烧写代码,您可以直接连接CCS吗?基本上启动目标配置文件,然后右键单击CPU并选择connect。如果可行,请查看是否可以通过CCS内存监视窗口访问内存位置。

一般这种报错硬件上有问题的概率比较大,E2E上也有类似的讨论

e2e.ti.com/…/749137

LAUNCHXL-F28379D烧写了SCI例程 没有反应

C2000阅读(4)

烧写了C2000Ware_3_02_00_00\device_support\f2837xd\examples\cpu1\sci_echoback这个例程,在RAM里面调试,串口发送和接收都没有反应。串口转USB是好的 能自收自发,注释里面有这么一句:

Connect the SCI-A port to a PC via a transceiver and cable.
//! – GPIO28 is SCI_A-RXD (Connect to Pin3, PC-TX, of serial DB9 cable)
//! – GPIO29 is SCI_A-TXD (Connect to Pin2, PC-RX, of serial DB9 cable)

于是我板子上3脚接了串口转USB的TX 2脚接了串口转USB的RX,编译烧录运行以后串口调试助手上啥也没有

程序卡在while(SciaRegs.SCIFFRX.bit.RXFFST == 0) { } // wait for empty state这里

例程没有改过,driverlib里面例程也是卡死,

其他串口还没试过

板子刚买 flash里烧了双核点灯的程序在里面 一个核跑一个灯 两个灯能正常跑

user6022550:

回复 Susan Yang:

试了一下 还是不行,后来我转而用SCIB,用的是GPIO18和19,LAUNCHXL上是3和4脚,还是没有反应

Susan Yang:

回复 user6022550:

好的,我再测试一下后给您回复

user6022550:

回复 Susan Yang:

多谢多谢 应该是我MUX那边最后一个参数错了

Susan Yang:

回复 user6022550:

很高兴能帮到您!

user6022550:

回复 Susan Yang:

顺便问一句,SCI是没有DMA的?我在手册DMA介绍里的DMA Block Diagram 发现DMA不连SCI????

Susan Yang:

回复 user6022550:

很抱歉,漏掉了您的回复

是不支持SCI DMA的,请参考我之前帖子的回复

e2echina.ti.com/…/466826

4脚线性霍尔的用法

C2000阅读(6)

请教一下 4脚线性霍尔的用法 

Green Deng:

一般四角线性的霍尔元件在接法上是:1、2脚接正,3、4脚接负。或者1、2脚接负,3、4脚接正。

使用28335中断接收数据的时候,接收大数据流进入中断次数不对。

C2000阅读(3)

使用28335中断接收数据的时候,一个一个的发送接收为正常的,例如发送01,接收为01。但是发送例如010203,接收为01FF,并且只会进入两次次中断。

interrupt void SCIARX_IRQn(void)
{
*PCData = ScibRegs.SCIRXBUF.all;
PCData++;
PieCtrlRegs.PIEACK.all |= 0x100; // Issue PIE ack
}

接收代码如上图,我需要添加什么来保证接收的正常吗?

EALLOW;
PieVectTable.SCIRXINTB = &SCIARX_IRQn;
EDIS;

InitScibGpio();
ScibRegs.SCICCR.all = 0x0007; // 1 stop bit, No loopback
ScibRegs.SCICTL1.all = 0x0003; // Relinquish SCI from Reset
ScibRegs.SCICTL2.bit.RXBKINTENA = 1; 

ScibRegs.SCIHBAUD =scihbaud; // 9600 baud @LSPCLK = 37.5MHz.
ScibRegs.SCILBAUD =scilbaud;
// SciaRegs.SCICCR.bit.LOOPBKENA =1; // Enable loop back

ScibRegs.SCIFFTX.bit.SCIFFENA = 0;
ScibRegs.SCICTL1.bit.SWRESET=1;//Relinquish SCI from Reset

PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
PieCtrlRegs.PIEIER9.bit.INTx3 = 1;
IER |= M_INT9;
EINT;
ERTM;

初始化如上

Green Deng:

像这样的通讯问题有很多潜在的原因:

首先,你能否确保该管脚已正确地MUX为SCIRX管脚?有关详细信息,请参阅TRM的"1.4.5 GPIO and Peripheral Multiplexing (MUX)"部分。这是最有可能的原因,因为没有分配GPIOA/GPIOB MUX寄存器,所以可能导致SCIRX接收0xFF(因为线路总是高电平,实际上没有接收任何数据)。

其次,如果MUX已正确分配给给定管脚的SCIRX,并且设备仍存在此问题,你可以尝试对RX线路进行blocking read(类似于C2000ware里面F280049的例程sci_ex2_interrupts.c):

SCI_readCharBlockingNonFIFO(uint32_t base)
{//// Check the arguments.//ASSERT(SCI_isBaseValid(base));//// Wait until a character is available in the receive FIFO.//while(!SCI_isDataAvailableNonFIFO(base)){}//// Return the character from the receive buffer.//return(uint16_t)(HWREGH(base + SCI_O_RXBUF) & SCI_RXBUF_SAR_M);
}

SCI_isDataAvailableNonFIFO函数会反复检查RXRDY位,以确保数据已被实际接收。这样可以确保每次接收到完整字节。有关更多详细信息,请参阅C2000Ware中的sci_ex2_interrupts.c例程(位于:\…\C2000Ware_版本号\driverlib\f28004x\examples\sci)。

最后,如果条件允许的话,可以用逻辑分析仪或者示波器监控引脚的输入和输出,确定通信是否按预期进行(检查输入波特率是否正确,是否接收到数据等)。

调用第三方库导致编译后的代码特别大

C2000阅读(2)

我使用28377单片机进行开发,开发中用到了第三方模块以及提供的lib库。第三方的lib库中有很多函数,但在我的代码中只使用了其中一小部分。

但是使用过程中,编译后发现加入代码占用空间特别大,通过观察map文件,可以看到lib库中所有的函数都被编译进了代码。

想请教下是什么原因导致的这种情况,因为我在同一个工程中也使用了rts2800_fpu32.lib库,但只有使用的函数才被编译,如下图:

系统自带的rts2800_fpu32.lib库,每个函数应该是单独的c文件,编译生成单独的obj。

第三方库生成了一个obj文件,如下图:

是否是因为第三方库文件在编译的时候,将所有函数放在了一个c文件中导致的?或者是在生成lib文件的时候设置问题?

期望得到解答,谢谢。

user4323508:

自带库编译后在map文件中的情况

第三方库情况

Annie Liu:

回复 user4323508:

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