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:如何取消初始化外设

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1665064/tms320f2800157-how-to-de-init-the-peripherals

器件型号: TMS320F2800157

您好的团队、

我向我的客户询问这个问题。

我的客户工程包括应用程序和引导加载程序

引导加载程序完成后、在跳转到 APP 之前、需要取消初始化引导加载程序中使用的所有模块(包括所有外设和 SP...) 然后跳转到 APP 并初始化应用中使用的模块? 如果用户在跳转到 APP 之前没有取消初始化、而是直接初始化模块(模块也可用于引导加载程序)、那么可能会发生什么情况?

2.在我们的 MCAN_INIT () 中,当它完成初始化后,它不会检查 CCCR.INIT(表示初始化已完成),是否需要检查 CCCR.INIT 来确认初始化已完成?

BRS

Shuqing

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

    您好、Shuqing、

    1.引导加载程序完成后、在跳转到 APP 之前、是否需要取消初始化引导加载程序中使用的所有模块(包括所有外设和 SP...) 然后跳转到 APP 并初始化应用中使用的模块? 如果它们在跳转到 APP 之前没有取消初始化、而是直接初始化模块(模块也可在引导加载程序中使用)、那么可能会发生什么情况?

    JC:driverlib 中没有特定或标准的模块初始化例程。  客户可能使用自己的模块初始化函数、这实际上取决于客户执行的操作以及要写入的寄存器。  不过、没有直接的答案。  模块初始化的经验法则是、在由软件复位模块后、寄存器将设置为默认值。  这也取决于在初始化例程中设置的寄存器。  有些寄存器仅由硬件复位、有些寄存器仅由软件复位、因此不进行模块复位可能会保留先前 Bootrom 操作中的原始寄存器设置。   请确保、最好使用调用 SysPeripheral (module) 的 Ctl_Reset 函数强制复位外设、以使受软件复位影响的寄存器初始化、然后继续为该外设设置其他寄存器。

    2. 在我们的 MCAN_INIT () 中、当它完成初始化后、它不会检查 CCCR.INIT(表示初始化完成)、是否需要检查 CCCR.INIT 以确认初始化完成?

    JC:MCAN_INIT () 是不配置寄存器 MCAN_NBTP、MCAN_DBTP、MCAN_CCCR、MCAN_SIDFC、MCAN_XIDFC 的低级 API、  MCAN_RXFxC、MCAN_TXBC 和 MCAN_TXBAR、因此在该调用中不需要该地址。  仅当写入上述寄存器时、才需要 INIT 轮询。

    此致、

    Joseph