当前位置:首页 > 电源 > 电源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控制应用中,应该充分地理解它们各自的特点,选取最适合的方式更快、更好地完成实际应用。

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭