当前位置:首页 > 电源 > 电源AC/DC
[导读]引言 开关磁阻电机(Switched Reluctance Motor,SRM)的控制对实时性的要求很高,它需要不断地判断其转子瞬时位置、相电流等信息,进而控制SRM换相,实现电机运转。而作为SRM的控制核心,不仅要实现上述SRM基本控

引言
    开关磁阻电机(Switched Reluctance Motor,SRM)的控制对实时性的要求很高,它需要不断地判断其转子瞬时位置、相电流等信息,进而控制SRM换相,实现电机运转。而作为SRM的控制核心,不仅要实现上述SRM基本控制功能,而且要实现各种控制策略(包括电流斩波控制、电压PWM控制、角度位置控制),甚至是很复杂的SRM优化算法的应用。因此,SRM的控制需要一个性能优越的控制核心。
    TI公司推出的TMS320F2812是一款性能非常优越的数字信号处理器(DSP),最高工作时钟频率可达150MHz。其外设功能十分强大,存储资源也很丰富:芯片内部集成了18K SARAM(M0、M1各1K,L0、L1各4K,H0为8K),Flash为128K;且预留了5个扩展空间,方便用户进行功能扩展。这就为TMS320F2812运行方式的多样化提供了条件,同时也是选其作为SRM控制核心的原因。

1 TMS320F2812三种运行方式的实现
    TMS320F2812代码的开发环境为CCS,其工程一般由头文件、源文件、库文件以及连接命令文件(CMD)四种文件组成。头文件采用位域结构体进行定义,方便用户操作相关寄存器;源文件保存用户开发时编写的软件代码;库文件为系统文件,无法修改;CMD文件则是用来分配存储空间的,它告诉链接器将编译器生成的段链接到哪。所以,要想实现代码运行方式的多样化,必须很好地了解CMD文件。
    CMD文件包括MEMORY和SECTIONS。其中,MEMORY的作用是指示存储空间的起始位置和长度,而SECTIONS的作用是将各种初始化段和非初始化段分配到相应的存储空间。二者都是由编译器自己编译、生成及归类的。初始化段包括所有的代码、常量及初始化表格等;非初始化段由变量、堆栈等组成。用户也可以通过“#pragma DATA_SECTION”和“#pragma CODE_SECTION”指令,将自己定义的数据段或代码段分配到对应的数据空间或程序空间,完成映射。
1.1 RAM调试运行
    RAM调试运行指的是将用户编写的代码下载(load)到片内RAM,并在RAM上直接运行的一种运行方式。这种方式实际上就是通常所说的在线仿真。TMS320F2812通过仿真器与主机相连,主机能够在线调试程序,例如启动、停止、单步运行、设置断点等。
    RAM调试运行方式实现简单,其程序流程为:code_start-> wd_disable-> c_int00-> main()。 code_start和wd_disable的程序包含于DSP281x_CodeStartBranch.asm中,具体程序如下:
[!--empirenews.page--]
   
    段生成完毕,还需要在CMD文件中将其映射到RAMH0上,即所谓的H0启动模式。之后程序就会照流程直接在RAMH0上运行程序,实现RAM调试运行的方式。

1.2 Flash直接运行
    Flash直接运行指的是将用户编写的代码烧写到Flash,并在Flash初始化完成后,用户代码运行于Flash上的一种运行方式。
    与RAM调试运行相比,Flash直接运行的程序流程多了一个Memory_copy的环节,即code_start-> wd_disable-> c_int00-> main()-> Memory_copy。这是因为要想在Flash上直接运行程序,就需要配置好Flash控制寄存器(FACTIVEWAIT、FBANKWAIT等)。但这些寄存器是不能在Flash上直接配置的,所以只能将包含这些配置语句的Flash初始化函数InitFlash()搬运到RAM中运行。
    InitFlash()的搬运是通过指令“#pragma CODE_SECTION(InitFlash,“ramfunes”)”和CMD文件配置实现的。前者将函数InitFlash()映射到段ramfuncs,后者在SECTIONS中作如下配置:
    ramfuncs:LOAD=FLASH,PAGE=0
         RUN=RAML0,PAGE=0
         LOAD_START(_RamfuncsLoadStart),
    LOAD_END(_RamfuncsLoadEnd),
         RUN_START(_RamfuncsRunStart)
    其中,RamfuncsLoadStart等为已定义好的3个外部全局变量。这样配置后,只需要在主程序main()中先调用MemCopy(&Ram-funcsLoad Start,&Ramfuncs LoadEnd,&Ram funcsRunStart)将已经烧写到Flash中的初始化函数InitFlash()代码全部复制到以Ram-funcsRun
Start开头的RAM中,再调用函数InitFlash()就实现了InitFlash()的搬运。
    最后需要注意的一点就是,给codestart段分配的BEGIN段需要映射到以0x3F7FF6开头的一段Flash上,用于Flash启动模式,而不再是在RAM上。如此配置之后,其他用户代码就可以在Flash上正常运行了。[!--empirenews.page--]
1.3 Flash到RAM全搬运运行
    Flash直接运行归根到底就是实现了一个函数从Flash到RAM的搬运,而Flash到RAM的全搬运运行就是将所有初始化段全部搬运到RAM的一种运行方式。因此,其程序流程也与Flash直接运行类似,即code_start-> wd_disable-> copy_sections-> c_int00-> main()。与Memory_ copy不一样的是,copy_sections搬运的是由编译器编译生成的初始化段(.text、.cinit、.pinit等),而不是某一个函数了。所以,不能把该段放到C语言环境建立之后,而应在屏蔽看门狗后,否则程序无法运行。而且,搬运代码也只能用汇编语言编写,具体程序在文件DSP28 xx_SectionCopy.asm中实现,以.text段的搬运为例:

    代码把烧写地址和运行地址分别存储到XAR6和XAR7寄存器后,并将该段大小存入累加器ACC,通过判断累加器ACC是否为零来完成某个段的复制。copysections段直接分配到Flash地址空间。而被搬运的.text段在CMD文件中的配置则与Flash直接运行方式的ramfuncs段的配置类似,.text段烧写到Flash空间,复制到RAM后再运行。
    另外,DSP281x_CodeStartBranch.asm中的.ref_c_int00应修改为.ref copy_sections,同时将wd_disable映射到wddisable段,并分配到Flash地址空间。

2 SRM控制应用研究
    TM8320F2812的三种运行方式下载与运行存储介质的不同,使得三种运行方式的特点不尽相同,各有利弊,适合于不同情况下SRM控制的程序调试。
    RAM调试运行代码下载到RAM,并采用H0启动模式,程序直接在RAM上运行,运行速度快,可以正常地运行于150MHz的系统时钟下。而且,主机通过仿真器与TMS320F2812相连,能够在线调试程序,例如启动、停止、单步运行、设置断点等等。在线调试功能对于刚开始的代码编写和修改是非常有用的,但RAM调试运行受限于RAM空间的大小,无法运行很大的程序;同时,必须使仿真器与主机相连,否则无法运行程序。RAM掉电代码消失的特点更是限制了RAM调试运行方式在实际中的应用。因此RAM调试运行适合于初期SRM控制的程序调试。此时,SRM控制的母线电压值不是很高,程序代码不是很大,同时可以很方便地观察一些变量的变化,方便记录分析。
    当SRM控制的母线电压值提升上来(220 V以上)后,程序越来越大,设计也越趋于完善,不可能一直使用仿真器进行调试,将程序下载到Flash就成为了唯一的选择。Flash直接运行代码烧写到Flash中,采用Flash启动模式,程序最终在Flash上运行。128K的地址空间能够满足大程序的运行,而且烧写到Flash的代码掉电后不会消失,也不需要再连接仿真器,使得TMS320F2812能够很好完成实际应用。但Flash运行速度慢,对运行时间要求苛刻的程序如直接在Flash上运行,往往不能满足要求,使得SRM工作性能下降。
    Flash到RAM全搬运运行综合了二者的优点,代码烧写到Flash中,在C语言环境建立之前先将所有初始化相关段搬运到RAM中再运行,既实现了代码的掉电不消失,又保证了代码的全速运行。唯一的缺点就是受限于RAM空间的大小,不能运行太大的程序,否则可能溢出。
    为了简单验证3种运行方式的不同,本文利用了TMS320F2812的32位CPU定时器Cputimer0,因为该定时器工作于150 MHz,可以更好地看出各种运行方式的不同。Cputimer0产生40 kHz高速中断,在中断服务程序中翻转某GPIO口电平,观测其波形,频率应为20kHz。代码在RAM中运行正常,频率为20 kHz;而在Flash中运行要慢一点,为19.97kHz。而且程序越大,这种限制也就越明显。

3 结论
    本文详细地介绍了TMS320F2812的3种运行方式的实现方法,对它们运行的特点进行了分析,并作了简单的实验验证。3种运行方式各有利弊,在实际SRM控制应用中,应该充分地理解它们各自的特点,选取最适合的方式更快、更好地完成实际应用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

柏林2025年9月9日 /美通社/ -- 2025年9月5日,纳斯达克上市公司优克联集团(NASDAQ: UCL)旗下全球互联品牌GlocalMe,正式亮相柏林国际消费电子展(IFA 2025),重磅推出融合企...

关键字: LOCAL LM BSP 移动网络

深圳2025年9月9日 /美通社/ -- PART 01活动背景 当技术的锋芒刺穿行业壁垒,万物互联的生态正重塑产业疆域。2025年,物联网产业迈入 "破界创造"与"共生进化" 的裂变时代——AI大模型消融感知边界,...

关键字: BSP 模型 微信 AIOT

"出海无界 商机无限"助力企业构建全球竞争力 深圳2025年9月9日 /美通社/ -- 2025年8月28日, 由领先商业管理媒体世界经理人携手环球资源联合主办、深圳•前海出海e站通协办的...

关键字: 解码 供应链 AI BSP

柏林2025年9月9日 /美通社/ -- 柏林当地时间9月6日,在2025德国柏林国际电子消费品展览会(International Funkausstellung...

关键字: 扫地机器人 耳机 PEN BSP

中国北京(2025年9月10日)—— 业界领先的半导体器件供应商兆易创新GigaDevice(股票代码 603986)亮相于深圳国际会展中心举办的第26届中国国际光电博览会(展位号:12C12),全面展示GD25 SPI...

关键字: 光通信 MCU Flash

武汉2025年9月9日 /美通社/ -- 7月24日,2025慧聪跨业品牌巡展——湖北•武汉站在武汉中南花园酒店隆重举办!本次巡展由慧聪安防网、慧聪物联网、慧聪音响灯光网、慧聪LED屏网、慧聪教育网联合主办,吸引了安防、...

关键字: AI 希捷 BSP 平板

上海2025年9月9日 /美通社/ -- 9月8日,移远通信宣布,其自研蓝牙协议栈DynaBlue率先通过蓝牙技术联盟(SIG)BQB 6.1标准认证。作为移远深耕短距离通信...

关键字: 蓝牙协议栈 移远通信 COM BSP

上海2025年9月9日 /美通社/ -- 为全面落实党中央、国务院和上海市委、市政府关于加快发展人力资源服务业的决策部署,更好发挥人力资源服务业赋能百业作用,8月29日,以"AI智领 HR智链 静候你来&quo...

关键字: 智能体 AI BSP 人工智能

北京2025年9月8日 /美通社/ -- 近日,易生支付与一汽出行达成合作,为其自主研发的"旗驭车管"车辆运营管理平台提供全流程支付通道及技术支持。此次合作不仅提升了平台对百余家企业客户的运营管理效率...

关键字: 一汽 智能化 BSP SAAS

深圳2025年9月8日 /美通社/ -- 晶泰科技(2228.HK)今日宣布,由其助力智擎生技制药(PharmaEngine, Inc.)发现的新一代PRMT5抑制剂PEP0...

关键字: 泰科 AI MT BSP
关闭