Other Parts Discussed in Thread: TMS320F28388D, C2000WARE
器件型号: TMDSCNCD28388D
主题中讨论的其他器件: TMS320F28388D、 C2000WARE
您好:
我正在使用 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
问题:
- GPIO4、GPIO5、GPIO6 在 F2838x 上启动期间是否有任何特殊情况?
- 引导 ROM 配置这些引脚的方式是否与 GPIO0-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 ć