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.

[参考译文] TMS320F2800157:TMS320F2800157 BOR

Guru**** 2527010 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1248930/tms320f2800157-tms320f2800157-bor

器件型号:TMS320F2800157
主题中讨论的其他器件:C2000WARE

如果我使用 BOR 监测欠压、我需要验证在启动时该功能是否正常。 我想降低电源电压以触发复位并读取复位源以验证 BOR 功能是否正确、但我无法区分 BOR 和外部复位的原因、所有这些都可以置位  RESC.XRSn 。  您能给我一些建议吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Kai、

    纯 XRSn 将仅设置 RESC 寄存器中的位1、而 BOR 将设置位0和位1。  

    但是、BROM 使用这些位来确定引导流程、据我所知、BROM 也会在将控制权传递给用户代码之前清除这些位。

    您应该能够使用 XRSn 仿真复位来测试设置的 XRSn 位(因为您可以阻止 BROM 运行)、 但我认为您无法捕获 POR 事件、因为这会终止调试连接、并且 BROM 将清除这些事件、然后您才能使用 CPU 读取它们。

    在未连接仿真器的情况下、RESC 中的两个位都将在 C28x 引导将控制权传递给应用程序代码时被清除。

    我会研究一下 BROM 在清空 M0 RAM 空间前是否会将 RESC 储存起来、这方面我不是很确定。

    此致!

    马修

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Kai、

    引导 ROM 将把复位原因存储在 RAM 中地址0x0002的 Boot_Status 变量中。

    位定义位于 cpu1bootrom.h 中

    此处:C:\ti\c2000\C2000Ware_4_03_00_00\libraries\boot_rom\f280015x\rev0\rom_sources\F280015x_rom\bootROM\include\cpu1bootrom.h

    查找

    #define CPU1_BootROM_Handled_XRSN            0x00001000UL
    #define CPU1_BootROM_Handled_POR             0x00002000UL

    // CPU1 Boot mode status bit field starts from 0 and ends at 7
    // It can take any values in the range 0 to 0xFF
    //
    #define CPU1_BOOTROM_BOOTSTS_SYSTEM_START_BOOT          0x00000001UL  //Set during the initialization phase of the boot ROM
    #define CPU1_BOOTROM_BOOTSTS_IN_FLASH_BOOT              0x00000002UL
    #define CPU1_BOOTROM_BOOTSTS_IN_SECURE_FLASH_BOOT       0x00000003UL
    #define CPU1_BOOTROM_BOOTSTS_IN_PARALLEL_BOOT           0x00000004UL
    #define CPU1_BOOTROM_BOOTSTS_IN_RAM_BOOT                0x00000005UL
    #define CPU1_BOOTROM_BOOTSTS_IN_SCI_BOOT                0x00000006UL
    #define CPU1_BOOTROM_BOOTSTS_IN_SPI_BOOT                0x00000007UL
    #define CPU1_BOOTROM_BOOTSTS_IN_I2C_BOOT                0x00000008UL
    #define CPU1_BOOTROM_BOOTSTS_IN_CAN_BOOT                0x00000009UL
    #define CPU1_BOOTROM_BOOTSTS_IN_MCAN_BOOT               0x0000000AUL
    #define CPU1_BOOTROM_BOOTSTS_IN_WAIT_BOOT               0x0000000BUL
    
    #define CPU1_BOOTROM_RAM_INIT_COMPLETE                  0x00000100UL
    #define CPU1_BOOTROM_DCSM_INIT_COMPLETE                 0x00000200UL
    #define CPU1_BOOTROM_POR_MEM_TEST_COMPLETE              0x00000400UL
    #define CPU1_BOOTROM_RESC_HANDLED                       0x00000800UL
    #define CPU1_BOOTROM_HANDLED_XRSN                       0x00001000UL
    #define CPU1_BOOTROM_HANDLED_POR                        0x00002000UL
    #define CPU1_BOOTROM_WATCHDOG_SELFTEST_FAIL             0x00004000UL
    #define CPU1_BOOTROM_BOOT_COMPLETE                      0x00008000UL
    
    #define CPU1_BOOTROM_GOT_ITRAP                          0x00010000UL
    #define CPU1_BOOTROM_GOT_A_PIE_MISMATCH                 0x00020000UL
    #define CPU1_BOOTROM_GOT_AN_ERAD_NMI                    0x00040000UL
    #define CPU1_BOOTROM_GOT_A_RL_NMI                       0x00080000UL
    #define CPU1_BOOTROM_GOT_A_MEM_UNCERR_NMI               0x00100000UL
    #define CPU1_BOOTROM_GOT_A_PIE_REGPARITYERR             0x00200000UL
    #define CPU1_BOOTROM_GOT_A_MCLK_NMI                     0x00400000UL
    #define CPU1_BOOTROM_GOT_A_LSCMP_NMI                    0x00800000UL
    
    #define BOOTROM_PLL_ENABLE_SUCCESS                      0x01000000UL
    #define CPU1_BOOTROM_DCSM_INIT_INVALID_LP               0x02000000UL
    #define CPU1_BOOTROM_DCSM_INIT_LP_ERROR_SET             0x04000000UL
    #define CPU1_BOOTROM_FLASH_VERIFICATION_ERROR           0x08000000UL
    #define CPU1_BOOTROM_RAM_INIT_ERROR                     0x10000000UL
    #define CPU1_BOOTROM_TRIM_LOAD_ERROR                    0x20000000UL
    #define CPU1_BOOTROM_FLASH_2T_NOT_READY                 0x40000000UL

    此致!

    马修