This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

(活动结束) 晒经验,拿板子!快来分享!US$79 Hercules开发板免费赠!

Other Parts Discussed in Thread: TMS570LS20216, DRV3201-Q1, TMS570LS3137, HALCOGEN, TPS65381-Q1, F021FLASHAPI, RM42L432, CONTROLSUITE

如果您了解TI Hercules产品,采用Hercules产品做过设计,请您分享出Hercules产品的设计心得,有分享、有惊喜!

2012年10月29日 - 2012年11月30日

分享Hercules设计心得,有机会获得价值79美金的TMS570LS31x Hercules USB Stick Development Kit 

 

分享要求(不符合以下要求不具备获奖资格):

- 每篇主题不少于200字

- 内容要求清晰详细写出设计心得的具体过程(例如设计中使用哪款产品碰到的问题及其解决的方法和步骤。)

- 发表以跟贴形式,需为原创贴 (最好同时配上合适的图片或视频)

 

奖项设置:

- 奖项由 TI 技术专家团队评选,取前五名为优秀分享奖。奖品为TMS570LS31x Hercules USB Stick Development Kit

- 阳光普照奖 – TI 16G U盘

- 每个ID拥有一次获奖机会。

- TI拥有获奖最终解释权。

  • 虽然不懂TI Hercules还是来凑下热闹··支持下TI的活动

  • 不懂Hercules, 感觉有点玄乎,求科普

  • 大家好,首先,我是天津职业大学的一名学生,看到了TI在此发表的活动,虽然对于TI的Hercules的了解不是很多,但是还是很想学习一下这款片子,通过身边人和网络的介绍,知道了这是一款安全微控器,其频率能达到220Mhz,这么快的处理速度可谓是我现有知道的最快的一款微控器了,之前我也在学习TI公司的MSP430,但是Hercules不知道他的低功耗怎么样,其他的明面比MSP430要强很多,微控器非常适用于先进驾驶辅助系统、电动助力转向、混合动力车和电动汽车、电源轨推进控制、航空防滑控制、越野车等。可以看到,这款微控器可以适用的范围非常广泛,甚至可以在航天领域应用到,他有三个系列,其中两个系列是基于 Cortex-R4 内核的,另一个系列是基于 Cortex-M3 内核的。

    这是我听说Hercules的知识,因为是初学,有不对的地方希望大家可以谅解,希望可以获得板子,可以更加深入的学习这款微控器。

    希望TI越办越好。

  • 首先看到这个活动很兴奋啊,一直关注过ARM在cortex系列的产品,对于嵌入式实时处理器Cortex-R系列微控制器相对于Cortex-M系列就比较少了。在心中一直有这样一个想法:嵌入式实时微控制器Cortex-R加上嵌入式实时系统如VxWorks、QNX等,这样的组合才是真正实时嵌入式系统,看到这次活动希望可以得到板子体验下实时微控制器的魅力。

    TI的Cortex-R4系列有Hercules RM4x和Hercule TMS570LS,前者的性能更高些可以跑到220MHz。实时处理器主要应用到高可靠性的实时领域,如航空航天,汽车领域等。所以在设计中产品的安全性能及实时处理的程序设计上有很大要求。

    Hercules RM4x 主页连接

    http://www.ti.com.cn/lsds/ti_zh/arm/hercules_arm_cortex_r_safety_microcontrollers/arm_cortex_r4/rm4_arm_cortex_r4/overview.page 

    Hercule TMS570LS 主页连接

    http://www.ti.com.cn/lsds/ti_zh/arm/hercules_arm_cortex_r_safety_microcontrollers/arm_cortex_r4/tms570ls/overview.page 

    以下为个人观点,肯定有偏颇的地方,欢迎大家批评指正。

    对于TI Cortex-R4微控制器硬件设计上,处理器本身是通过各种安全的认证的,肯定要比其他微控制器有更高的安全性与稳定性。对于外围硬件电路的设计要求与平常高可靠高稳定行领域的硬件电路设计要求一样,保证在各种复杂的恶劣环境下安全可靠工作。

    对于TI Cortex-R4微控制器软件设计上,Cortex-R4微控制器定位于实时微控制器,定然要比其他微控制器在微控制器本身上就要有实时控制方面的要求,在软件编程上首先在传统微控制器基础上要多加理解微控制器本身在实时控制方面的处理机制,了解其实时控制思想,这在软件上的要求会更高,跑裸机程序要充分利用这种思想才能真正发挥硬件的实时性,当然能直接应用成熟的嵌入式实时系统那将是更完美的组合。

  • 还有一个月时间呢,不急

    为了U盘努力着

  • 偶然在同事那里摆弄了一下这个板子, 型号是TMS570LS20216, 看起来新出, 时间不长,我和同事都不很熟,  打算一起深入学习一下, 本文只用入门级参考而已,

    1. 学习中使用的硬件环境:

    开发板1——TMS570 MCU Development Kit (TMDX570LS20SUSB,TMS570 Safety MCU Demo Board), 这是一个USB接口开发套件,这个开发板自带一个mini emulator—TI XDS100V2 USB JTAG Emulator,直接接到PC的USB端口就可以调试程序,通过这个开发板可以了解一下TMS570的ADC, NHET, CAN, SCI等模块,有点不足的就是这个自带的emulator调试程序效率不高;

    2. 学习中需要使用的软件环境:

    IDE— Code Composer Studio Version, 现在升到 V5了.

    外设driver代码生成工具—HAL Code Generator version 2.09.000,Hardware abstraction layer code generator; 这个工具够用了

    NHET Assembler—HET Simulator version 1.1;

    NowECC-- Ecc generator tool;

    NowFlash—烧写程序用;

    3. 学习中需要参考的文档:

    Technical Reference Manual (TRM) (Rev:C)

    TMS570LS Serial datasheet—(Rev:F)

    还有一些从TI网站上download的application note文档。

    结束语

           这次看到TI又有活动,  所以也抛砖引玉一下, 希望得到开发板, 可以深入学习一下, 支持TI. 谢谢TI !

  • 不懂Hercules,但之前用过MSP430,主要用于公司TV的按键板上;

    目前在做测试开发,需要用到一些仪器级别的芯片,希望能送块开发板,用于HDMI的信号发生器的开发,谢谢!

  • 在长沙已经报名参加培训交流了,不晓得是否报上了?

    现在正在使用ti新的载波方案产品C2000,正在调试,却是有很多需要学习的。

  • 刚开始熟悉Hercules TMS570起来,使用的是TMS570LS20216  : ARM-Cortex-R4F based high-performance 32-bit RISC Microcontroller with floating point unit. Dual Core in Lockstep for Safety Critical Appliations, 2 MB on-chip Flash ROM, 160KB on-chip SRAM 以及丰富的外设接口,它的速度可以达到160M(140)是之前用的M3 LM3S9B96 80M的两倍。FLASH 与 ROM 的相当大,让我 在设计中暂时没有必要增加 外置的SDRAM 与 FLASH 。我们是在开发,一种微震监控系统,需要对微震信号进行采集传输,信号的频率 0.1HZ-3KHZ 之间,,先采用 TMS570自带的ADC进行采集,通过CAN 高速传输到环网交换机上去,通过光纤最终进入PC用户端。

    开发软件没有 使用CCS5.1,也下载了,个人编好,使用KEIL MDK4.54,先对他的各种外设熟悉 和测试 起来:测试ADC的采样速度,采样精度,串口的使用;定时器的使用;CAN代码的编写(CAN协议是个标准的通信协议对于它的使用现在只是简单的通过寄存器级的使用和测试,,还没有把它整成类似CANOPEN协议的形式),以及TMS570的中断程序的测试。在采集震动信号的时候 需要很大的数据缓冲区来存放临时的数据,TMS570大容量的SRAM 为此提供了保证。外设的

    项目还在进展中,自己也在之中慢慢学习 和 掌握TMS570的开发。

    tms570ls20216.pdf
  • 在Hercules™ARM®安全MCU借助高端定时器传输单元来改进系统性能

           H e r c u l e s  安全微控制器是基于T I  2 0 多年来对安全有严格要求的系统的专业知识,汽车市场业界协作和已验证合格硬件而研发出的。这个平台包含有3 个基于A R M   C o r t e x ™ 的微处理器系列产品( R M 4 8 x ,  T M S 5 7 0 和T M S 4 7 0 M ) ,提供可升级的性能,连通性,存储器和安全特性。与其它很多严重依赖软件以获得安全性能的微控制器不同,H e r c u l e s 微控制器在硬件中实现安全,从而使得性能最大化并减少软件开销。
          H e r c u l e s   R M A x 系列产品为主板安全应用提供最高水平性能,包括医学和工业方面的应用,并符合I E C  61508  S I L- 3 安全标准。H e r c u l e s  T M S 5 7 0 系列产品为交通运输应用提供较高的性能并且非常适合需要满足I E C  61508  SIL-3   或者  ISO26262 要求的应用。极具性价比的H e r c u l e s  TMS470M 系列产品很好地满足了那些对性能和安全水平要求较低的应用需求。
          R M 4 8 x 和T M S 5 7 0 的双C P U 同步结构在简化开发过程的同时去除了冗余的系统需求以减少成本。C P U 硬件内置自检(B I S T )无需复杂的安全软件开销即可侦测潜在缺陷。C P U 输出的硬件比较模块提供接近瞬时的安全反应时间而不会对性能产生任何额外的影响。E C C 逻辑集成在C P U 内部以保护内存和总线。所有的R A M 内存能通过使用H W  B I S T的高诊断覆盖率进行测试,除此之外,集成的内存保护单元可以帮助防止应用软件中的确定性错误。

       本报告显示了如何使用高端定时器传输单元(HTU),一个TMS570和RM4x器件上专门用于多用途可编程定时器协处理器(NHET) 的本地DMA,通过在主存储器和NHET间进行传输来从主CPU上减轻任务负担。它显示了如何设置HTU,涉及当使用HTU时需要考虑的特定细节,并且列出了使用HTU而不是CPU用于数据传输的优势。

        1 系统性能注意事项
           很对基于微控制器的应用需要生成脉宽调制(PWM)输出,显示复杂的脉冲图形,测量一个进入信号的周期或者脉冲宽度以及更多。HET(还有NHET,N2HET)是一款HerculesMCU上的可编程定时器协处理器,它有助于减少常用定时器/捕捉任务所需的主CPU处理量并且还执行一些不能由传统硬件定时器完成
    的任务。然而,在大多数应用中,CPU仍然需要在定时器和主存储器之间传送有很多数据,对于输入和输出信号都是如此,从而减少了CPU用于其它任务的时间。HTU在处理这些传输时非常有用。为了有助于以下讨论,图1显示了一个TMS570或者RM4x安全微控制器架构的简化方框图。对于适用于您器件的方框图,请参阅器件专用数据表。

          

    图1. 典型TMS570/RM4x器件方框图

           如果CPU必须访问NHETRAM来更新值或检索数据,路径为通过交换式中央资源到外设中央资源(PCR)。在很多情况下,这些总线运行在不同的频率上,这意味着一个单周期可花费几个周期的时间。CPU需进行的访问的数量越多,它们对于总体系统性能的影响越大。
           所以,为什么不使用系统DMA来将所有这些数据传送至定时器?它可以完成并且它将分配CPU的一些空载时间去进行其它操作,但是CPU和DMA共用到PCR的同一个单总线接口。所以如果两个外设都进行访问,那么在两个外设间将出现竞争和仲裁,这将使得其中一个外设慢下来。
           HTU通过提供到NHETRAM的直接访问和一个用于直接访问R-4TCMRAM的主控端口来解决这个瓶颈。SCR将通过不同主控到系统的不同受控来实现并发处理。在图1中的示例中,一个CPU到CRC模块的访问,一个到外设的DMA访问,和一个到CPU主RAM的HTU传输,可同时进行。其它优势是,CPU所需的或者需要更新的数据驻留在本地CPURA中,通常计时为一个单周期访问。所以CPU能够更快速地获得相关数据并且能够自由访问针对DMA的PCR,从而增加了总体系统性能。
            在边注上,在看见图1时,用户也许会感到奇怪,为什么HTU没有到NHETRAM的直接访问。虽然NHET架构允许同时方位多个不同的RAM位置,在同一个时钟周期内,NHET和HTU仍然有可能在访问同一个存储器位置时发生竞争。通过在能够访问NHETRAM的不同主控之间加入仲裁器,已经将这个情况考虑在内。NHET将一直获得优先级,这样NHET程序执行不会被停止。针对大多数访问情况,Hercules架构已经被设计用于提供非常高的性能。

     2 HTU特性
           现在已经对HTU如何有助于提升总体系统性能有了一些基本的了解,是时候进一步了解HTU的特性以及它们是如何工作的。这个应用报告将不会专注于每一个单一的HTU特性,但是将为解决更加复杂应用情况提供一个好的基础。

            如上所述,HTU是一个到NHET的本地DMA,并且可实现与NHETRAM间的数据传输。由于有多达八条请求线路(HTUREQ[x]) 将NHET和HTU连接起来,它的工作方式与系统DMA相似。某些NHET指令能够在特殊事件出现时在请求线路上生成触发事件。请求被接至控制数据包,此数据包可编辑传输方向,源和目的地址以及应传输多少数据。然后根据存储在控制数据包内的信息,一个被触发的请求开始一个单一或者多个与NHET间的数据传输控制数据包被称为双控制数据包(DCP),这是因为它们提供为双向数据传输建立两个缓冲器的功能。例如,HTU能够在CPU工作在另外一个缓冲器上时,将数据传输到一个缓冲器。一旦HTU已经将其它缓冲器填满,它能够自动切换至另外一个并且开始用新数据来填充此缓冲器。

    3 NHET和HTU的设置
           您可以使用HTU来将测量数据从NHET传输到主存储器,进入一个单一缓冲器。为了实现这一操作,您创建一个简单的NHET程序,此程序在PCNT指令的帮助下测量输入信号的周期。

    3.1 NHET程序

    L01 PCNT {next=L02,reqnum=0, request=GENREQ,irq=OFF, type=FALL2FALL,pin=10, period=0,data=0, hr_data=0}
    L02 BR {next=L01,cond_addr=L01, event=NOCOND}

    使用PCNT指令的两个参数第一个是reqnum参数,此参数在在新的测量数据出现在指令数据字段内时告诉NHET和HTU请求信号触发。另外一个参数是request,此指令指定应该生成的请求的类型。会有不同的类型,但是对于这个示例,只使用将被生成的标准请求。

    3.2 NHET设置


    一旦出现已经被载入到NHETRAM,NHET需要被配置。其中一个需要被编程的寄存器为请求目的选择寄存器(HETREQDS)。这个寄存器是你能够选择生成一个HTU或者DMA请求或者生成这两个请求。对于这个示例,你只需生成一个HTU请求并且PCNT指令选择的请求线路为HTUREQ[0],所以你需要将位TDBS0和TDS0设定为'0'。另外一个寄存器是请求使能设定寄存器(HETREQENS)。这个寄存器启用请求来生成到HTU的触发。位REQENA0需要被设定为'1' 来启用请求HTUREQ[0]。

    void hetInit(void)

    {

    HETREQDS &= 0xFFFEFFFE; /* Set bits TDBS0and TDS0 to 0 */
    HETREQENS |= 0x00000001; /* Enable request HTUREQ[0] */

    }

    3.3 HTU设置


          接下来,您必须配置HTU。在您进行此操作前,您应该定义存储测得数据的缓冲器的大小。对于此示例,您希望捕捉条目。
          在HTU中,根据所选的HTUREQ信号,您需要设置几个寄存器和控制数据包。
          对于控制数据包,您必须定义测得的数据将被存储的起始地址,测得的数据将被读取的PCNT指令的NHET数据字段的地址,以及应该传输多少元素和数据帧。每个新的HTU请求将触发一个数据帧传输。每个数据帧可以有一个或者多个元素。所以,例如,如果只需传送一条单一指令的一个字段,一个数据帧内的元素数量将为1。如果使用一个单HTU请求来传送来自多个指令的多个字段,元素数量应该与需要被传送的字段数量相对应。图2显示了元素和数据帧的示例。

    图2.元素和数据帧数量示例

           一个元素可以是32位或者64位宽。
          在这个示例中,您只将PCNT数据字段移动到缓冲器内,所以您必须将每个帧的元素数量设置为'1' 并且由于缓冲器为10条目深,您需要将数据帧数量设置为'10'。PCNT指令的数据字段位于NHETRAM的0x8地址上。请注意,由于HTU可直接访问NHET存储器,您无需为ARMCPU指定32位地址。为了完成控制数据包设置,您需要数据将被传输的目的地址,此目的地址与缓冲器的起始地址相对应。


    unsigned int bufferA[10];

    void HTU_init(void){

    htuCPRAM ->DCP[0].ITCOUNT = 0x0001000A; /* DCP0 CPA element count= 1, framecount= 10 */
    htuCPRAM ->DCP[0].IHADDRCT= 0x00000008; /* DCP0 CPA DIR = NHET to main memory */
    /* SIZE = 32-bit */
    /* ADDMH= 16 bytes(not relevant for */
    /* this example) */
    /* ADDFM= post-increment main memory */
    /* TMBA = one shot buffer A */
    /* TMBB = one shot buffer B (not rel.)*/
    /* IHADDR = 0x2 => 0x8 PCNT data field*/
    htuCPRAM ->DCP[0].IFADDRA = (unsigned int)bufferA;
    /* DCP0 CPA startaddress of destination buffer */

    }

       缓冲器被设置为单触发模式。这意味着它将被填充一次并且当被填满时,虽然NHET仍将生成到HTU的请求,但是HTU将不传输任何额外的数据。

    4 示例项目
           此项目可被配置为一个处于单触发模式中的单缓冲器,就如上面说明的那样,或者处于双缓冲器自动切换模式。进而,它可被配置成当缓冲器被填满时,生成一个中断。
           可在main.h文件中进行配置。
    #define BUFFERSIZE20 /* size of the single or double buffer */
    #define INT 0 /* 0 = interrupt disabled; 1 = interrupt enabled */
    #define DOUBLEBUFFER 0 /* 0 = single buffer; 1 = double buffer */
           项目需要在每次配置被改变时建立。
           无需将一个外部PWM信号应用于引脚NHET[10],这是由于项目利用了软件能够将引脚设置为输出并且通过写入HETDOUT或HETDSET或HETDCLR寄存器来切换引脚,以及NHET程序通过引脚结构的回路功能来测量信号周期等这些实际情况。
           捕捉周期被存储在数组bufferA和bufferB之中。如果中断被启用,那么可在变量htu_highintcp0a_count和htu_highintcp0b_count中检查被执行的中断的数量。
    5 结论
           本报告澄清了使用高端定时器传输单元的优势。虽然本文使用的示例非常简单,但它应该提供了模块的基本功能性。与NHET的灵活性结合在一起,通过使用HTU来减轻主CPU处理普通任务的负担,有很多应用能够从中受益;从而将CPU解放出来处理其它任务。

    项目关键代码:

    HTU.C

    * Setup HTU Registers and Control Packets */
    #include "htu.h"
    #include "main.h"

    extern unsigned int bufferA[BUFFERSIZE];
    extern unsigned int bufferB[BUFFERSIZE];
    extern unsigned int htu_highintcp0a_count;
    extern unsigned int htu_highintcp0b_count;
    extern unsigned int htu_lowintcp0a_count;
    extern unsigned int htu_lowintcp0b_count;

    #if DOUBLEBUFFER
    void htuInit(void){
     htuCPRAM ->DCP[0].ITCOUNT = 0x00010000 + BUFFERSIZE; /* DCP0 CPx element count = 1, frame count = BUFFERSIZE */
     htuCPRAM ->DCP[0].IHADDRCT = 0x000F0008; /* DCP0 CPx DIR = NHET to main memory           */
                /*          SIZE = 32-bit            */
                /*          ADDMH = 16 bytes                    */
                /*          ADDFM = post-increment main memory  */
                /*          TMBA = auto switch buffer A         */
                       /*          TMBB = auto switch buffer B         */
                /*          IHADDR = 0x2 => 0x8 PCNT data field */
     htuCPRAM ->DCP[0].IFADDRA = (unsigned int)bufferA;  /* DCP0 CPA start address of destination buffer */
     htuCPRAM ->DCP[0].IFADDRB = (unsigned int)bufferB;  /* DCP0 CPB start address of destination buffer */
     
    #if INT
     htuREG ->BFINTS = 0x00000003;  /* enable buffer full interrupt for DCP0 CPA and CPB*/
    #else
     htuREG ->BFINTC = 0x00000003;  /* disable buffer full interrupt for DCP0 CPA and CPB*/
    #endif

     htuREG ->CPENA = 0x00000001;  /* enable DCP0 CPA */
     htuREG ->GC = 0x00010000;   /* enable HTU */ 
    }
    #else
    void htuInit(void){
     htuCPRAM ->DCP[0].ITCOUNT = 0x00010000 + BUFFERSIZE; /* DCP0 CPx element count = 1, frame count = BUFFERSIZE */
     htuCPRAM ->DCP[0].IHADDRCT = 0x00000008; /* DCP0 CPx DIR = NHET to main memory           */
                /*          SIZE = 32-bit            */
                /*          ADDMH = 16 bytes                    */
                /*          ADDFM = post-increment main memory  */
                /*          TMBA = one shot buffer A            */
                       /*          TMBB = one shot buffer B (not rel.) */
                /*          IHADDR = 0x2 => 0x8 PCNT data field */
     htuCPRAM ->DCP[0].IFADDRA = (unsigned int)bufferA;  /* DCP0 CPA start address of destination buffer */
     
    #if INT
     htuREG ->BFINTS = 0x00000001;  /* enable buffer full interrupt for DCP0 CPA and CPB*/
    #else
     htuREG ->BFINTC = 0x00000001;  /* disable buffer full interrupt for DCP0 CPA and CPB*/
    #endif

     htuREG ->CPENA = 0x00000001;  /* enable DCP0 CPA */
     htuREG ->GC = 0x00010000;   /* enable HTU */ 
    }
    #endif

    /* Interrupt Service Routine for the HTU high level interrupt */
    #pragma INTERRUPT(htuHighLevelInterrupt, IRQ)

    void htuHighLevelInterrupt(void){
     volatile unsigned int dummy;
     
     dummy = htuREG ->INTOFF0; /* read of offset register will automatically clear the interrupt flags */
     
     switch(dummy & 0x00000300){
      case 0x00000100 : {
           if ((dummy & 0x0000000F) == 0x0)
            htu_highintcp0a_count++;
           else if  ((dummy & 0x0000000F) == 0x1)
            htu_highintcp0b_count++;
            } break;
       
      default : break;
     }
    }

    /* Interrupt Service Routine for the HTU low level interrupt */
    #pragma INTERRUPT(htuLowLevelInterrupt, IRQ)

    void htuLowLevelInterrupt(void){
    }

    main.c
    #include "sys_common.h"
    #include "system.h"

    #include "main.h"
    #include "het.h"

    #define WAIT 100

    unsigned int bufferA[BUFFERSIZE];
    unsigned int bufferB[BUFFERSIZE];
    unsigned int htu_highintcp0a_count = 0;
    unsigned int htu_highintcp0b_count = 0;
    unsigned int htu_lowintcp0a_count = 0;
    unsigned int htu_lowintcp0b_count = 0;

    void main(void)
    {
     
     while(1){
        hetREG ->DSET = 0x00000400;  /* Set pin NHET[10] */
      for(delay = 0; delay < WAIT; delay++);
      hetREG ->DCLR = 0x00000400;  /* Clear pin NHET[10] */
      for(delay = 0; delay < WAIT; delay++);
     }
    }

  • 在TI Hercules™ARM®安全MCU上配置一个CAN节点

      下图展示了TI Hercules™ARM®安全MCU的家庭成员:

      

     

    德州仪器(TI) 生产的Hercules系列微控制器是系列32位RISC微控制器,此微控制器具有高级ARM架构和一个丰富的外设集。

    这个报告描述了一个配置CAN节点以及在网络上执行CAN通信的典型步骤。 

    1 简介


    1.1 控制器局域网络(CAN)
    控制器局域网是一个串行多主控通信协议,此协议高效支持分布式实时控制,具有高级安全级别,和一个高达1Mbps的通信速率。
    CAN总线是嘈杂和恶劣的环境,诸如汽车和其他要求可靠通信的工业领域应用的理想选择。

    外设支持以下特性:
    • 协议:
    – 支持CAN协议版本2.0部分A.B
    • 时钟和速度:
    – 高达1M位每秒的比特率
    – 双时钟源
    • 消息目标/消息对话框:
    – 16,32,64或128消息目标(器件专用)
    – 针对每个消息目标的独立标识符掩码
    – 针对消息目标的可编程先进先出(FIFO) 模式
    • 中断:
    – 到中断模块的两条中断线路
    • 低功耗支持:
    – 全局断电和唤醒支持
    – 本地断电和唤醒支持
    • 突发传输支持
    – 通过DMA的数据传输
    • 调试支持:
    – 针对自检运行的可编程回路模式
    – 测试期间到消息RAM的直接访问
    – 针对调试支持的挂起模式
    • 其它:
    – 由一个32位定时器实现的总线关闭后的自动总线打开
    – CANRx/Tx引脚可配置为通用输入输出(IO)引脚

    1.2 CAN收发器接口图
    图1显示了一个典型的CAN收发器接口。

    图1.CAN收发器接口

    2 初始化CAN外设

    下面常见的步骤涉及初始化CAN。
    • CANRAM初始化(建议在引导期间使用)


    • CAN配置

    • CAN波特率配置
    初始化CAN之后,邮箱需要按照应用的要求配置。
    下面的小节详细介绍了CAN初始化过程。 

    2.1 CANRAM初始化
    CANRAM保存CAN消息目标(也被成为邮箱)。要开始初始化,通过配置系统寄存器,RAM应该由硬
    件被初始化为零。
    为了初始化CANRAM:
    1. 切换到存储器初始化模式:MINITGCR.MINITGNA=0xA
    2. 设定MSINENA。相对于DCANRAM的存储器初始化使能寄存器(MSIENAx)位
    3. 通过检查存储器硬件初始化状态寄存器(MINISTAT),等待存储器初始化完成。
    4. 从存储器初始化模式中退出。
    初始化RAM的代码示例:

    SYS_Ptr->MINITGCR_UN.MINITGCR_UL = 0xA;
    SYS_Ptr->MSINENA_UL = MEM_CH_DCANRAM;
    while(SYS_Ptr->MINISTAT_UL == 0);
    SYS_Ptr->MINITGCR_UN.MINITGCR_UL = 0x5;

    如果您计划使用奇偶校验或ECC,您需要在RAM初始化过程之前启用它。
    下面是启用奇偶校验/ ECC的示例代码:

    DCAN1_Ptr->CCR_UN.CCR_ST.PMD_B4= 0xA

    2.2 CAN配置
    通过软件可配置CAN的以下特性:
    • 禁用/启用总线活动时的自动唤醒。[位:CCR.WUBA-总线活动时的自动唤醒]
    • 启用/禁用自动总线打开定时器。[位:CCR.ABO-自动总线打开]
    • 启用/禁用奇偶校验/ ECC。[位:CCR.PMD-奇偶校验模式位]
    • 启用/禁用全局中断线路0和1。[位:CCR.IEx- 中断使能]
    • 启用/禁用错误中断。[位:CCR.EIE-错误中断使能]
    • 禁用/启用状态中断。[位:CCR.SIE-状态中断使能]
    • 设置消息的自动重传。[位:DAR- 禁用自动重传]
    • 请求到配置寄存器的写入权限。[位:CCR.CCE-配置改变使能]
    • 进入调试状态前,设置消息完成。[位:CCR.IDS]
    • 禁用/启用本地断电模式。[位:CCR.PDR]
    • 禁用/启用DMA请求线路。[位:DEx]
    • 启用/禁用测试模式。[位:CCR.Test]

    示例CAN配置代码:
    Void CanInit (void
    {
    /**@bInitializ @b DCAN1: */
    canREG1->CTL = 0x00021443U; /* Configure CAN */
    /** - Clearall pending errorflagsand resetcurrent status */
    canREG1->ES = ox0000031Fu;
    /** - Assign interrupt levelfor messages */
    canREG1->INTMUXx[0U] = MessageBoxNo;
    canREG1->INTMUXx[1U] = 0x00000000U;
    /** - Setupauto bus on timerperiod */
    canREG1->ABOTR= 0U;
    }

    2.3 配置CAN波特率
    通过计算位时序值并且将这个值编辑进位时序寄存器(BTR) 来设定CAN数据传输波特率。
    要初始化CAN波特率:
    1. 设定CANCONTROL.init位。这将把CAN置于初始化模式中。
    2. 设定配置改变使能(CANCONTROL.CCE) 位。这将启用到BTR寄存器的写入访问。
    3. 将经计算的位时序元件值写入BTR寄存器。
    4. 清除CANCONTROL.init位之前的CANCONTROL.CCE位。

    图4.CAN波特率配置

    /* Baudrate configuration */
    DCAN1_Ptr->CCR_UN.CCR_ST.INIT_B1 = 1 ; /* EnterInitialization Mode */
    DCAN1_Ptr->CCR_UN.CCR_ST.CCE.B1 = 1 ;
    while(DCAN1_Ptr->CCR_UN.CCR_ST.INIT_B1 == 0) ;
    /* With CAN clock(CAN_CLK) of 8 MHz and BRPE = 0x00,
    the BRT valueof 0x2301 configuresthe CAN
    for a bit rate of 500kBits/s. */
    DCAN1_Ptr->CCR_UN.BTR_UL = 0x2301 ;
    DCAN1_Ptr->CCR_UN.CCR_ST.CCE.B1 = 0 ;
    DCAN1_Ptr->CCR_UN.CCR_ST.INIT_B1 = 0 ;
    while(DCAN1_Ptr->CCR_UN.CCR_ST.INIT_B1 == 1) ; /* EnterNormal Mode */

    2.4 CAN消息目标
    表1中显示了CAN消息目标(也称为CAN邮箱)的结构。

    表1.CAN消息目标

    表1有以下三个关键组件:
    • ID:消息ID(具有扩展的消息ID,Xtd)
    • DLC:消息长度
    • Datax:消息数据(高达8字节)
    此外,表1有下列控制位:
    • 消息有效(MsgVal):表示消息有效。
    • 方向(Dir):表示邮箱是发送还是接收
    • 标识符屏蔽(Msk):表示ID 中可被屏蔽的位
    • 屏蔽扩展标识符(MXtd):表示扩展ID Xtd的屏蔽位
    • 屏蔽消息方向(MDir):表示Dir是否应该被屏蔽。
    • 使用接受屏蔽(UMask):表示屏蔽位是否将被使用。
    • 块末尾(EoB):表示FIFO缓冲器的最后一条消息
    • 发送中断使能(TxIE):提供一个数据传输后的中断。
    • 接收中断使能(RxIE):提供一个数据接收后的中断。
    • 中断等待(IntPnd):表示中断在等待这个消息目标。
    • 新数据(NewDat):表示新数据在消息目标中可用。
    • 时序请求(TxRqst):请求数据传输
    • 远程使能(RmtEn):启用消息目标接收远程帧。

    2.5 CAN接口寄存器
    消息目标只能通过接口寄存器(IFx) 访问。这是为了避免当CPU和DMA都尝试访问消息目标时仲裁的发生。在每个IFx 访问期间,消息目标中所选的项目可按照需要更新。一次只能访问一个消息目标(针对读取/写入)。总共有三个接口寄存器。接口寄存器(IFx) 运行期间,相应的繁忙位保持高电平。消息目标1的优先级最高,而最后执行的消息目标具有优先级最低。如果有多于一个传输请求在等待,它们被按照优先级被处理。
    接口寄存器IF1 和IF2 是完全一样的。

    图5.IF1/2 寄存器位

    命令寄存器指定数据传输的方向(来自/到消息目标)以及传输哪部分消息目标并且选择一个消息RAM中的消息目标作为传输的目标或者源。
    仲裁寄存器用消息ID 来启用/禁用消息目标并且将其配置为发送或接收。
    消息控制寄存器定义数据尺寸和其它配置,这些配置在消息目标初始化期间完成。
    数据寄存器保存将被传输或被接收的数据。
    每个消息目标可按照接口寄存器的要求进行配置。
    IF3 寄存器集可使用接收到的消息目标进行自动更新,而无需初始化来自消息RAM的传输。可针对每一个消息目标独立编辑自动更新功能。

    图6.IF3 寄存器

    3 配置字消息目标
    基本上,一个消息目标可被配置为:
    • 发送消息对象
    • 接收消息目标
    图7是一个用于配置一个CAN消息目标的逻辑图。

    图7.CAN消息目标配置-逻辑图

    必须通过接口寄存器(IFx) 来完成消息目标的配置。
    配置一个消息目标所需的最少步骤为:
    1. 等待IFx 可被使用。
    2. 设定消息屏蔽。
    3. 设定消息仲裁。
    4. 设定消息控制字。
    5. 设定IFx 控制字节。
    6. 设定IFx 消息数量。
    通过两个方法中的任何一个可执行CAN通信:
    • 中断方法
    • 轮询方法
    3.1 将CAN消息目标配置为发送
    下面是一个配置一个传输消息目标的示例代码:

    while(canREG1->IF1STAT & 0x80);
    canREG1->IF1MSK = 0xC0000000U | ((0x000007FFU & 0x1FFFFFFFU0 << 0U) ;
    canREG1->IF1ARB = 0x80000000U | 0x40000000U | 0x20000000U | ((1U & ox1FFFFFFFU) << 0U) ;
    canREG1->IF1MCTL = 0x00001080U | 0x00000C00U | 8U ;
    canREG1->IF1CMD = 0x20 ;
    canREG1->IF1NO = 1 ;
    示例代码解释:
    1. 如果IF1 忙则等待。
    2. 配置屏蔽寄存器。

           MXtd = 1 使用扩展ID 屏蔽
           MDir = 1 使用消息方向屏蔽
           Msk = 0x7FF 用位10:0来过滤
    3. 配置仲裁寄存器
          MsgVal = 1 启用消息目标
          Xtd = 1 扩展的25位标识符
          Dir = 1 发送邮箱
          ID 1 消息ID 0x1
    4. 配置消息控制寄存器
          UMask = 1 使用屏蔽来过滤
          EoB = 1 单一消息目标
          TxIE = 1 启用传输中断
          RxIE = 1 启用接收中断
          DLC = 8 将数据长度设定为8
    5. 配置命令寄存器
          消息号 = 0x20 消息号位0x20

    3.2 将CAN消息目标配置为接收
    下面是配置一个接收消息目标的示例代码:
    while(canREG1->IF2STAT & 0x80);
    canREG1->IF2MSK = 0xC0000000U | ((0x000007FFU & 0x1FFFFFFFU0 << 0U) ;
    canREG1->IF2ARB = 0x80000000U | 0x40000000U | 0x00000000U | ((2U & ox1FFFFFFFU) << 0U) ;
    canREG1->IF2MCTL = 0x00001080U | 0x00000C00U | 8U ;
    canREG1->IF2CMD = 0x22 ;
    canREG1->IF2NO = 2 ;
    示例代码解释
    1. 如果IF2 忙则等待。
    2. 配置屏蔽寄存器。
               MXtd = 1 使用扩展ID 屏蔽
               MDir = 1 使用消息方向屏蔽
               Msk = 0x7FF 使用位10:0来过滤
    3. 配置仲裁寄存器。
               MsgVal = 1 启用消息目标
               Xtd = 1 扩展25位标识符
               Dir = 0 接收邮箱
               ID 2 消息ID 0x2

    4. 配置消息控制寄存器
                   UMask = 1 使用屏蔽来过滤
                   EoB = 1 单一消息目标
                   TxIE = 1 启用发送中断
                   RxIE = 1 启用接收中断
                   DLC = 8 将数据长度设定为8
    5. 配置命令寄存器
                  消息号 = 0x22 消息号为0x22

    3.3 CAN发送/接收操作

    unsigned canTransmit (canBASE_t*node, unsigned messageBox, constunsigned char *data)
    {
    unsigned I;
    unsigned success = 0U;
    unsigned regIndex = (messageBox - 1U) >> 5U;
    unsigned bitIndex = 1U << ((messageBox - 1U) & 0x1FU);
    /** - Checkfor pending message:
    * - pending message, return 0
    * - no pending message, startnew transmission
    */
    if (node->TXRQx[regIndex]& bitIndex)
    {
    return success;
    }
    /** - Wait untilIF1 is readyfor use */
    while(node->IF1STAT & 0x80);
    /** - Copy TX data into IF1 */
    for (I = 0U < 8U; I++)
    {
    node->IF1DATx[s_canByteOrder[i]] = *data++;
    }
    /** - Copy TX data into message box */
    node->IF1NO= messageBox;
    success = 1U;
    /** @noteThe function canINIT has to be called before this function can be used.\n
    * The user is responsible to initializethe message box.
    */
    return success;
    }

    下面是一个接收CAN数据的示例代码:
    unsigned canGetData(canBASE_t*node, unsigned messageBox, unsigned char * constdata)
    {
    unsigned I;
    unsigned size;
    unsigned char *pData = (unsigned char *) data;
    unsigned success = 0U;
    unsigned regIndex = (messageBox - 1U) >> 5U;
    unsigned bitIndex = 1U << ((messageBox - 1U) & 0x1FU);
    /** - Checkif new data has arrived:
    * - no new data,return 0
    * - new data,get received message
    */
    if (!(node->NWDATx[regIndex] & bitIndex))
    {
    return success;
    }
    /** - Wait untilIF2 is readyfor use */
    while(node->IF2STAT & 0x80);
    /** - Copy data into IF2 */
    node->IF2NO= messageBox
    /** - Wait untildata are copied into IF2 */
    while(node->IF2STAT & 0x80);
    /** - Get number of received bytes*/
    size = node->IF2MCTL & 0xFU;
    /** - Copy RX data into destination buffer */
    for (I = 0U; I < size;I++)
    {
    *pData++ = node->IF2DATx[s_canByteOrder[i]];
    }
    success = 1U;
    /** - Checkif data has been lost:
    * - no data lost,return 1
    * - data lost,return 3
    */
    if (node->IF2MCTL & 0x4000U)
    {
    success = 3U;
    }
    return success;
    }

    图8说明了处理接收中断的流程。

    图8.处理CAN消息接收

    4 软件流
    这一小节显示了针对一个CAN节点的软件流汇总。
    1. 针对消息目标来初始化CANRAM空间。
    2. 配置CAN通用参数(DMA,中断,自动给唤醒,等)。
    3. 配置所需的CAN波特率。
    4. 用所需的ID 和屏蔽来配置需要的消息目标。
    5. 根据中断模式或轮询模式提供发送/接收例程。

    附录A 采样位时序
    图9和图10说明了针对一个500和1000比特率计算的采样位时序,此时序被编辑进位时序寄存器。
    针对位速率=500的采样位时序计算

    图9.针对500kb的采样位时序计算

    位时序寄存器值:
    BRPE=(0U<<16U)
    TSEG2:PHASESEG2=((2U-1U)<<12U)
    TSEG1:PROPSEG+PHASESEG1=(((3U+2U)-1U)<<8U)
    SJW:((2U-1U)<<6U)
    BRP=9U;

    针对位速率=1000的采样位时序计算

    图10.针对1000kb的采样位时序计算

    位时序寄存器值:
    BRPE=(0U<<16U)
    TSEG2:PHASESEG2=((1U-1U)<<12U)
    TSEG1:PROPSEG+PHASESEG1=(((7U+1U)-1U)<<8U)
    SJW:((1U-1U)<<6U)
    BRP=3U;

     

  • 第一次听说,刚出来的新产品吧!了解了一下下……

    1. 主要应用的领域为医疗、工业及交通应用的新型Hercules安全微控制器平台,该平台专为帮助开发人员获得安全性认证而设计。

    2.特点如下

    ●锁步的双ARM Cortex-R4F浮点内核可提供最高水平的在线诊断;

    ●CPU和全部总线主设备,包括存储器保护;

    ●用于具有单位纠错和双位纠错(SECDED)能力的闪存及RAM的纠错码(ECC)在锁步CPU中进行评估,不会对性能造成影响;

    ●CPU和RAM包括用于检测潜在的不易察觉故障的内置自测(BIST)功能,而不会产生软件开销;

    ●对外设RAM、双通道模数转换器(ADC)和定时器、以及电压与时钟监测实施奇偶校验,以扩大诊断所覆盖的范围;

    ●智能型错误信号传输模块允许终端应用根据错误类型采取适当的措施;

    ●安全手册详细说明了如何将Hercules MCU引入安全关键型应用;

    ●失效模式、影响及诊断分析(FMEDA)可提供满足此类安全性标准所需的失效率信息。

    Hercules RM4x MCU系列的特性与优势:

    ●运行频率高达220 MHz(基于锁步的双 ARM Coretex-R4F 浮点内核),可提供适合工业自动化、伺服驱动器及医疗仪器(如诊断和治疗设备)的高性能;

    ●支持单精度和双精度浮点数学,可执行复数数学运算;

    ●能达到国际电工委员会 (IEC) 61508 SIL-3安全标准的要求;

    ●在对于安全关键型工业自动化和医疗设备应用而言至关重要的联网能力方面,可提供以太网、CAN及USB连接;

    ●高达3 MB闪存和256KB RAM,可满足多功能应用。

    Hercules TMS570 MCU系列的特性与优势:

    ●运行频率高达 180 MHz(基于锁步的双 ARM Coretex-R4F 浮点内核),可提供适合交通应用(如铁路、航空及汽车)的性能;

    ●支持单精度和双精度浮点数学,可执行复数数学运算;

    ●能达到ISO 26262 ASIL-D 和 IEC 61508 SIL-3 安全标准的要求,并符合 AEC-Q100 标准,可满足汽车应用的要求;

    ●可在高达 125℃ 的温度条件下工作,以适应交通应用的温度范围;

    ●可提供以太网、CAN 及 FlexRay 连接,以实现现有及不断发展的交通应用所需的较高带宽联网能力;

    ●高达 3 MB 闪存和 256KB RAM,可满足多功能应用。

    Hercules TMS470M MCU 系列的特性与优势:

    ●运行频率高达 80MHz(基于一个 ARM Coretex-M3内核),可提供成本效益型性能;

    ●符合 AEC-Q100 标准,可满足汽车应用的要求,并支持IEC 61508 系统安全要求;

    ●本地互连网络 (LIN) 和 CAN 可支持常见的交通联网;

    ●320~640KB 闪存及 16~48KB RAM可满足不同的内存要求。

    ●锁步的双ARM Cortex-R4F浮点内核可提供最高水平的在线诊断;

    ●CPU和全部总线主设备,包括存储器保护;

    ●用于具有单位纠错和双位纠错(SECDED)能力的闪存及RAM的纠错码(ECC)在锁步CPU中进行评估,不会对性能造成影响;

    ●CPU和RAM包括用于检测潜在的不易察觉故障的内置自测(BIST)功能,而不会产生软件开销;

    ●对外设RAM、双通道模数转换器(ADC)和定时器、以及电压与时钟监测实施奇偶校验,以扩大诊断所覆盖的范围;

    ●智能型错误信号传输模块允许终端应用根据错误类型采取适当的措施;

    ●安全手册详细说明了如何将Hercules MCU引入安全关键型应用;

    ●失效模式、影响及诊断分析(FMEDA)可提供满足此类安全性标准所需的失效率信息。

    Hercules RM4x MCU系列的特性与优势:

    ●运行频率高达220 MHz(基于锁步的双 ARM Coretex-R4F 浮点内核),可提供适合工业自动化、伺服驱动器及医疗仪器(如诊断和治疗设备)的高性能;

    ●支持单精度和双精度浮点数学,可执行复数数学运算;

    ●能达到国际电工委员会 (IEC) 61508 SIL-3安全标准的要求;

    ●在对于安全关键型工业自动化和医疗设备应用而言至关重要的联网能力方面,可提供以太网、CAN及USB连接;

    ●高达3 MB闪存和256KB RAM,可满足多功能应用。

    Hercules TMS570 MCU系列的特性与优势:

    ●运行频率高达 180 MHz(基于锁步的双 ARM Coretex-R4F 浮点内核),可提供适合交通应用(如铁路、航空及汽车)的性能;

    ●支持单精度和双精度浮点数学,可执行复数数学运算;

    ●能达到ISO 26262 ASIL-D 和 IEC 61508 SIL-3 安全标准的要求,并符合 AEC-Q100 标准,可满足汽车应用的要求;

    ●可在高达 125℃ 的温度条件下工作,以适应交通应用的温度范围;

    ●可提供以太网、CAN 及 FlexRay 连接,以实现现有及不断发展的交通应用所需的较高带宽联网能力;

    ●高达 3 MB 闪存和 256KB RAM,可满足多功能应用。

    Hercules TMS470M MCU 系列的特性与优势:

    ●运行频率高达 80MHz(基于一个 ARM Coretex-M3内核),可提供成本效益型性能;

    ●符合 AEC-Q100 标准,可满足汽车应用的要求,并支持IEC 61508 系统安全要求;

    ●本地互连网络 (LIN) 和 CAN 可支持常见的交通联网;

    ●320~640KB 闪存及 16~48KB RAM可满足不同的内存要求。

     

  • 占座,准备一下,U盘该有个TI的LOGO了

  • 支持,先表示一下,呵呵。给力

  • 论坛的活动时间是10/29-11/30, 但邮件说明的投稿时间是11/01-11/30, 我都有点糊涂了, 不管怎么, 再发一遍吧, 管理员也看看, 是不是要重新声明一下, 告诉大家一个统一的时间, 下面是10/31日的回贴,

         

    偶然在同事那里摆弄了一下这个板子, 型号是TMS570LS20216, 看起来新出, 时间不长,我和同事都不很熟,  打算一起深入学习一下, 本文只用入门级参考而已,

    1. 学习中使用的硬件环境:

    开发板1——TMS570 MCU Development Kit (TMDX570LS20SUSB,TMS570 Safety MCU Demo Board), 这是一个USB接口开发套件,这个开发板自带一个mini emulator—TI XDS100V2 USB JTAG Emulator,直接接到PC的USB端口就可以调试程序,通过这个开发板可以了解一下TMS570的ADC, NHET, CAN, SCI等模块,有点不足的就是这个自带的emulator调试程序效率不高;

    2. 学习中需要使用的软件环境:

    IDE— Code Composer Studio Version, 现在升到 V5了.

    外设driver代码生成工具—HAL Code Generator version 2.09.000,Hardware abstraction layer code generator; 这个工具够用了

    NHET Assembler—HET Simulator version 1.1;

    NowECC-- Ecc generator tool;

    NowFlash—烧写程序用;

    3. 学习中需要参考的文档:

    Technical Reference Manual (TRM) (Rev:C)

    TMS570LS Serial datasheet—(Rev:F)

    还有一些从TI网站上download的application note文档。

    结束语

           这次看到TI又有活动,  所以也抛砖引玉一下, 希望得到开发板, 可以深入学习一下, 支持TI. 谢谢TI !

  • 争取一下,没有使用过该产品,我先关注希望今后的开发中用到Hercules

  • 一直在用TI 2000系列的MCU,觉得很好用,尤其是退出28335之类的芯片之后,做浮点运算的性能大大提高,现在只知道Hercules产品是基于ARM核的安全控制器,暂时没有用过,很想获得开发板学习一下,以后用到项目中。根据下面的介绍,感觉是一款很好的控制器,希望能被大家快速的接收,并应用到实际项目中去。支持TI!!!

    德州仪器 (TI) 宣布推出 12 款新型 Hercules™ TMS570 ARM® Cortex™-R4 安全微控制器,与 TI 的 TPS65831-Q1 多轨安全电源管理集成电路 (PMIC) 和 DRV3201-Q1 安全电机驱动器相得益彰。Hercules TMS570 安全微控制器以及 TI 首款功能安全 PMIC 和业界首款功能安全电机驱动器联袂形成“安全电机控制芯片组”,可最大限度地提升故障检测和缓解能力,同时把软件开销降到最低。新型电机控制安全芯片组随附于 SafeTI-26262 和 SafeTI-61508 设计软件包,能帮客户更轻松地获取面向安全关键型汽车及交通运输电机控制应用的 ISO 26262 与 IEC 61508 认证,并加快产品上市进程

  • 占座,看看TI的小U盘。。。

  • 前几个礼拜刚好借了同学的TMS570LS3137开发板调试了RTI中断,感觉有些难度,本来只是想玩玩,没想到还是花了挺多时间的,这里简单讲讲整个过程。

     

    1首先新建了一个基于TMS57LS3137 USB Kit的HALCoGen工程,然后选择使能RTI驱动模块。再去配置中断,包括:(1、选择 VIM Channel 0-31 标签;2、使能VIM Channel 2 (RTI Compare 0) ;3、将 VIM 通道2映射为IRQ中。)

    2配置实时中断比较器的值

    选择 RTI1 àRTI1 Compare标签;配置RTI比较器0 的周期值为1000ms:在周期编辑框中输入1000.000。

    3生成代码

    所有的RTI相关设置已经完成. 根据刚才做的配置,生成相应的源代码

    4进行CCS导入及配置:确认建立CCS工程文件的保存路径和建立HALCoGen项目的路径相同。启动 CCSV5,在CCS界面中,创建一个新的CCS 项目。

    5对新建的CCS项目进行配置

    要注意到项目同名、同路径,芯片型号,调试工具等,都设置好了以后,删除CCS自动生成的main.c文件,因为HALCoGen已经自动生成了相关的system_main.c

    6配置片上Flash与ARM编译器

    7在CCS项目中添加代码   

    /* USER CODE BEGIN (0) */

    /* Include RTI and NHET header file */

    #include "rti.h"

    /* USER CODE END */

     

    在main()函数中添加相关配置代码

    void main(void)

    {

    /* USER CODE BEGIN (3) */

    /* Initialize RTI driver */

    rtiInit();

    /* Set high end timer GIO port hetPort pin direction to all output */

    /* Enable RTI Compare 0 interrupt notification */

    rtiEnableNotification(rtiNOTIFICATION_COMPARE0);

    /* Enable FIQ - Clear F flag in CPS register */

    /* Note: This is usually done by the OS or in an svc dispatcher */

    _enable_IRQ();

    /* Start RTI Counter Block 0 */

    rtiStartCounter(rtiCOUNTER_BLOCK0);

    /* Run forever */

    while(1);

    /* USER CODE END */

    }

     

    中断响应函数模块

    /* USER CODE BEGIN (4) */

    /* RTI Compare 0 interrupt notification */

    void rtiNotification(unsigned notification)

    {

    /* Toggle NHET1[0] pin */

    }

    /* GIO interrupt notification (Not used but must be provided) */

    /* ESM interrupt notification (Not used but must be provided) */

    void esmGroup1Notification(int bit)

    {

    return;

    }

    void esmGroup2Notification(int bit)

    {

    return;

    }

    /* USER CODE END */

     

    8、代码完善后,开始编译整个项目

    编译成功后,会生成调试所需的.out 文件,以便调试。程序下载和调试。单击Debug快捷按钮,下载程序并进入调试模式。然后在Debug模式下,单击运行快捷按钮,开始运行程序。

     

  • 初次了解hercules

    Hercules产品架构采用已经验证的 ARMCortex™-R4F CPU,此 CPU使用紧密耦合存储器配置。 此Cortex-R4fCPU 由一个锁步配置内的检测器 Cortex-R4FCPU 实现。 这一配置在提供正确 CPU运行逐周期检查的同时保持一个简单、易用的方法来使用单核程序设计者模型。三级 64 位紧密耦合存储器(TCM)接口实现对主CPU 存储器的访问。

    1. 目标应用

          HerculesMCU 系列针对通用安全应用。 在概念阶段,对多重安全应用进行过分析。目标应用示例包括:

          • 车辆刹车系统,包括轮胎防锁死系统(ABS)、带有牵引控制的轮胎防锁死系统(ABS+TC)、和电子稳定性控制系统(ESC)

          • 电机控制系统,特别是电子助力转向(EPS) 系统和电动汽车(EV) 动力传动系统

          • 通用安全计算,例如主动安全系统中的集成传感器集群处理和车辆策略生成

          • 工业自动化,例如用于安全流程控制的可编程逻辑控制器(PLC) 和可编程自动化控制器(PAC)

    2.针对系统故障管理的开发过程

           对于一个安全开发,有必要管理系统和随机故障。德州仪器 (TI)已经针对安全半导体创建了一个唯一的开发过程,此过程大大减少了系统错误的可能性。这一过程建立在一个受标准质量管理的开发过程,此过程作为安全开发的基础。然后这一过程由一个第二层开发活动所补充,此开发活动为针对IEC 61508 的特定安全开发。

    3运行状态

    HerculesMCU 产品有一个运行状态的共用架构定义。这些运行状态应该由系统开发人员在他们的软件和系统级设计概念中进行观测

    • “断电”-这是Hercules MCU 的初始运行状态。内核或者 I/O电源均未加电,器件处于非功能状态。这个状态只能转换到安全状态,并且只能通过安全状态到达此状态。

    • “安全”-在安全状态中,HerculesMCU 被加电但还不可用。nPORRST(加电复位、也被成为冷启动)由系统置成有效,但是在电源缓慢上升为稳定状态之前不被释放。如果电源不在一个最小运行范围内,内部电压监视(VMON) 安全机制也会继续将nPORRST 置为器件内部有效。当产品处于安全状态时,CPU和外设不可用。 输出驱动器是被保持在一个只输入状态的三态和输入/输出引脚。

    •“冷启动”-在冷启动状态中,关键模拟元件、数字控制逻辑电路、和调试逻辑电路被初始化以为未来使用。CPU 保持供电状态但不可用。当冷启动过程完成时,SYS_nRST信号被内部释放,导致热启动级。 SYS_nRST信号过渡改变能在 SYS_nRSTI/O 引脚上被外部监控。

    •“热启动”-热启动模式将信号逻辑电路复位并启用CPU。 CPU开始从闪存存储器中执行软件并且器件的软件初始化开始。没有硬件连环显示热启动已经完成;这由软件决定。

    •“可用”-在可用模式期间,器件能够支持安全功能性。

    4.错误管理

    当诊断检测到一个故障,这个错误必须被标出Hercules 产品架构使用一个被称为外设错误信令模块(ESM)的外设逻辑电路来提供来自内部安全机制的故障指示集合。ESM 提供了一些机制来将错误按照严重性分类并提供可编程错误响应。

  • Hercules安全MCU汽车运输设计案例

    很多人都想知道 Hercules 的一些案例,下面就分享一个

    Hercules TMS570 安全微控制器连同 TI 首款功能型安全 PMIC 与业界首款功能型安全马达驱动器组成「安全马达控制晶片组」,可用最低软体开销达到最大故障检测 (failure detection) 与减缓 (mitigation) 能力。全新马达控制安全晶片组採用 SafeTI-26262 及 SafeTI-61508 设计套件,能协助客户轻鬆通过 ISO 26262 及 IEC 61508 认证,并加速安全关键型汽车与运输马达控制应用的上市时程。 最新款 Hercules TMS570 安全微控制器產品内含 36 种配置,客户可依据应用特定需求选择,相当适合进阶驾驶辅助系统 (advanced driver assistance system)、电动辅助转向 (electric power steering)、油电混合车 (hybrid and electric vehicle)、铁道推进控制 (rail propulsion control)、航空防滑控制 (aviation anti-skid control) 与越野车 (off-road vehicle) 等应用。新款 Hercules TMS570LS12x/11x 浮点安全微控制器具有扩充的马达控制功能,提供了更多的存储器与效能配置,而 Hercules TMS570LS04x/03x 安全微控制器提供更小型封装的低成本入门级解决方案,具备整合式马达控制介面。相容型 PMIC 将多个电源供应和安全功能整合在单一装置中,可缩减设计时间与电路板空间。该马达驱动器整合防护与监控功能的功能型安全架构,在市场上率先支援启动/停止功能。 Hercules TMS570 安全微控制器的特性包括:

    1.扩大效能及存储器选项,从 80 MHz 到 180 MHz 锁步 ARM Cortex-R4 核心,以及 256KB、384KB、1MB 和 1.25MB 快闪存储器,可為设计人员的多功能安全性產品提供更多的选择与可扩充性。

    2.元件符合业界安全标准,进而可在系统设计中更容易达到 ISO 26262 与IEC 61508 标准。

    3.硬体安全特性提供高水准线上诊断,其具备锁步核心 (lockstep cores)、用於 CPU 和汇流排主控器 (bus master) 的存储器保护、具有单位元错误纠正与双位元错误侦测 (single-bit error correction and double-bit error detection; SECDED) 的快闪存储器与 RAM 错误修正码 (ECC)、侦测潜在延迟故障 (latent faults) 的 CPU 及 RAM 内建自我测试 (built-in-self-test; BIST)、可根据安全错误採取适当措施的智慧型错误讯号传输模组、周边 RAM 的奇偶校验 (parity)、冗余类比数位转换器 (ADC) 和计时器,以及连续的电压和时脉监控。

    4.整合型马达控制功能,具有内建增强型脉动宽度调变器 (pulse-width modulator; PWM)、感测器捕获和正交编码器 (quadrature encoder) 介面,可免除用于马达控制的多个外部组件。32 通道计时器协同处理器可做为一个性质不同的冗余马达控制通道,并检查马达控制迴路中脉衝宽度调变器的完整性。与去年推出并预定於 2012 年 10 月 31 日量產的 Hercules TMS570LS31x/21x 安全微控制器接脚相容 (仅限 Hercules TMS570LS12x/11x 浮点安全微控制器)。

    5.内建 FlexRay、CAN、以太网路、LIN 连结,可实现标準汽车网路并為资料收集提供多种选项。

       首款功能型安全 PMIC TPS65381-Q1 的特性包括:

       1.单个装置中包含了多个电源轨,包括一个具有内部 FET 的非同步降压开关模式电源转换器,其负责把输入的电池电压转换為 6V 前置稳压器 (pre-regulator) 输出,该输出可為其它稳压器供电。两个具有内部 FET 的线性稳压器可為一个控制区域网路 (CAN) 和微控制器输入/输出 (I/O) 供电。一个线性稳压器控制器负责供电给微控制器核心。这种高整合度缩短了设计时间,同时也节省宝贵的电路板空间。

       2.一个附加的整合型感测器电源同时為接地短路 (short-to-ground) 和电池短路 (short-to-battery) 提供保护,其可為位於电子控制单元 (ECU) 外部的感测器供电。

    3.功能型安全架构整合以下特性,例如问答型看门狗 (watchdog)、MCU 错误讯号监视器、内部振荡器的时脉监控、时脉监控器的自我检查、非挥发性存储器的循环冗余校验 (CRC) 及一个用於微控制器的重设电路。此外,BIST 可监视啟动时的装置功能,而一种专用的诊断状态则允许微控制器检查 PMIC 的安全功能。这些嵌入式安全特性免除了增设一个额外监视微控制器的需要,并缩减了成本与电路板空间。

    首款功能型安全马达驱动器 DRV3201-Q1 的特性包括:

       1.专为汽车三相无刷 DC 马达设计的桥接驱动器,提供一般 N 通道 MOSFET的六个专用驱动器,最高可达 250nC 电荷。可程式源极/汲极 (source/sink) 驱动电流,简易进行输出斜率调整。

       2.市场上首款支援启动/停止功能的马达驱动器,在电池电压降至 4.75 V情况下也可完全控制功率级 (power stage)。

       3.功能型安全架构整合多项特性,例如电压汲源极 (voltage drain-to-source ; VDS) 监测、相位比较器 (phase-comparator)、击穿保护 (shoot-through protection)、停滞时间控制 (dead-time control)、温度警告与保护、欠电压与过电压保护的电池电压侦测。

  • 有用到28335和lm3s9b92,没听过Hercules;想要U盘,嘿嘿

  • 【分享心得】 初次了解hercules Hercules产品架构采用已经验证的 ARMCortex™-R4F CPU,此 CPU使用紧密耦合存储器配置。 此Cortex-R4fCPU 由一个锁步配置内的检测器 Cortex-R4FCPU 实现。 这一配置在提供正确 CPU运行逐周期检查的同时保持一个简单、易用的方法来使用单核程序设计者模型。三级 64 位紧密耦合存储器(TCM)接口实现对主CPU 存储器的访问。

    1. 目标应用

    HerculesMCU 系列针对通用安全应用。 在概念阶段,对多重安全应用进行过分析。目标应用示例包括:

    • 车辆刹车系统,包括轮胎防锁死系统(ABS)、带有牵引控制的轮胎防锁死系统(ABS+TC)、和电子稳定性控制系统(ESC)

    • 电机控制系统,特别是电子助力转向(EPS) 系统和电动汽车(EV) 动力传动系统

    • 通用安全计算,例如主动安全系统中的集成传感器集群处理和车辆策略生成

    • 工业自动化,例如用于安全流程控制的可编程逻辑控制器(PLC) 和可编程自动化控制器(PAC)

    2.针对系统故障管理的开发过程

    对于一个安全开发,有必要管理系统和随机故障。德州仪器 (TI)已经针对安全半导体创建了一个唯一的开发过程,此过程大大减少了系统错误的可能性。这一过程建立在一个受标准质量管理的开发过程,此过程作为安全开发的基础。然后这一过程由一个第二层开发活动所补充,此开发活动为针对IEC 61508 的特定安全开发。

    3运行状态

    HerculesMCU 产品有一个运行状态的共用架构定义。这些运行状态应该由系统开发人员在他们的软件和系统级设计概念中进行观测

    • “断电”-这是Hercules MCU 的初始运行状态。内核或者 I/O电源均未加电,器件处于非功能状态。这个状态只能转换到安全状态,并且只能通过安全状态到达此状态。

    • “安全”-在安全状态中,HerculesMCU 被加电但还不可用。nPORRST(加电复位、也被成为冷启动)由系统置成有效,但是在电源缓慢上升为稳定状态之前不被释放。如果电源不在一个最小运行范围内,内部电压监视(VMON) 安全机制也会继续将nPORRST 置为器件内部有效。当产品处于安全状态时,CPU和外设不可用。 输出驱动器是被保持在一个只输入状态的三态和输入/输出引脚。

    •“冷启动”-在冷启动状态中,关键模拟元件、数字控制逻辑电路、和调试逻辑电路被初始化以为未来使用。CPU 保持供电状态但不可用。当冷启动过程完成时,SYS_nRST信号被内部释放,导致热启动级。 SYS_nRST信号过渡改变能在 SYS_nRSTI/O 引脚上被外部监控。

    •“热启动”-热启动模式将信号逻辑电路复位并启用CPU。 CPU开始从闪存存储器中执行软件并且器件的软件初始化开始。没有硬件连环显示热启动已经完成;这由软件决定。

    •“可用”-在可用模式期间,器件能够支持安全功能性。

    4.错误管理

    当诊断检测到一个故障,这个错误必须被标出Hercules 产品架构使用一个被称为外设错误信令模块(ESM)的外设逻辑电路来提供来自内部安全机制的故障指示集合。ESM 提供了一些机制来将错误按照严重性分类并提供可编程错误响应。

  • 什么是 Hercules?

    Hercules 安全微处理器是基于 TI 针对汽车电子市场的 20 多年安全关键型系统专业技术、行业协作而发展成熟的硬件。该平台包含三个基于 ARM® Cortex™ 的微处理器系列(RM48x、TMS570 和 TMS470M),可提供可扩展的性能、连接、内存和安全功能。与强烈依赖于软件以获得安全功能的某些微处理器不同,Hercules 微处理器在硬件内实施安全保护,从而使性能最佳化并减少软件使用量。
    产品系列
    现已推出全部 Hercules 3 产品系列,具有备用存储器和已计划的外设选项。


    RM4x 系列

    RM48x 是 Hercules 安全微处理器系列中性能最高的产品。基于运行速度高达 220 MHz 的 ARM® Cortex™-R4F 浮点内核,它包括闪存和连接选项。为满足 IEC 61508 SIL-3 安全标准和支持要求,已在硬件中集成多个安全功能。
    TMS570LS 系列
    Hercules TMS570LS 安全微处理器系列让客户能轻松开发安全关键型运输应用产品。这款基于 ARM® Cortex™-R4F 的系列微处理器可提供多种性能、存储器和连接选择,已开发出满足 ISO 26262 ASIL D 和 IEC 61508 SIL-3 安全标准和符合 AEC-Q100 汽车电子规范的产品。
    TMS470M 系列
    TMS470M 安全微处理器系列基于广泛采用的、运行速度为 80 MHz 的 ARM® Cortex™-M3 CPU。此系列提供多种闪存和 RAM 存储器选项,并提供 CAN 和 LIN 连接及其灵活的控制外设。包括 CPU 和 RAM 自检 (BIST) 引擎、ECC 和 奇偶校验等内置安全功能。TMS470M 安全微处理器同样符合 AEC-Q100 标准。


    硬件中的安全功能

    RM48x 和 TMS570 双核 CPU 锁步构架在消除冗余系统要求的同时也使开发得以简化,从而降低了成本。CPU 硬件内置自检 (BIST) 无需复杂安全软件和代码大小费用即可检测到潜在缺陷。CPU 输出的硬件比较提供即时安全响应时间,而不会对其它性能产生影响。ECC 逻辑集成在 CPU 中,这会对存储器和总线起到保护作用。使用 HW BIST 可对所有 RAM 存储器进行测试,从而实现高诊断覆盖范围,且内存保护单元 (MPU) 对应用软件中的确定性错误起到帮助防范作用。



    Hercules 软件

    通过基于硬件抽象层代码生成工具的 GUI (HALCoGen),TI 让您可轻松开始进行任何 Hercules 安全 MCU 的软件开发。
  • TI新型Hercules微控制器平台

    论坛开新区了,嘿嘿,也来凑个热闹,同大家分享一下Hercules系列到底是干什么的。

    德州仪器( TI )宣布针对医疗、工业及交通应用推出新型Hercules 安全微控制器平台,包括Hercules RM4x、 TMS470M与TMS570 MCU ,是 ​​专为帮助开发人员获得安全性认证而设计。这款平台包括3个基于ARM Cortex的微控制器系列,可提供可扩展效能、连结、记忆体及安全特性,适合需要高阶可靠度的应用。
    不同于许多重度依赖软体以获得安全能力的微控制器,Hercules微控制器可应用硬体来实现保护能力,能大幅地提升效能并降低软体支出。配合强健的工具、软体和安全文件,此功能为开发人员提供了更多空间,以实现终端产品差异化及加速?品上市时程。

    Hercules安全微控制器是基于TI 20多年的安全关键系统专长、业界合作以及针对汽车市场且经认证的硬体而成。新型Hercules RM4x系列可提供适合包括医疗及产业等广泛应用领域的最高效能水准。Hercules TMS570系列针对交通应用,而Hercules TMS470M系列则以具成本效益的方式满足了对于效能要求较低的应用需要。

    高效能Hercules RM4x和TMS570微控制器系列可在硬体中提供安全特性,以侦测随机故障和避免系统故障。锁步的双ARM Cortex-R4F浮点核心,可提供最高水准的线上诊断;CPU与所有汇流排主控包含记忆体保护;针对具有单位元侦错(Single Bit Correction)和双位元侦错( SECDED)能力的快闪记忆体及RAM的纠错码(ECC)在锁步CPU中进行评估,不会对效能造成影响;CPU和RAM包括用于检测潜在且不易察觉故障的内建自我测试( BIST)功能,但不会产生软体开销。

    此外,该系列对周边RAM、双通道类比数位转换器(ADC)和定时器、以及电压与时脉监视实施奇偶校验,以增加诊断的范围;智慧型错误讯号传输模组(Error Signaling Module)允许终端应用根据错误的类型采取适当的措施;安全手册详细说明如何将Hercules MCU实现至安全关键应用;失效模式(Failure Modes)、影响及诊断分析(FMEDA)可提供满足需符合安全标准的失效率资讯。

    Hercules RM4x MCU系列基于锁步的双ARM Coretex-R4F浮点核心而高达​​220 MHz的执行频率,可提供适合工业自动化、伺服驱动器以及如诊断和治疗设备等医疗仪器的高效能;支援单、双精密度浮点数学,可执行复杂数学运算;能达到国际电工委员会(IEC) 61508 SIL-3安全标准的要求;具有乙太网路、CAN及USB连结的连网能力,其对于安全关键工业自动化和医疗仪表应用而言相当重要;高达3MB的快闪记忆体和256KB RAM,适合丰富而多功能的应用。

    Hercules TMS570 MCU系列基于锁步的双ARM Coretex-R4F浮点核心而高达​​180 MHz的执行频率,可提供适合如铁路、航空及汽车等交通应用的效能;支援单、双精密度浮点数学,可执行复杂数学运算;能达到ISO 26262 ASIL-D和IEC 61508 SIL-3安全标准的要求,并符合AEC-Q100标准,可满足汽车应用的要求;可在温度高达125℃的条件下运作,以适应交通应用的温度范围;具有乙太网路、CAN及FlexRay连结较高频宽连网能力,为现有及不断发展的交通应用所需求的能力;高达3MB快闪记忆体和256KB RAM,适合丰富而多功能的应用。

    Hercules TMS470M MCU系列基于一个ARM Coretex-M3核心而高达​​80MHz的执行频率,可提供具成本效益的效能;AEC-Q100符合满足汽车应用要求的标准,并支援IEC 61508系统安全标准的要求;区域互连网路(LIN)和CAN支援常见的交通连网;320~640KB快闪记忆体及16-48KB RAM可满足不同的记忆体要求。

    开发人员可使用低成本的Hercules USB Stick开发套件或全功能的Hercules开发套件,以达成迅速启动开发工作。每种套件均配有快速启动和执行所需的全部软硬体,包括TI的Code Composer Studio整合型开发环境、HALCoGen周边配置工具和一款用于展现BIST执行与错误控制模式的安全性展示套件。

    从通用型超低功耗MSP430 MCU到Stellaris Cortex-M MCU、再到即时控制C2000 MCU,乃至目前的Hercules安全MCU,TI为设计人员提供最全面的微控制器解决方案。透过充分利用TI完整的软硬体工具、广泛的协力厂商产品以及技术支援,设计人员可加速产品的上市时程。
  • 由于TMS470 系列 是属于M3内核的  这个上手会比较快点的哦

    中断优先级配置的分享如下

     1. CHANCTRL01寄存器中的改动,现在把compare2 (中断6)放在了第4号中断源处;compare0 (中断4)放在了第6号中断源处。

       2. 在vim_table中,也要做相应的修改,让第4号和第6号中断,分别对应rtiCompare2Interrupt和rtiCompare0Interrupt。

       3. 打开中断嵌套(NVIC_enable();)

       4. 在rtiCompare0Interrupt();中,打开rtiCompare2Interrupt的响应,并且进入无限循环。

       5. 在rtiCompare2Interrupt();中设置断点,并可以观测到PC进入该断点, 这意味着本来优先级更低的rtiCompare2Interrupt中断,现在可以打断正在执行的rtiCompare0Interrupt中断了。也就是说,两个中断的优先级顺序发生了改变。

    所有中断的默认映射和优先关系(排在前面的优先级高)。这个关系是可以随意设置的,设置方法就是修改CHANCTRLx寄存器。

    只要把您需要的几个中断按照优先级在这个映射表中排序就可以了。

    比如说,映射表中,默认的优先级是RTI-0(4) > HET-0(13) > DCAN1-0(22),简单的办法是吧RTI-0的映射位置向后移,移至DCAN1-0后边。

    从数据手册可以看到映射区32是reserved,没有使用,那么就把RTI-0放在这里即可。同时也要注意RTI-0所对应的IF, MASK等位也都有相应的变化。

  • 超级踊跃啊~!:)

  • 嗯..TI很给力..这个系列还没玩过..希望TI能给机会学习学习....

  • 看了看楼上各位对Hercules的介绍,算是对Hercules有了初步认识,以太网和usb的连通性,开发面向的安全标准,高达220M的主频使我对Hercules特别感兴趣,希望能有机会试用开发。

  • 一、             重要保护单元

    1、  CPU

    2、  CPU中断(VIM)

    3、  系统控制单元:电源,复位,时钟

    4、 操作系统关键部分:DMA,OS定时器

    TMS570 提出“安全岛”思想,对于安全功能所共用的重要的单元采用硬件诊断机制进行重点保护

    。已知部分保证安全,这部分的逻辑为其他部分提供诊断覆盖,可以减少由于安全设计的需要而对系统成本所造成的压力。

    二、Hercules硬件安全特性

    Hercules由安全岛硬件诊断,混合硬件诊断,非安全关键性区域组成

    安全岛硬件诊断  

    1、CPU自检模块,

    2、双核锁步CPU,逐周期检测

    3、FLASH及RAM有ECC模块

    4、内存BIST模块在启动时检测所有RAM

    5、所有时钟及电源监视器

    6、错误信号输出模块

    混合硬件诊断

    1、IO回环,ADC自检

    2、带共享通道的双ADC模块

    3、所有外设,DMA以及中断控制器的RAM均带有奇偶校验

    4、串口及网络通讯外设中有奇偶或CRC校验

    独一无二的设计减少共模失效(共因失效)
    第二个CPU镜像旋转90
    两个CPU间距至少100um
    时钟延迟锁步
    每个CPU有独立保护环
    每个CPU独立的时钟系统
    CPU比较模块(CCM
    自检功能,自检错误信号输出
    强制输出错误信号
    错误信号外部引脚输出
    1oo1D双核锁步优势
                  更快的错误检测,通过严格的控制时序进行安全检测
                  更高的故障覆盖率,可检测的故障覆盖硬件,瞬态,持续等各种错误类型
                  对性能影响降低,甚至没有任何影响。CPU诊断几乎不占用CPU性能
                  对存储空间影响很小,CPU诊断几乎不占用FLASHRAM空间
                  易于集成到现有应用,无须复杂的软件开发时间,缩短产品开发的时间
                  易于诊断覆盖率,用户可以将更多的是时间用来开发应用程序,而 担心CPU的安全性是否满足安全要求
  • 看了Hercules 的视频,受益很多啊!
    原来MCU还可以这样做,一个正放,另一个镜像旋转90度,根据时钟Delay的方式进行硬件检错。
    那么这两个CPU应该完全执行相同的程序,在使用的过程中对用户来说就相当于操作一个CPU。
    (FPGA的大侠们 也可以考虑用FPGA搭两个简单的51核,这样放一下来试试看看)。

    看了1oo1 和 2oo2的架构,感觉像是与门或或门,确实是,之前的很多需要软件来实现的检错功能,现在都纯硬件实现了,
    这真正的解放了CPU,但依然纠结的是:如果出错了,该怎样来处理呢??如何来权重哪个正确呢?应该有异常中断服务函数吧?

    扩展下其应用领域:
    1 电梯:  我觉得像电梯控制中应有这样的安全策略吧?传统的应该是两个MCU,其中一个用来检测另一个的运行。(或者更复杂)
                   记得以前有报道过在超市中的电梯有将小朋友的裤腿卷到其中而导致事故的,或许应该强制加个 策略来 解决这种危险情况。
    2 门禁: 以前做过门禁控制器,虽然其中加入了什么 首卡开门、多卡开门、等等各种策略,但毕竟还是用一个控制器来实现的,
                  在某些场合,应该对门禁控制器的要求应该很高吧?
                  像是银行,有些又要求再火灾时能够及时开门。

    推广:
    我想这芯片工艺比较复杂,面向的应用也无法做到像消费类电子那样, 所以价格应该比较贵吧?这价格应该要比一颗M3+一颗单片机还要贵很多的,所以推广起来应该不太容易啊。
    以上纯个人观点。

    软件:
    HALCoGen真的不错,图形化的配置太方便了,以后扩展下能用Labview来开发也会很好。至于CCS5 ,太臃肿太肥硕啦!啥都揉到一起有其弊端!
    其他程序方面,就只有拿到板子来操作下才能有感受了。

  • 学习Hercules TMS570LS步步入门

    一、HALCoGen工具
    下载地址:http://www.ti.com/tool/halcogen
          CCS编译环境
    下载地址: http://processors.wiki.ti.com/index.php/Download_CCS

    二、步步入门资料
         TMS570LS Microcontrollers BlinkyExample.pdf
         如何创建基于CCSv4.x的一个HalCoGen的项目.pdf
         Getting Started With TMS570LS Microcontrollers.pdf
    三、了解MS570LS微控制器基本初始化顺序 
         启用的Cortex-R4F处理器的浮点单元(FPU) 
         初始化CPU寄存器和FPU寄存器
         初始化所有工作模式下的堆栈指针。
         启用CPU的专用向量中断控制器(VIC)端口 
         设置FLASH的包所需要的等待状态和流水线模式
         设置FLASH的bank和功率模式
         配置PLL控制寄存器
         启用所需的时钟源
         Map设备所需的时钟源的时钟域
         运行CPU的内建自我测试
         发布外围设备复位和使能所有外设的时钟
         运行自检程序,对所有设备内存使用可编程内建自我测试(PBIST)
         执行自动初始化为所有片上的SRAM   
         程序向量中断管理器的内存映射所有的中断服务程序地址
         配置IRQ/ FIQ中断优先级,所有中断通道
         启用所需的中断
         初始化复制表,全局变量和构造函数
         调用主应用程序
  • Hercules MCU 系列针对通用安全应用。利用这些事例 大家可以对号入座的设计产品。
    在概念阶段,对多重安全应用进行过分析。目标应用示例包括:
    车辆刹车系统 包括轮胎防锁死系统(ABS)、带有牵引控制的轮胎防锁死系统(ABS+TC)、和电子稳定性控制系统(ESC)
    电机控制系统   特别是电子助力转向(EPS) 系统和电动汽车(EV) 动力传动系统
    通用安全计算  例如主动安全系统中的集成传感器集群处理和车辆策略生成
    工业自动化  例如用于安全流程控制的可编程逻辑控制器(PLC) 和可编程自动化控制器(PAC)
    下面就是详细的图示
       
    在目标系统的要求有所重叠的情况下,尝试按照最严格的要求来设计器件。例如,
    ESC 应用中针对定时器逻辑电路的故障耐受时间间隔通常为100ms。在一个ESC
    应用中,故障耐受时间间隔通常为10ms。在这种情况下,TI 已经按照< 10ms 的
    故障耐受时间间隔来执行定时器子系统分析。
      

    虽然TI 在开发这些器件时考虑了特定的应用情况,但是这不应限制客户执行其它系统。

    Herclues系列的 资源分布排列如下
    RM4X控制器的资源列表
      
    TMS570系列 资源列表
    根据这些列表,可以把你想要的功能预先估计能不能实现。可以合理地利用CPU来开发项目。

  • 学习Hercules Hercules如何确保“安全”系统

    一、             重要保护单元
    1、  CPU
    2、  CPU中断(VIM
    3、  系统控制单元:电源,复位,时钟
    4、 操作系统关键部分:DMAOS定时器
    TMS570 提出“安全岛”思想,对于安全功能所共用的重要的单元采用硬件诊断机制进行重点保护
    。已知部分保证安全,这部分的逻辑为其他部分提供诊断覆盖,可以减少由于安全设计的需要而对系统成本所造成的压力。
    二、             Hercules硬件安全特性
    Hercules由安全岛硬件诊断,混合硬件诊断,非安全关键性区域组成
    安全岛硬件诊断  
    1CPU自检模块,
           2、双核锁步CPU,逐周期检测
           3FLASHRAMECC模块
    4、内存BIST模块在启动时检测所有RAM
    5、所有时钟及电源监视器
    6、错误信号输出模块
    混合硬件诊断
    1IO回环,ADC自检
    2、带共享通道的双ADC模块
    3、所有外设,DMA以及中断控制器的RAM均带有奇偶校验
    4、串口及网络通讯外设中有奇偶或CRC校验
    三、             Hercules 处理器1oo1D双核架构
    1oo1D双核架构特点
       
    独一无二的设计减少共模失效(共因失效)
    第二个CPU镜像旋转90
    两个CPU间距至少100um
    时钟延迟锁步
    每个CPU有独立保护环
    每个CPU独立的时钟系统
    CPU比较模块(CCM
    自检功能,自检错误信号输出
    强制输出错误信号
    错误信号外部引脚输出
      1oo1D双核锁步优势
                  更快的错误检测,通过严格的控制时序进行安全检测
                  更高的故障覆盖率,可检测的故障覆盖硬件,瞬态,持续等各种错误类型
                  对性能影响降低,甚至没有任何影响。CPU诊断几乎不占用CPU性能
                  对存储空间影响很小,CPU诊断几乎不占用FLASHRAM空间
                  易于集成到现有应用,无须复杂的软件开发时间,缩短产品开发的时间
                  易于诊断覆盖率,用户可以将更多的是时间用来开发应用程序,而 担心CPU的安全性是否满足安全要求
          
    四、             可编程存储器BISTPBIST
    特点
    可以完成对片内所有RAM的测试
    通过寄存器进行配置
    应用程序根据需要进行测试
    多种内存测试算法供选择
    检测多种失效模式
    辨别故障是硬件还是软件错误
    提高系统从软件错误中恢复的可能性
        优点
                  更快的测试速度:软件测试方法需要花费10-100倍的时间来达到同样的测试覆盖率
                  更高的故障覆盖率:利用多种复合失效模型获得比单一软件方案更高的故障覆盖率
                  不占用内存:不占用存储器和CPU资源,FLASHRAM可以完全服务于应用程序
                  易于集成到现有应用:无须复杂的软件开发时间,缩短产品开发时间
                  易于确认诊断覆盖率:用户可以将时间更多的用来开发应用程序,而无须花费时间来验证CPU本身是否安全
    五、             FLASH/RAM ECC保护
    Cortex R4F CPUECC特点
           可纠正1位错误,检测2位错误
           并行处理数据及指令
           CPU性能无任何影响
           保护从CPUFLASHRAM的总线数据传输
    六、             时钟监控
      
    1、  外部时钟分频器(ECLK):配置引脚(GIO ECLK)可以从外部监视CPU时钟频率
    2、  晶振监视器:检测晶振频率是否超过设定的最大或最小值
    失效可选行为:a:复位b:切换到内部低功耗振荡器(LPO
    3、  FMzPLL失效监测:监测PLL是否出现锁相失败
    失效可选行为:a:复位b:切换到内部低功耗振荡器(LPOc:切换到外部晶振
    七、             电压监视器(VMON
    1、  使系统处于复位状态,直到内核及IO口供电电压在正常范围内
    2、  当内核或IO供电电压超过设定的最大最小值时,产生复位
    3、  内核电压超限时,产生复位并将所有IO置高阻状态
    八、             内核比较模块(CCM-R4F)特点
    CCM硬件:检查CPU内部故障,在并行或锁步模式下比较两个CPU的输出结果
    CCM功能:锁步、自检、强制产生错误信号、强制在自检时产生错误信号
             
    九、内核比较模块(CCM-R4F)工作模式
           锁步(Lock Step):普通执行模式
    自检(Self Test):检测其硬件错误模式(BIST
    强制产生错误信号(Error forcing):强制不同的CPU信号到CCM
    强制在自检时产生错误信号(Self Test Error Forcing):强制输出自检错误信号

    十、             存储器保护单元(MPU
    1CPUDMAHTUFTU等总线主设备均有内存保护功能
    2、存储器单元属性可由住设备配置:只读,只写,可读写
    3、定义区域外的设备对存储器的访问模式:a:只读(可以读取,禁止写入) b:不可访问(读写都被禁止)
                  4、对存储器的违规操作,会产生错误信号至错误信号处理模块(ESM
    十一、双时钟比较器(DCC
              DCC模块采用一个时钟信号为参考以测量另一个时钟信号的频率
                  允许应用程序在两个时钟信号源之间设定一个频率的固定比例值
                  可定义一个可编程的窗口容差值,相比于参考时钟周期
                  无需应用程序干预,可连续监控
                  可以选择单序列的模式用于单点测量
                  可灵活的为count0count1选择时钟源
    十二、数字窗口看门狗(DWWD
           未能在适当的时间内喂狗,DWWD可产生复位或不可屏蔽中断
           包含一个25位递减计数器
           CPU中断信号产生时,会通知错误信号模块ESM
           窗口类型:100%50%25%125%3125%
           密钥序列喂狗(0XE51A0XA35C
           DWWD使能后,只有系统复位或上电复位才能关闭
  • Hercules 系列的 时钟学习

    芯片的时钟就相当于一个人的心跳,所以在学一个新的CPU之前,有必要了解他的时钟分布结构。
    Hercules系列的时钟源可以有8种之多,TMS570的时钟源只用了其中的5种,分别是External Oscillator-----外部晶振时钟,PLL1 (FMzPLL)----锁相环1时钟,PLL2 (FPLL)-锁相环2时钟,Low Frequency LPO clock----低频率内部时钟  High Frequency LPO clock---高频率内部时钟。
      大家来看一看  时钟源的全局分配示意图
       

        当使用外部晶振接口的时候,用户要给晶振选择合适的负载电容,因为TMS570的谐振器相当于一个窄带滤波器,中心频率会非常的高。这个可以按照TI给出的参考值设置来测试。
           PLL 逻辑电路包括一个能够检测一个PLL 输出时钟差异的嵌入式诊断。差异是由基准时钟和反馈时钟间的相位锁定损失造成。错误响应和指示取决于系统模块内的PLL 控制寄存器的设计。ESM 错误指示可被生成或者被屏蔽。此外,万一检测到一个错误,则有可能生成一个内部复位或者从振荡器时钟返回运行状态。
    下图是一个PLL 的计算器,一个让大家偷懒的工具 呵呵。
       
          Hercules 器件系列产品主要为同步逻辑器件并且同样要求用于正确运行的时钟信号。时钟管理逻辑电路包括时钟源、时钟生成逻辑电路,此逻辑电路包括锁相环路(PLL) 的时钟倍乘、时钟分配器、和时钟分配逻辑电路。在使用时钟的时候 要启动外部安全装置,由于安全装置能够采用与被监控的系统分离的时钟、复位、和功率,有可能使用MCU 时钟系统来减少共模故障。错误响应、诊断的可测试性、以及任一所需的软件要求由系统集成人员所选择的外部安全装置来定义。
  • 本人也是新手, 希望和大家一起共同学习, 下面是一些资料和TMS570LS31X的中文用户手册, 谢谢TI.

    学习将hal产生的代码加载到CCS5中一般流程

    首先使用HAL 生成一个工程,利用HAL 生成代码后把生成的所有代码在CCS5新建的工程中通过add file加入,再将系统提供的CMD,CCMXL及GEL文件添加到工程中去。
    1. 选中.ccxml文件
    2. 选择[Advanced]选项卡
    3. 选择[Spectrum Digital XDS510USB_Emulator_0]
    4. 在右边[TCK Mode]下拉菜单中选择Adaptive - Synchronous项。
    然后再尝试连接。
    如果仍然无法连接,请尝试将频率降低至如6MHz。

    TMS570LS31x21x_用户手册.pdf
  •        我第一次认识hercules系列MCU是在年初TI和艾睿举办的MCU day上,听ti的工程师介绍这款MCU,感觉真的很不错。因为那段时间与输液泵接触挺多,而且输液泵的安全性要求高,所以当时就想把它用在输液泵上。可是那时赶上了毕业设计,老板不让做。再后来组团参加科慧杯,想着总算有机会了,马上下载一大堆RM48x的datasheet、应用手册熟悉了一下,又下了软件调试了gpio、adc、pwm几个简单的程序,准备了几天把大体系统框架搭出来了,结果大伙讨论选题的时候直接把我的输液泵给毙了,理由是这款MCU太难找,汗。。。不过话说回来这款MCU真的不好找,片子在ti官网申请不到,淘宝上也找不到。

          弄个最简单的gpio实验来聊聊吧。RM48x的gpio开发只要用到下面几个函数

    这几个函数其实都是用HALCoGen生成的,我以前都是一个一个把文件加到CCS工程里,现在看了楼上的方法,学到简单的方法了。在gio.h和gio.c中可以找到要用这几个函数,在sys_main.c中调用这些函数就可以了。其他的学过单片机的同学应该都会用了,真正编起来比51还简单。

  • 随着高铁的发展,对列车安全性能的要求越来越高。智能辅助驾驶功能的实现,将划时代的改进其安全性。但同时对电控单元和通信单元的复杂性也提出了新的要求。在在实时性和安全性都要求很高的控制系统中,对消息的确定性有着更为严苛的要求。基于这些事实,事件触发的控制器局域网CAN,已经不能满足这些更高的需求。而时间触发、容错、传输延迟小并且具有高的通信速度的FlexRay总线则被业界看好。本项目旨在设计实现FlexRay通信节点,最后整合成整车的FlexRay通信集群。

    本人在项目中主要负责以TMS570内部集成的FlexRay控制器实现FlexRay通信节点,再根据FlexRay模块编写底层接口函数。考虑到项目涉及不同单位,为避免纠纷,下面仅给出本人电路的设计方法和软件接口函数的定义。

    TMS570使用16MHz晶振输入时钟。为达到起振和稳频的作用,在晶振的两个引脚上还连接了两个10pF的电容。系统时钟可通过TMS570内部的PLL倍频实现。

    TMS570对电源有很高的要求。如果电压偏差较大,会导致系统运行不稳定甚至发生故障。它的内核供电电压为1.5V,外围电路供电电压为3.3V。实际上,内核供电电压越低,系统频率可以越快。具体实现时,通信节点外部采用5V供电,通过TPS79633将电压稳定在3.3V为TMS570供电。

    TMS570具有两路 FlexRay通信通道,为此需要为其添加驱动芯片。从性价的角度考虑,选择NXP公司的TJA1080芯片。TJA1080可以支持FlexRay数据从1Mbit/s到10Mbit/s的带宽,并能对其自身拓扑结构提供完整的支持。

    FlexRay通信功能的实现还需要正确编写接口函数。程序分为fray.h和fray.c文件。头文件中给出了系统各寄存器的地址以及所要实现的函数原型。fray.c中则是对头文件定义的函数原型的实现。主要是通过对各寄存器进行操作实现。主要用到的是FrayInit,FaryStartUp,FraySend,FrayReceive,FrayIsTxMessagePending,FrayIsRxMessageArrived以及相关中断处理函数。

    需要说明的是,在TMS570中有一个专门用于处理中断的模块VIM,它可以对芯片的64个中断源进行管理。这64个中断源的地址存放在特定地址开头的内存中,形成中断向量表。可对FIQ和IRQ进行响应。其中与FlexRay相关的中断有数据桢到达中断,定时器中断以及错误中断等。

    实现中一开始曾用遇到过中断嵌套的问题,进入到中断嵌套以后中断有时候总是无法清除。后来发现是保护现场后将优先级等于或小于自身的中断屏蔽了,但恢复现场后没有将等于自身的中断打开。在VIM中处理后解决了中断嵌套的问题。

    实现完软件的功能后,就可以下载到TMS570里去进行通信节点的功能测试了 。最终借助TI公司强大的技术力量,圆满的节点完成了设计任务!

  • 具体的请见文档。呵呵

    希望能拿到开发板,学习。

    在附件里还有很多在EEworld的收集来的入门资料

    Hercules设计学习.pdf
  • 还没有用过Hercules,只使用过TI的MSP430的产品。

    以前一直在制作上位机程序,做了11年,不敢说精通,应该达到熟练的程序。突然转型要做下位机的程序,刚开始无从下手,无论从软件架构、设计流程等都和上位机程序不一样,感觉很迷茫。

    偶然间发现MSP430系列的产品,从资料到例程、从芯片到开发板都很全,引起了我极大的兴趣,指导着我入门,伴随着我深入。通过不到半年的时间,现在已经能给公司开发产品了。

    真心感谢TI公司对我的帮助!随着对单片机的了解及产品的需求,下一步准备学习ARM。希望TI公司随时推出高性能的新产品,我将义务宣传,回报TI及广大帮助我的朋友,谢谢。

  • 刚开始学习TMS570LS,所以也没什么设计心得,分享一篇入门帖子吧。并附上3篇文档,欢迎下载!

    一、HALCoGen工具
    下载地址:http://www.ti.com/tool/halcogen
          CCS编译环境
    下载地址: http://processors.wiki.ti.com/index.php/Download_CCS

    二、步步入门资料
         TMS570LS Microcontrollers BlinkyExample.pdf
         如何创建基于CCSv4.x的一个HalCoGen的项目.pdf
         Getting Started With TMS570LS Microcontrollers.pdf
    三、了解MS570LS微控制器基本初始化顺序
         启用的Cortex-R4F处理器的浮点单元(FPU)
         初始化CPU寄存器和FPU寄存器
         初始化所有工作模式下的堆栈指针。
         启用CPU的专用向量中断控制器(VIC)端口
         设置FLASH的包所需要的等待状态和流水线模式
         设置FLASH的bank和功率模式
         配置PLL控制寄存器
         启用所需的时钟源
         Map设备所需的时钟源的时钟域
         运行CPU的内建自我测试
         发布外围设备复位和使能所有外设的时钟
         运行自检程序,对所有设备内存使用可编程内建自我测试(PBIST)
         执行自动初始化为所有片上的SRAM   
         程序向量中断管理器的内存映射所有的中断服务程序地址
         配置IRQ/ FIQ中断优先级,所有中断通道
         启用所需的中断
         初始化复制表,全局变量和构造函数
         调用主应用程序

    详细见Getting Started With TMS570LS Microcontrollers.pdf及代码

     

    3篇文档地址:TMS570LS_Microcontrollers_BlinkyExample.pdf

                            http://bbs.eeworld.com.cn/attachment.php?aid=104564&k=a3f5a3b4bd1ab7350c6bcdffb2ae969f&t=1352731103

                        如何创建基于CCSv4.x的一个HalCoGen的项目.pdf

                           http://bbs.eeworld.com.cn/attachment.php?aid=104565&k=73e3f1a9b0f045ac1a85f7a169a808b2&t=1352731103

                         Getting Started With TMS570LS Microcontrollers.pdf

                       http://bbs.eeworld.com.cn/attachment.php?aid=104566&k=8fb997ce97e6afe68b8ce8d7612e1452&t=1352731103

  • 在一年前就已经听说过TI的这种主要应用在医疗、工业及交通应用等领域新型安全微控制器平台,之前了解过Hercules RM4x系列,刚在论坛看到TMS570/TMS470M系列。这里就谈谈对Hercules的一些个人理解吧。

    其实最早的时候刚看到RM4x的时候,我记得好像是对它的运行频率(基于锁步的双 ARM Coretex-R4F 浮点内核可达到220M)及支持单精度和双精度浮点数学,可执行复数数学运算比较关注,(对于像我这种做可编程器件开发的,这两点还是比较关注的)。当时,单看这两点,第一感觉就是让它干工业自动化、伺服驱动器及医疗仪器领域会不会太屈才(高达3 MB闪存和256KB RAM啊!后来也了解到同时可以应用在航空航天,稍稍平静点…)

    有对于安全关键型工业自动化和医疗设备应用而言至关重要的联网能力,以太网、CAN以及USB连接,不得不承认TI一开始对它的定位就是主要应用在工业与汽车领域的吧(虽然实际没用过,不过可以想象一块嵌入式处理器处理一大堆传感器的情形)。虽然不是玩这方面的,但还是非常兴奋。有更好的ARM,才会有更好的FPGA的嵌入式ARM核嘛^-^.

    最近,很看好serial rapid bus,在想如果在RM4x加入这样的总线会是一个怎样的一个场景。希望TI能够把更适合实时控制的技术融入产品中吧,把嵌入式实时系统做得更完美吧!

  • Hercules 的嵌套中断学习理解

      基本上,Cortex R 内核只提供了IRQ和FIQ两种默认中断,而且进入IR

    的ISR后,CPU会自动屏蔽其他所有IRQ。

    也就是说,只要是IRQ, 无论优先顺位,一律不能嵌套,直到当前的IRQ

    的ISR执行完成。

       如果用户想实现IRQ的中断嵌套,那么可以在进入ISR之后,手动将

    CPSR (current program status register)寄存器的"I" 位清零。

    这样后面的更高优先级的IRQ就可以得到响应,并嵌套进来了。

       这个嵌套是没有层级限制的

    但是用户需要自行对被打断的ISR现场进行保护,这个工作也会

    随着嵌套层级增多而变得复杂,稍有不慎,就可能引起内存溢出。

    所以建议大家谨慎使用中断嵌套。

  • 随着技术的进步和发展,混合动力汽车/电动汽车(HEV/EV)的电气驱动系统对微控制器处理能力和存储器的要求越来越高.为了应对处理负荷的增加并满足ISO 26262标准中的汽车安全性要求,德州仪器提供了适合于汽车领域中复杂和安全关键型系统的微控制器。

    除了电池,在混合动力汽车(HEV)和电动汽车(EV)的驱动系统中,电机也是最关键的部件之一。

    电机控制器是电机运行的核心,其主要组成部分包括:数字微控制器,用于调节并监视电机和电力电子线路的组件,以及负责处理传感器信号、通信和电源的模块(见图1)。

    测量相位电流

    如需调整电机的转矩,微控制器就必须获取每个控制周期中电机相位电流的即时信息。但在高转矩条件下,有可能出现几百安培的相位电流,为此,在初级电路(强电流电路)和次级电路(电子电路)之间需采用具有电流隔离功能的电流变压器。这些基于霍尔效应的电流转换器的优势在于其可放置在信号电缆的外部,不干扰信号。如果采用串行测量并联电阻器替代方案,将会出现阻性损耗和过热状况,这对于测量高电流很成问题,而霍尔效应电流转换器则不会产生此类影响,甚至还能够承受初级电缆中的超高电流。

    隔离

    由于逆变器中的电流和电压远远高于微控制器控制单元中的电流和电压,因此在这些组件之间的所有接口都必须隔离,以避免控制单元遭受故障或误动作的损坏。ISO72xx是来自德州仪器的符合汽车应用要求的数字隔离器系列,该系列具有低功耗及高达250 Mbps的时钟速度。这些模块采用容性电流隔离,其在时钟速度、可靠性、ESD保护和EMC状态等方面均表现出极佳的特性,完全可与光隔离或磁隔离相媲美。

    微控制器

    通信网络、在线安全和诊断功能、标准化软件架构(即AUTOSAR)以及当今最新的电机控制技术——磁场定向控制技术都使得控制系统对微控制器处理能力和存储器的高要求。

    为了应对处理负荷的增加,德州仪器提供了适合于汽车领域中复杂和安全关键型系统的微控制器——Hercules TMS570LS安全微控制器系列,该系列提供了32位ARM Cortex-R4F CPU,其时钟频率高达180 MHz(> 280 DMIPS),并包括一个用于执行快速32 位和64位浮点运算(IEEE 754)的双精度浮点单元(FPU)。浮点运算和整数运算可并行运行,实现更高的处理能力。FPU 简化了软件开发,因为控制与调节算法越来越多地采用基于模型的代码发生器进行开发,而代码发生器的结果随后作为浮点子程序集成到整个项目之中。

    ARM Cortex-R4F内核能处理16位或32位命令,从而在处理速度与代码长度之间实现了最优折衷。目前德州仪器提供的Hercules TMS570LS安全微控制器系列具有大量的集成型闪存(1~3 MB)和数据存储器(128~256 kB)。

    运行速度较快的微控制器通常可提供较高的功能密度,而且尤其适合改善电机驱动器的动态特性与控制效率,因为它的控制环路时间较短。

    高端定时器协处理器

    Hercules TMS570LS安全微控制器系列的高端定时器(N2HET)模块是一种灵活、可编程的定时发生器和捕获引擎。单个程序能控制多达32个可被随意配置为输入或输出的引脚。N2HET程序在系统初始化期间被复制至其局部RAM中。

    在操作过程中,内核能够更新RAM中的关键值,以生成脉宽调制(PWM)信号或读出由输入引脚捕获的数值。为了进一步降低CPU的负荷,RAM与CPU存储器之间的事务处理也可由系统直接存储器存取(DMA)或高端传输单元(HTU)来执行。由于高度的灵活性,N2HET能够生成简单的专用定时器要求,例如电机的PWM控制或传感器信号的读取。另外,N2HET还具备在不增加CPU负荷的情况下实现状态机的能力。

    若要控制一个三相电机,定时器模块通常必须生成6个PWM信号,因此,借助逆变器电源开关上的合适脉冲图形可生成一个具有特定振幅、相位角和规定频率的三相电压系统。一般而言,使用单个N2HET模块可以控制两个三相电机。TMS570LS21x/31x 微控制器提供了两个N2HET模块,所以能实现额外的功能。第二个 N2HET模块可用于控制采用各种逆变器电路乃至其他传感器通信协议的其他电机。

    模数转换器

    Hercules TMS570LS 安全微控制器带两个具有12位分辨率和24个输入通道的多输入缓冲模数转换器(MibADC),用于转换模拟传感器信号。为了降低CPU负荷,每个MibADC模块都有其自己的多缓冲RAM,每个模块能存储64个转换结果。对该RAM实施存储变换,并可利用CPU或DMA在指定的时间点上读出其内容。N2HET 模块具有大量用于触发A/D转换的配置选项。对于电机控制应用,N2HET能够在可随意设置的时间点上于PWM周期之内起动多个A/D转换序列。

    通信

    从发展趋势来看,汽车的功能将被集成到越来越少的电子控制器之中,但通信接口依旧起着重要的作用。Hercules TMS570LS 安全微控制器的集成型以太网、FlexRay和 CAN模块可用于局部通信或者与主要汽车网络的连接。与 HTU 相似,FlexRay模块也包括一个传送单元(FTU),可在无需CPU干预的情况下读出数据。此外,传感器和专用集成电路 (ASIC)还可通过SPI或LIN/SCI模块连接至控制器。许多模块都具有自己的RAM,可在RAM中对将要发送或接收的数据进行缓冲。

    安全要求

    在至关重要的安全性能要求方面,自2004年起,欧洲已强制执行了IEC 61508国际标准,用于监管安全关键型电子系统的开发,包括其相关的开发过程与质量保证操作规程。ISO 26262标准是从IEC 61508派生出来的,并针对汽车行业进行了相应的修改,适用于机动车辆中与安全相关的电气/电子系统。

    作为控制电子系统的核心组件,Hercules TMS570LS安全微控制器的安全特性(见图2)尤为重要。Hercules TMS570LS安全微控制器系列专为在IEC 61508标准所定义的安全完整性等级3(SIL3)系统中使用而特别设计,经 Exida公司评估,Hercules TMS570LS安全微控制器的开发过程和安全性原理被认定适用于 SIL3系统。

    Hercules TMS570LS安全微控制器系列在芯片上使用了两个相同的 ARM Cortex-R4F 内核,它们以一种锁步的方式运行相同的程序并接收相同的输入。在每个CPU周期中,对两个内核计算的操作和结果相互做逻辑比较,以检测和响应可能出现的误差。两个CPU均采用几何及时间分集在硅片中实现,旨在降低发生物理共因故障的机率。第二个ARM Cortex-R4F内核在硅片中进行物理映射与旋转,而且其处理被延迟了几个周期。

    锁步架构的优势在于能够实现很高的诊断覆盖范围并减少诊断软件开发的工作量。两个内核的硬件比较在每个 CPU 周期中进行,因此当检测到误差时,便可在几个 CPU 周期之内接触故障实现安全状态。由于内核上的误差检测完全由硬件来执行,因而与基于软件的检测方案相比,不会增加 CPU 负荷,且几乎不需要软件。

    此外,利用硬件机理可在微控制器中检测其他误差。这种方法可降低系统侧的软件开发和安全性认证成本及复杂性。用户可以轻而易举地将第三方软件包集成到整体项目之中,而且,从双处理器系统至单处理器系统的巨大转变还能帮助降低成本。

    为了检测和响应 Hercules TMS570LS安全微控制器的程序存储器和数据存储器中的误差,每个ARM Cortex-R4F内核都具有集成型误差校正码(ECC)逻辑电路。该模块能够校正个别位误差并检测双重误差,此外还可在内部监视地址总线和解码器。

    用于监视内核的内置自测试模块有两种,分别是逻辑内置自测试(LBIST)和数据存储器可编程内置自测试(PBIST)。LBIST 模块能够检查 Cortex-R4F 内核在控制器初始化或应用程序运行期间的故障。PBIST 模块则可利用各种不同的可选算法来测试任意或所有的集成型RAM。由于无须为内核及数据存储器执行任何测试例程,因此这些内置自测试模块可简化软件开发及压缩代码空间。所有具备自有数据存储器的外设模块(N2HET、MibADC、FlexRay、DCAN 和 MibSPI)均利用硬件中的奇偶校验逻辑电路予以保护。另外,这些 RAM 区域也可以采用 PBIST 来测试。

    集成型存储器保护单元(MPU)可用于监视特定存储区域的访问以及为这些区域分配特殊的访问权限,它内置了一个 64 位循环冗余校验器(CRC)单元,用于测试存储的静态数据,并可由 DMA 在后台进行操作。此外,外设模块也拥有自己的误差检测能力,如模数转换器(ADC)的自测试。用于误差检测的所有模块均与误差信号传输模块相连,从而实现所有检出误差的集中式优先级处理及可配置的外部信号传输。

    总结与展望

    Hercules TMS570LS安全微控制器系列运用的ARM内核被许多半导体厂商用作处理器内核。基于 ARM的内核由于标准化的原因而拥有众多的优势,这样不少第三方供应商就可以利用开发工具和软件组件来支持这些内核。FlexRay驱动程序和AUTOSAR软件包都可用于Hercules TMS570LS安全微控制器。

    Hercules TMS570LS安全微控制器提供了适用于EV驱动控制的性能、外设和安全功能。此外,如图3所示的Hercules TMS570LS安全微控制器发展计划支持高达4 MB的闪存和变体架构,包括目前的锁步法以及一种可同时执行两个不同程序的双重独立Cortex-R配置。将高速缓存与这些方案配合使用将实现更高的处理能力。

  • 关于Hercules系列CPU开发软件

             今天在做MSP430的开发,准备使用Grace做接口初始化,结果发现Hercules的系列CPU,看了这个系列CPU的很多好处,比如:减少共因故障,ECC校验等,像我等基本追随TI技术脚步的工程师,当仁不让要看看是什么东西 了。我在CCS里面寻找Cortex M/R里面的CPU,和其他CPU一样,生成一个helloworld!不会这样惨吧,又叫我看datasheet?那是很郁闷的事情,是不是有偷懒的方法,我是懒人,那么TI会不会对Hercules开发提供懒人支持?找寻了很多帖子,发现TI提供了类似Grace的图形开发工具,叫HALCoGen。我就下载顺利安装完毕。开始我的懒人实践活动。先安装软件如下:

    首先需要在,在CCS里面新建项目(你要可以先生成在拷贝加入到CCS中,不过此等方法,非我们懒人所为也)


             新建项目里面发现提供Hercules系列CPU的支持,提供CCS和IAR的支持,生成的目录和CCS里面的目录要一样,如图。

    进入项目如下

            这个GUI工具现在提供支持有RTI、GIO、LIN1、LIN2等,自己设置了,因该算是图形版的datasheet吧,不过毕竟不是很枯燥了

            进入到GIO里面,比Grace里面的配置全面多了,哈哈,不是全面了,是430比Hercules要简单多了。

          配置好接口参数后,使用file->generate code(F5)生成代码。这时候在CCS里面就可以看见生成出来的目录了

            因为include问题,开发者可以把halcogen生成的include目录加入到CCS项目中。其中sys_main.c里面有main函数,如果对sys_main进行过修改,你这是再次用HALCoGen进行接口修改并生成代码后,sys_main.c文件不会被恢复,我们可以说这时候可以用HalCogen任意修改接口参数并生成都不会对应用程序产生影响。

    在生成的代码中有

    /* USER CODE BEGIN (1) */
    /* USER CODE END */

          在两行之间开发者可以加入自己的代码,在重新生成后也不会覆盖。

          使用HALCoGen确实可以减少我们开发中对设备的设定造成的大量工作时间,特别对接口的不断修改造成的版本不好管理、文件同步异常的问题。

           只是这个软件看起来现在只是for Hercules系列,如果可以作为CCS插件,或者每个CPU都可以支持就非常cool了。

     

    HALCoGen 下载地址http://www.ti.com.cn/cn/lit/sw/spnc030/spnc030.zip

  • 芯片的时钟就相当于一个人的心跳,所以在学一个新的CPU之前,有必要了解他的时钟分布结构。
    Hercules系列的时钟源可以有8种之多,TMS570的时钟源只用了其中的5种,分别是External Oscillator-----外部晶振时钟,PLL1 (FMzPLL)----锁相环1时钟,PLL2 (FPLL)-锁相环2时钟,Low Frequency LPO clock----低频率内部时钟  High Frequency LPO clock---高频率内部时钟。
      大家来看一看  时钟源的全局分配示意图
    当使用外部晶振接口的时候,用户要给晶振选择合适的负载电容,因为TMS570的谐振器相当于一个窄带滤波器,中心频率会非常的高。这个可以按照TI给出的参考值设置来测试。
           PLL 逻辑电路包括一个能够检测一个PLL 输出时钟差异的嵌入式诊断。差异是由基准时钟和反馈时钟间的相位锁定损失造成。错误响应和指示取决于系统模块内的PLL 控制寄存器的设计。ESM 错误指示可被生成或者被屏蔽。此外,万一检测到一个错误,则有可能生成一个内部复位或者从振荡器时钟返回运行状态。
    下图是一个PLL 的计算器,一个让大家偷懒的工具 呵呵。

      Hercules 器件系列产品主要为同步逻辑器件并且同样要求用于正确运行的时钟信号。时钟管理逻辑电路包括时钟源、时钟生成逻辑电路,此逻辑电路包括锁相环路(PLL) 的时钟倍乘、时钟分配器、和时钟分配逻辑电路。在使用时钟的时候 要启动外部安全装置,由于安全装置能够采用与被监控的系统分离的时钟、复位、和功率,有可能使用MCU 时钟系统来减少共模故障。错误响应、诊断的可测试性、以及任一所需的软件要求由系统集成人员所选择的外部安全装置来定义。
  •           Hercules 系列主要推荐是安全微控制器,利用硬件实现保护能力确实可以减少软件资源的占用,在工控、医疗上肯定很有作为,特别是TMS570安全微控制器,有 36 种配置可供客户选择以满足应用的特定需求,非常适用于先进驾驶辅助系统、电动助力转向、混合动力车和电动汽车、电源轨推进控制、航空防滑控制、越野车等。性能和内存选项更丰富,范围涵盖 80 MHz 至 180 MHz 锁步 ARM Cortex-R4 内核以及 256KB、384KB、1MB 和 1.25MB 闪存,一应俱全,为设计人员提供更多选择和可扩展性,惠及其多功能安全产品。

      ·组件符合业界安全性标准,系统设计更容易通过 ISO 26262 和 IEC 61508 认证。

      ·硬件安全特性可提供高水平的在线诊断功能(借助了锁步内核),CPU 和总线主控器的内存保护,用于具有单位纠错和双位纠错 (SECDED) 能力的闪存及 RAM 纠错码 (ECC),用于检测潜在时延故障的 CPU 及 RAM 内置自测试 (BIST) 功能,可根据安全错误采取适当措施的智能型误差信号模块,外设 RAM 的奇偶校验,备用的模数转换器 (ADC) 和定时器,以及连续电压和时钟监控。·集成型电机控制功能,具有片上增强型脉宽调制、传感器捕获和正交编码器接口,能减少用于电机控制的多个外部组件。32 通道定时器协处理器可充当一个多功能的冗余电机控制通道,并检查电机控制回路中脉宽调制器 (PWM) 的完整性。

  • 在TMS570LS开发中,发现以下几点注意事项:

    1)中断嵌套的函数的临界区的保护,在IRQ处理函数需要可通过如下所示汇编代码进行现场保护,中断处理完毕后进行恢复;但有时候我们在高优先中断函数里使用了一些全局变量,那么就要注意假如低优先级有调用该变量时,应该注意做临界保护了,要不然就很容易出现莫明其妙的程序错误了。

    2)同时在保护好现场后需要将优先级等于或小于本身的IRQ中断禁掉,恢复现场后再将相应中断打开。中断关闭打开操作可以通过VIM进行。这样就可以实现高优先IRQ嵌套处理。

    现场保护的汇编代码:

    #pragma INTERRUPT(rtiCompare0Interrupt, IRQ)

    void rtiCompare0Interrupt(void)

    {

    /* USER CODE BEGIN (39) */

    /* USER CODE END */

       rtiREG1->INTFLAG = 1U;

       asm("   STMFD SP!, {R0-R12, LR}");/*Save R0- R12, LR_irq*/  

       asm("   mrs lr, spsr"); /* Copy SPSR_irq to LR */

       asm("   STMFD SP!, {LR}"); /* Save SPSR_irq */

       asm("   MSR CPSR_c, #0x1F"); /* Enable IRQ (Sys Mode) */

       asm("   STMFD SP!, {LR}"); /* Save LR */

       rtiDisableNotification(rtiNOTIFICATION_COMPARE0);/*Disable rtiCompare1 Interrupt iteself */

       rtiNotification(rtiNOTIFICATION_COMPARE0);

       //asm(" LDMFD SP!, {R0-R12}");/*Restore R0-R12*/

         asm(" LDMFD SP!, {LR}"); /* Restore LR */

         asm(" MSR CPSR_c, #0x92"); /* Disable IRQ (IRQ Mode) */

         asm(" LDMFD SP!, {LR}"); /* Restore SPSR_irq to LR */

         asm(" MSR SPSR_cxsf, LR"); /* Copy LR to SPSR_irq */

         asm("   LDMFD SP!, {R0-R12, LR}");/* Restore LR */

         rtiEnableNotification(rtiNOTIFICATION_COMPARE0);/*Enable rtiCompare1 Interrupt  */

    3)硬件设计中注意外部晶振的选型,要保证时钟频率的稳定性,如果受温度、电源等因素影响比较的话,那么我们PLL分频出来的频率就会误差比较大,那么计算PWM、CAN等外设控制都会产生异常。

    4)硬件设计注意以下事项内容:

    器件和开发支持工具命名规则
    为了指明产品开发周期的阶段,TI 为所有器件和支持工具的部件号分配了前缀。每一个商业化系列成员都
    有三个前缀之一:TMX,TMP 或TMS(如TMS570LS20216ASPGEQQ1)。德州仪器(TI) 建议为其支持
    的工具使用三个可能前缀指示符中的两个:TMDX 和TMDS。这些前缀代表了产品开发的发展阶段,即从
    工程原型(TMX/TMDX) 直到完全合格的生产器件/工具(TMS/TMDS)。
    器件开发进化流程:
    TMX 试验器件不一定代表最终器件的电气技术规格。
    TMP 最终硅芯片符合器件的电气规范,但尚未完成的质量和可靠性验证。
    TMS 完全合格的生产器件。
    支持工具开发发展流程:
    TMDX 还未经德州仪器(TI) 完整内部质量测试的开发支持产品.
    TMDS 完全合格的开发支持产品

     

  • 以下是主时钟设计注意事项,我建议在大家采用外部有源晶振比较精准,我做过实验对比,如采用无源晶振比有源晶振误差大5%以上,主要是受到温度影响比较大,由于外部电容、晶振材料所影响。