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**** 2031450 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

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // 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
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此致!

    马修