Thread 中讨论的其他器件:controlSUITE
您好!
与我之前关于通过 SCI 将 ADC 结果传输到超级终端的问题相关、我设法正确地传输了该结果。 现在、我要将 AdcResult 保存到文本文件、以便稍后用于进一步处理。 到目前为止、我已将"adc_soc_ePWM_cpu01.c"示例添加到了以下内容:
1-我将文件全局定义为(文件*myfile)。
2-在下面的 Adca1_ISR 中,我创建了打开和关闭文件的条件。
3-我尝试使用 fprintf 函数将一个简单的计数器保存到文件中、这导致.text 的对焦 RAM 是不够的。 因此、我尝试按如下方式更改.text ram alocation:
//.text:>RAMM0 | RAMD0| RAMLS0,page = 0 //我以前将其与此进行了切记,以便 sprintf 正常工作,并且工作正常。
.text :>RAMGS12 | RAMGS13| RAMGS14| RAMGS15,PAGE = 1 //我将上述行添加到此行,以便 fprintf 正常工作。
但是、当我进行此更改时、下面显示的误差不再存在。 但是、当我调试并运行项目时、adcResults 缓冲区没有接收到转换结果。
"C:/ti/controlSUITE/device_support/F2837xD/v210/F2837xD_common/cmd/2837xD_RAM_lnk_cpu1.cmd、第54行:错误#10099-D: 程序将无法放入可用内存中。 放置方式
".text"大小为0x2b3f PAGE 0的对齐/分块失败。 可用 存储器范围:
RAMM0大小:0x2DE 未使用:0x1最大空洞:0x1
RAMD0大小:0x800未使用:0x0最大孔:0x0
RAMLS0大小:0x2000未使用:0x1最大孔:0x1
错误#10010:链接期间遇到错误;未 构建"ADC_SoC_ePWM_cpu01.out"。
在开机自检结束时查看我的 RAM 文件。
--------------------------------------------------------------------
//
// adca1_ISR -在 ISR 中读取 ADC 缓冲器
//
中断 void adca1_ISR (void)
{
AdcaResults[resultsIndex++]=AdcaResultRegs.ADCRESULT0;
if (results_buffer_size = resultsIndex)
{
对于(z=0;z <RESULTS_BUFFER_SIZE;z++)
{
Vin =结果[z];
SEND_RESULT (Vin);
}
}
int 计数器= 0;
如果(计数器< 9){
myfile = fopen ("AdcaResults.txt"、"w");
fprintf (myfile、"%d\n"、计数器);
//printf (filePtr、"%d、"、AdcResults);
COUNTER++;
}
否则、如果(counter =9){
fclose (myfile);
}
if (results_buffer_size <= resultsIndex)
{
resultsIndex = 0;
bufferFull = 1;
}
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//清除 INT1标志
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;
}
--------------------------------------------------------------------
存储器
{
第0页:
/* begin 用于"引导至 SARAM"引导加载程序模式*/
开始:origin = 0x000000,length = 0x000002
RAMM0:origin = 0x000122、length = 0x0002DE // length = 0x0002DE
RAMD0:origin = 0x00B000、length = 0x000800
RAMLS0:origin = 0x008000、length = 0x002000 //这是0x000800
// RAMLS1:origin = 0x008800,length = 0x000800 //之前为0x000800
// RAMLS2:origin = 0x009000,length = 0x000800 // was 0x000800
// RAMLS3:origin = 0x009800,length = 0x000800 // was 0x000800
// RAMLS4:origin = 0x00A000,length = 0x000800 //之前为0x000800
复位:origin = 0x3FFFC0,length = 0x000002
第1页:
BOOT_RSVD:origin = 0x000002,length = 0x000120 // M0的一部分,引导 ROM 将此用于栈*/
RAMM1:origin = 0x000400、length = 0x000400 //片上 RAM 块 M1 *
RAMD1:origin = 0x00B800,length = 0x000800
RAMLS5:origin = 0x00A800,length = 0x000800
RAMGS0:origin = 0x00C000、length = 0x001000
RAMGS1:origin = 0x00D000、length = 0x001000
RAMGS2:origin = 0x00E000、length = 0x001000
RAMGS3:origin = 0x00F000、length = 0x001000
RAMGS4:origin = 0x010000,length = 0x001000
RAMGS5:origin = 0x011000,length = 0x001000
RAMGS6:origin = 0x012000,length = 0x001000
RAMGS7:origin = 0x013000,length = 0x001000
RAMGS8:origin = 0x014000,length = 0x001000
RAMGS9:origin = 0x015000,length = 0x001000
RAMGS10:origin = 0x016000,length = 0x001000
RAMGS11:origin = 0x017000,length = 0x001000
RAMGS12:origin = 0x018000,length = 0x001000 //*仅在 F28379D、F28377D、F28375D 设备上可用。 移除其他设备上的线路。 *
RAMGS13:origin = 0x019000,length = 0x001000 //*仅在 F28379D、F28377D、F28375D 设备上可用。 移除其他设备上的线路。 *
RAMGS14:origin = 0x01A000,length = 0x001000 //*仅在 F28379D、F28377D、F28375D 设备上可用。 移除其他设备上的线路。 *
RAMGS15:origin = 0x01B000,length = 0x001000 //*仅在 F28379D、F28377D、F28375D 设备上可用。 移除其他设备上的线路。 *
CPU2TOCPU1RAM:origin = 0x03F800,length = 0x000400
CPU1TOCPU2RAM:origin = 0x03FC00,length = 0x000400
CANA_MSG_RAM:origin = 0x049000、length = 0x000800
CANB_MSG_RAM:origin = 0x04B000、length = 0x000800
}
部分
{
codestart:> begin,page = 0
//.text:>>RAMM0 | RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4,page = 0
//.text:>RAMM0 | RAMD0| RAMLS0,page = 0 //我将上述行添加到此行
.text:>>RAMGS12 | RAMGS13| RAMGS14| RAMGS15,PAGE = 1 //我将上述行添加到此行,以便 fprintf 正常工作
.cinit:> RAMM0,page = 0
.pinit:> RAMM0,page = 0
switch:>RAMM0,page = 0
.reset:> reset,page = 0,type = DSECT //未使用,*/
.cio:>RAMGS15,page = 1 //我添加了这一行,不在这里
.stack:>RAMM1,PAGE = 1.
.ebss:> RAMGS13,page = 1 // Wed RAMLS5 I 更改为打开文本文件
econst:>RAMGS14,page = 1 //之前为 RAMLS5
.esysmem:> RAMLS5,page = 1.
filter_RegsFile:> RAMGS0,PAGE = 1
RAMS0:>RAMGS0,PAGE = 1
ramgs1:>RAMGS1,page = 1.
#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
.TI.ramfunc:{}> RAMM0,PAGE = 0
其他
ramfuncs:>RAMM0 page = 0
#endif
#endif
/*使用 IPC API 驱动程序时需要以下部分定义*/
组:> CPU1TOCPU2RAM,PAGE = 1
{
PUTBUFFER
PUTWRITEIDX
GETREADIDX
}
组:> CPU2TOCPU1RAM,PAGE = 1
{
GETBUFFER:TYPE = DSECT
GETWRITEIDX:TYPE = DSECT
PUTREADIDX:TYPE = DSECT
}
/*以下部分定义适用于 SDFM 示例*/
filter1_RegsFile:> RAMGS1,PAGE = 1,fill=0x1111
Filter2_RegsFile:> RAMGS2,PAGE = 1,fill=0x2222
Filter3_RegsFile:> RAMGS3,PAGE = 1,fill=0x3333
Filter4_RegsFile:> RAMGS4,PAGE = 1,fill=0x4444
Differit_RegsFile:>RAMGS5,PAGE = 1,fill=0x3333
}
/*
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//文件结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*
此致
Hayder

