4898|18

12

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

F28027-FLASH烧写 [复制链接]

 
本帖最后由 cht8805 于 2016-7-11 11:08 编辑

大家好,我才接触F28027,自己做的电路板,编写了小程序,RAM里运行可以,离开仿真器,断电后就不行了。请问烧写FLASH的步骤和设置?BOOT MODE怎么设置,管脚怎么处理?Debug和Release又是怎么回事?软件版本CCS5.5。多谢!

最新回复

本帖最后由 elvike 于 2016-7-15 16:05 编辑 你怎么不参考官方的例程,ramfuncs不需要修改,直接用可以的。然后自己再定义一个跟ramfuncs类似的段名搬你自己的代码就可以了。  详情 回复 发表于 2016-7-15 15:57
点赞 关注
 

回复
举报

12

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
把上面的问题再细化下。
1、F28027-FLASH引导模式是不是使用GPIO18、29、34三个管脚,需要在硬件设计上把这三个管脚上拉置高还是在软件里置位?如果管脚复用怎么处理?
2、Debug和Release模式是什么意思?何时选择?烧写FLASH时需要选择吗?
3、代码不复制到RAM里应该可以运行吧?如果不复制代码的话,是不是把CMD文件更换后就可以写到FLASH里运行了?
4、建议各位大侠从不复制代码到RAM里运行的角度讲解FLASH烧写过程,然后再讲解复制代码的过程。这样初学者能更好理解。
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

板凳
 
我有一篇《……在FLASH里运行》的帖子,你看一下。
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

4
 
本帖最后由 cht8805 于 2016-7-11 15:00 编辑
dontium 发表于 2016-7-11 13:33
我有一篇《……在FLASH里运行》的帖子,你看一下。

你好,那篇文章看过了,讲的很好,很有启发。我也按照你的方法试过,但不行。所以我怀疑是不是引导模式或DEBUG等方式错了。还请您仔细给科普一下,多谢。方便的话QQ:591778199
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

5
 
cht8805 发表于 2016-7-11 14:49
你好,那篇文章看过了,讲的很好,很有启发。我也按照你的方法试过,但不行。所以我怀疑是不是引导模式或 ...

刚看了下F28027的数据手册,引导管脚是GPIO34、GPIO37(TDO)和TRST三个,需要GPIO34=1;GPIO37=1;TRST=0。请问这是硬件电路控制还是软件设定?
 
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

6
 
1、F28027-FLASH引导模式是不是使用GPIO18、29、34三个管脚,需要在硬件设计上把这三个管脚上拉置高还是在软件里置位?如果管脚复用怎么处理?

对于这个芯片,不用刻意去这它的“启动模式”,在上电时,它自己就从内部的FLASH启动了。实际上关键的是XRS、TRST这两个脚 ,按照手册说明去做。

2、Debug和Release模式是什么意思?何时选择?烧写FLASH时需要选择吗?

两种都差不多,一种包含调试信息,一种不包含。。两种都可以正常运行。


3、代码不复制到RAM里应该可以运行吧?如果不复制代码的话,是不是把CMD文件更换后就可以写到FLASH里运行了?

可以运行!但FLASH的等待时间要设置正确。

4、建议各位大侠从不复制代码到RAM里运行的角度讲解FLASH烧写过程,然后再讲解复制代码的过程。这样初学者能更好理解。

好多程序是既有在RAM里运行的段段儿,也有在FLASH里运行的段段儿。一般不会全部在RAM里运行,特别是大型程序。


 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

7
 
这类型的问题已经提过很多次了,楼主可以在论坛里搜索。基本都能找到你要的答案,

点评

是啊。我基本把相关帖子都看了,问题依然没解决。做为DSP的新手,我的感觉是F28027类似于单片机,烧写FLASH不成功首先从硬件着手,看编程接口和引导管脚配置是否正常(新手就是不知什么样是正常的,管脚到底需不需要  详情 回复 发表于 2016-7-11 22:08
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

8
 
elvike 发表于 2016-7-11 16:58
这类型的问题已经提过很多次了,楼主可以在论坛里搜索。基本都能找到你要的答案,

是啊。我基本把相关帖子都看了,问题依然没解决。做为DSP的新手,我的感觉是F28027类似于单片机,烧写FLASH不成功首先从硬件着手,看编程接口和引导管脚配置是否正常(新手就是不知什么样是正常的,管脚到底需不需要外部硬件配置和怎么配置),FLASH延时怎么处理,在哪处理;先把FLASH烧写成功,程序能运行,然后再考虑是在RAM里还是FLASH里运行,运行时需要什么条件。这方面的资料确实很少,看了很多,始终没有总结出可行的办法。可能我比较笨啊。版主的《……在FLASH里运行》一文很好,把软件部分将透了,可对自己设计电路、做线路板和软硬件联调讲的较少,对电路设置方面基本没讲,感觉意犹未尽,不畅快淋漓。可能各位老手大侠对新手按图索骥式的操作体会不深,不简单点,不面面俱到真是不行。不把开发环境搭建好,后面啥也别谈了。我虽然有单片机基础,但自学DSP确实很费劲,总觉得有个弯绕不过来,恳请大侠详解。

点评

硬件设计倒是没什么,一般都会设置成flash启动,ti的c2000不同型号引脚不一样,需要注意。软件方面一般都知道要换cmd,但是有一些文件如果从flash启动是需要添加的。你最开始可以从ti的例程出发,了解他的例程都包含  详情 回复 发表于 2016-7-11 22:49
 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

9
 
cht8805 发表于 2016-7-11 22:08
是啊。我基本把相关帖子都看了,问题依然没解决。做为DSP的新手,我的感觉是F28027类似于单片机,烧写FLA ...

硬件设计倒是没什么,一般都会设置成flash启动,ti的c2000不同型号引脚不一样,需要注意。软件方面一般都知道要换cmd,但是有一些文件如果从flash启动是需要添加的。你最开始可以从ti的例程出发,了解他的例程都包含了哪些文件,然后自己尝试去新建工程。CMD文件一定要看懂

点评

F28027的FLASH引导模式要求GPIO34(COMP2OUT)=1、GPIO37(TDO)=1、TRST=0。是不是可以理解为外部电路GPIO34(COMP2OUT)接高电平、GPIO37(TDO)接高电平、TRST按手册要求通过2.2K电阻接地。这是FLASH引导启动的硬件条  详情 回复 发表于 2016-7-11 23:10
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

10
 
elvike 发表于 2016-7-11 22:49
硬件设计倒是没什么,一般都会设置成flash启动,ti的c2000不同型号引脚不一样,需要注意。软件方面一般都 ...

F28027的FLASH引导模式要求GPIO34(COMP2OUT)=1、GPIO37(TDO)=1、TRST=0。是不是可以理解为外部电路GPIO34(COMP2OUT)接高电平、GPIO37(TDO)接高电平、TRST按手册要求通过2.2K电阻接地。这是FLASH引导启动的硬件条件?
 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

11
 
是的 sprufn6a.pdf (290.23 KB, 下载次数: 56)
sprufn6a.pdf (290.23 KB, 下载次数: 56)

点评

引导的硬件条件都具备了,依然不行。下一步最简单的验证FLASH是否写入和正确运行的办法是什么(不考虑程序搬移到RAM空间运行)?是不是在初始化程序InitSysCtrl()后面加上InitFlash();就可以了,其它程序不用改动?  详情 回复 发表于 2016-7-12 13:41
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

12
 

引导的硬件条件都具备了,依然不行。下一步最简单的验证FLASH是否写入和正确运行的办法是什么(不考虑程序搬移到RAM空间运行)?是不是在初始化程序InitSysCtrl()后面加上InitFlash();就可以了,其它程序不用改动?版主说的FLASH等待时间怎么加入,加到哪里?
 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

13
 
参照官方的例程

点评

在线吗?方便联系吗?QQ-591778199  详情 回复 发表于 2016-7-15 09:19
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

14
 
elvike 发表于 2016-7-12 14:24
参照官方的例程

在线吗?方便联系吗?QQ-591778199

点评

FLASH烧写已成功,主要问题是BOOTMODE管脚设置不对,引导启动硬件条件不对。现在的问题是调试时SPWM频率20KHZ,烧写到FLASH后,频率只有2.5KHZ,加上#pragma CODE_SECTION(epwm1_timer_isr, "ramfuncs");这句,就出错  详情 回复 发表于 2016-7-15 09:31
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

15
 
cht8805 发表于 2016-7-15 09:19
在线吗?方便联系吗?QQ-591778199

FLASH烧写已成功,主要问题是BOOTMODE管脚设置不对,引导启动硬件条件不对。现在的问题是调试时SPWM频率20KHZ,烧写到FLASH后,频率只有2.5KHZ,加上#pragma CODE_SECTION(epwm1_timer_isr, "ramfuncs");这句,就出错,直接跳到ILLEGAL_ISR里,请问怎么解决?

点评

#include "DSP28x_Project.h" volatile Uint32 Num; int SinceTable[50]={25,28,31,34,37,39,42,44,46,47,48,49,49,49,49,48, 47,46,44,42,39,37,34,31,28,25,21,18,15,12,10,7, 5,3,2,1,0,0,0,0,1,2,  详情 回复 发表于 2016-7-15 10:25
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

16
 
cht8805 发表于 2016-7-15 09:31
FLASH烧写已成功,主要问题是BOOTMODE管脚设置不对,引导启动硬件条件不对。现在的问题是调试时SPWM频率2 ...

#include "DSP28x_Project.h"

volatile Uint32 Num;


int SinceTable[50]={25,28,31,34,37,39,42,44,46,47,48,49,49,49,49,48,
                47,46,44,42,39,37,34,31,28,25,21,18,15,12,10,7,
                5,3,2,1,0,0,0,0,1,2,3,5,7,10,12,15,
                18,21,};


#define PWM1_INT_ENABLE  1
void InitEPwmTimer(void);              // EPWM模块初始化程序
void update_compare(void);             // 比较值定义
interrupt void epwm1_timer_isr(void);  // 中断服务程序

//extern Uint16 RamfuncsLoadStart;
//extern Uint16 RamfuncsLoadEnd;
//extern Uint16 RamfuncsRunStart;

#pragma CODE_SECTION(epwm1_timer_isr, "ramfuncs");

void main(void)
{
   InitSysCtrl();                      // 系统初始化函数

#ifdef FLASH
    //MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
    memcpy((uint16_t *)&RamfuncsRunStart,(uint16_t *)&RamfuncsLoadStart, (unsigned long)&RamfuncsLoadSize);
    InitFlash();
#endif


   InitEPwm1Gpio();                    // EPWM端口初始化
   DINT;                               // 关闭CPU中断
   InitPieCtrl();                      // PIE中断控制
   IER = 0x0000;                       // 关闭中断使能
   IFR = 0x0000;                       // 清除中断标志位
   InitPieVectTable();
   EALLOW;
   PieVectTable.EPWM1_INT = &epwm1_timer_isr;//中断函数入口
   EDIS;                               // 赋值中断函数地址
   InitEPwmTimer();                    // 初始化EPWM模块




   IER |= M_INT3;                      // 使能CPU级第三组中断
   PieCtrlRegs.PIEIER3.bit.INTx1 = PWM1_INT_ENABLE;
                                       // 使能PIE3.1
   EINT;                                // 使能全局中断
   ERTM;
   Num=0;
   for(;;)
   {
           //DELAY_US(10);
       asm("          NOP");
   }
}

/*EPWM模块初始化函数*/
void InitEPwmTimer()
{
   EALLOW;
   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;        // 停止TB计数
   EDIS;
   EPwm1Regs.ETSEL.bit.INTSEL = ET_CTRU_CMPA;      // 计数值等于比较值时产生中断
       EPwm1Regs.ETSEL.bit.INTEN = 1;                  // 使能中断
       EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;             // 第一次时产生中断
       EPwm1Regs.TBPRD =50;                        //
       EPwm1Regs.TBPHS.half.TBPHS = 0x0000;            // 同步值
       EPwm1Regs.TBCTR = 0;                            // 清除定时器计数
       EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;      // 定时器增模式
       EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;         // 同步脉冲装载不使能
       EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;          // 从镜像装载
       EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 关闭同步输出
       EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;        // TB时钟等于SYSCLK
       EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;


       EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;     // 镜像模式
       EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;    // 当CTR=prd的时候装载镜像数据
       //EPwm1Regs.CMPA.half.CMPA = 30000;
       EPwm1Regs.CMPA.half.CMPA = 25;                //调整占空比  50%时值应等于定时器周期一半
                                                       //数值越小,占空比越小

       EPwm1Regs.AQCTLA.bit.CAU =AQ_SET;
       EPwm1Regs.AQCTLB.bit.CAU =AQ_CLEAR;

      EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
      EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;


   EALLOW;
   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;         // TB时钟计数
   EDIS;

}


/*epwm1中断服务程序*/
//c2000的中断函数都要用“inerrupt”申明
interrupt void epwm1_timer_isr(void)
{
          if(Num>49)
                {Num=0;}
                EPwm1Regs.CMPA.half.CMPA=SinceTable[Num];
                Num++;
   //update_compare();
   EPwm1Regs.ETCLR.bit.INT = 1;
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
}


点评

ENTRY POINT SYMBOL: "_c_int00" address: 003f67bf MEMORY CONFIGURATION name origin length used unused attr fill ---------------------- -------- --------  详情 回复 发表于 2016-7-15 13:42
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

17
 
以下有问题吗?

ENTRY POINT SYMBOL: "_c_int00"  address: 003f67bf


MEMORY CONFIGURATION

         name            origin    length      used     unused   attr    fill
----------------------  --------  ---------  --------  --------  ----  --------
PAGE 0:
  PRAML0                00008000   00000800  0000001f  000007e1  RWIX
  OTP                   003d7800   00000400  00000000  00000400  RWIX
  FLASHD                003f0000   00002000  00000000  00002000  RWIX
  FLASHC                003f2000   00002000  00000000  00002000  RWIX
  FLASHA                003f6000   00001f80  00000a22  0000155e  RWIX
  CSM_RSVD              003f7f80   00000076  00000000  00000076  RWIX
  BEGIN                 003f7ff6   00000002  00000002  00000000  RWIX
  CSM_PWL_P0            003f7ff8   00000008  00000000  00000008  RWIX
  IQTABLES              003fe000   00000b50  00000000  00000b50  RWIX
  IQTABLES2             003feb50   0000008c  00000000  0000008c  RWIX
  IQTABLES3             003febdc   000000aa  00000000  000000aa  RWIX
  ROM                   003ff27c   00000d44  00000000  00000d44  RWIX
  RESET                 003fffc0   00000002  00000000  00000002  RWIX
  VECTORS               003fffc2   0000003e  00000000  0000003e  RWIX

PAGE 1:
  BOOT_RSVD             00000000   00000050  00000000  00000050  RWIX
  RAMM0                 00000050   000003b0  00000300  000000b0  RWIX
  RAMM1                 00000400   00000400  00000000  00000400  RWIX
  DEV_EMU               00000880   00000105  00000004  00000101  RWIX
  SYS_PWR_CTL           00000985   00000003  00000003  00000000  RWIX
  FLASH_REGS            00000a80   00000060  00000008  00000058  RWIX
  CSM                   00000ae0   00000010  00000010  00000000  RWIX
  ADC_RESULT            00000b00   00000020  00000020  00000000  RWIX
  CPU_TIMER0            00000c00   00000008  00000008  00000000  RWIX
  CPU_TIMER1            00000c08   00000008  00000008  00000000  RWIX
  CPU_TIMER2            00000c10   00000008  00000008  00000000  RWIX
  PIE_CTRL              00000ce0   00000020  0000001a  00000006  RWIX
  PIE_VECT              00000d00   00000100  00000100  00000000  RWIX
  COMP1                 00006400   00000020  00000011  0000000f  RWIX
  COMP2                 00006420   00000020  00000011  0000000f  RWIX
  EPWM1                 00006800   00000040  00000040  00000000  RWIX
  EPWM2                 00006840   00000040  00000040  00000000  RWIX
  EPWM3                 00006880   00000040  00000040  00000000  RWIX
  EPWM4                 000068c0   00000040  00000040  00000000  RWIX
  ECAP1                 00006a00   00000020  00000020  00000000  RWIX
  GPIOCTRL              00006f80   00000040  00000040  00000000  RWIX
  GPIODAT               00006fc0   00000020  00000020  00000000  RWIX
  GPIOINT               00006fe0   00000020  0000000a  00000016  RWIX
  SYSTEM                00007010   00000020  0000001f  00000001  RWIX
  SPIA                  00007040   00000010  00000010  00000000  RWIX
  SCIA                  00007050   00000010  00000010  00000000  RWIX
  NMIINTRUPT            00007060   00000010  00000010  00000000  RWIX
  XINTRUPT              00007070   00000010  00000010  00000000  RWIX
  ADC                   00007100   00000080  00000051  0000002f  RWIX
  I2CA                  00007900   00000040  00000022  0000001e  RWIX
  DRAML0                00008800   00000800  00000058  000007a8  RWIX
  PARTID                003d7fff   00000001  00000001  00000000  RWIX
  FLASHB                003f4000   00002000  00000000  00002000  RWIX
  CSM_PWL               003f7ff8   00000008  00000008  00000000  RWIX


SECTION ALLOCATION MAP

output                                  attributes/
section   page    origin      length       input sections
--------  ----  ----------  ----------   ----------------
.pinit     0    003f6000    00000000     UNINITIALIZED

.econst    0    003f6000    00000100     
                  003f6000    00000100     F2802x_PieVect.obj (.econst)

ramfuncs   0    003f6100    0000001f     RUN ADDR = 00008000
                  003f6100    0000001b     F2802x_SysCtrl.obj (ramfuncs)
                  003f611b    00000004     F2802x_usDelay.obj (ramfuncs)

.text      0    003f611f    000008b8     
                  003f611f    00000205     F2802x_Adc.obj (.text)
                  003f6324    00000131     F2802x_DefaultIsr.obj (.text:retain)
                  003f6455    0000011c     F2802x_SysCtrl.obj (.text)
                  003f6571    00000095     F2802x_OscComp.obj (.text)
                  003f6606    00000081     F2802x_EPwm.obj (.text)
                  003f6687    00000075     F2802x_CpuTimers.obj (.text)
                  003f66fc    00000069     main.obj (.text)
                  003f6765    0000005a     rts2800_ml.lib : fs_mpy.obj (.text)
                  003f67bf    00000044                    : boot.obj (.text)
                  003f6803    00000036     F2802x_TempSensorConv.obj (.text)
                  003f6839    0000002d     main.obj (.text:retain)
                  003f6866    0000002c     F2802x_Comp.obj (.text)
                  003f6892    0000002a     F2802x_Spi.obj (.text)
                  003f68bc    00000029     rts2800_ml.lib : fs_tol.obj (.text)
                  003f68e5    00000028     F2802x_PieCtrl.obj (.text)
                  003f690d    00000027     F2802x_PieVect.obj (.text)
                  003f6934    0000001a     F2802x_Sci.obj (.text)
                  003f694e    00000019     F2802x_I2C.obj (.text)
                  003f6967    00000019     rts2800_ml.lib : args_main.obj (.text)
                  003f6980    00000019                    : exit.obj (.text)
                  003f6999    00000013     F2802x_Gpio.obj (.text)
                  003f69ac    00000010     F2802x_ECap.obj (.text)
                  003f69bc    00000009     rts2800_ml.lib : _lock.obj (.text)
                  003f69c5    00000008     F2802x_CodeStartBranch.obj (.text)
                  003f69cd    00000007     F2802x_DisInt.obj (.text)
                  003f69d4    00000003     F2802x_DBGIER.obj (.text)

.cinit     0    003f69d7    0000004b     
                  003f69d7    00000035     main.obj (.cinit)
                  003f6a0c    0000000a     rts2800_ml.lib : _lock.obj (.cinit)
                  003f6a16    0000000a                    : exit.obj (.cinit)
                  003f6a20    00000002     --HOLE-- [fill = 0]

codestart
*          0    003f7ff6    00000002     
                  003f7ff6    00000002     F2802x_CodeStartBranch.obj (codestart)
 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

18
 
本帖最后由 elvike 于 2016-7-15 16:05 编辑

你怎么不参考官方的例程,ramfuncs不需要修改,直接用可以的。然后自己再定义一个跟ramfuncs类似的段名搬你自己的代码就可以了。

点评

我没修改ramfuncs啊,我也是按例程做的,不知问题出在哪?  详情 回复 发表于 2016-7-15 18:29
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

19
 
elvike 发表于 2016-7-15 15:57
你怎么不参考官方的例程,ramfuncs不需要修改,直接用可以的。然后自己再定义一个跟ramfuncs类似的段名搬你 ...

我没修改ramfuncs啊,我也是按例程做的,不知问题出在哪?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表