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.

[参考译文] TMDSCNCD28388D:无法从引导代码(汇编)控制 GPIO4、GPIO5、GPIO6、但通过 C 代码工作

Guru**** 2754775 points

Other Parts Discussed in Thread: TMS320F28388D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1614875/tmdscncd28388d-unable-to-control-gpio4-gpio5-gpio6-from-boot-code-assembly-but-works-from-c-code

器件型号: TMDSCNCD28388D
主题中讨论的其他器件: TMS320F28388DC2000WARE

您好:

我正在使用 TMS320F28388D 并且在哪里遇到了异常问题 GPIO4、GPIO5 和 GPIO6 无法通过汇编启动代码进行控制 但它们在初始化后在 C 代码中运行良好。

环境:

  • 器件:TMS320F28388D
  • 引导模式:闪存引导
  • Code Composer Studio v12.x
  • C2000Ware v5.03.00.00

我要做的是: 在 f2838x_codestartbranch.asm(引导入口点)中、我需要在看门狗禁用后立即将 GPIO0-6、GPIO15 和 GPIO16 设置为高电平、然后跳转到_c_int00。 这对于安全至关重要 — 这些引脚控制电源 IGBT、并且必须默认为高电平(安全状态)。

工作原理:

  • GPIO0、GPIO1、GPIO2、GPIO3、GPIO15、 GPIO16 >>成功将汇编设置为高电平
  • 通过 C 代码成功控制所有 GPIO (0-6、15-16)>>

不起作用的功能:

  • 尽管寄存器操作相同、但 GPIO4、GPIO5、GPIO6 >>在通过汇编设置时保持低电平

汇编代码:

  EALLOW

  ;将 GPIO 设置为输出和高电平
  MOVZ DP、#7C00h>>6.
  MOV AL、#807Fh
  MOV AH、#1h
  MOVL @0Ah、附件

  MOVZ DP、#7F00h>>6.
  MOV AL、#807Fh
  MOV AH、#1h
  MOVL @02h、ACC

  EDIS
  LB _c_int00

问题:

  1. GPIO4、GPIO5、GPIO6 在 F2838x 上启动期间是否有任何特殊情况?
  2. 引导 ROM 配置这些引脚的方式是否与 GPIO0-3 不同?
  3. 是否有其他寄存器(除了 GPADIR、GPAMUX、GPALOCK、GPAODR 之外)可能影响 GPIO4-6?

当前解决方法:

我们在 C 代码中强制 GPIO 4-5-6 输出高电平。 但是、汇编启动代码执行与可控制这些外设的第一个 C 代码之间存在~10ms 的间隙(测量值:f2838x_codestartbranch.asm 执行和 device.c 中的 Device_enableUnbondedGPIOPullups 之间为 10.27ms)。

任何见解都将非常感谢。

提前感谢您。

此致、

Taygun Tuğran ć

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

    MOVZ DP、#7C00h>>6;GPIOCTRL
    MOV AL、#807Fh
    MOV AH、#1h
    MOVL @0Ah、ACC;GPADIR
    MOV AL、#807Fh
    MOV AH、#1h
    MOVL @0Ch、ACC;GPAPUD
    MOVZ DP、#7F00h>>6;GPIODATA
    MOV AL、#800Fh
    MOV AH、#1h
    MOVL @02h、ACC;GPASET