你好!针对你提出的三个屏幕引脚配置问题,基于 BK7258/T5 的硬件特性分析如下:
■ 问题1:TP 触摸 I2C 引脚 P13+P15
BK7258 的硬件 I2C0 默认引脚通常是 P14(SDA)+P15(SCL)。如果 TuyaOpen board 代码中 TP 用的是 P13+P15,那大概率是 GPIO 模拟 I2C(软件 I2C),而不是硬件 I2C。
如何确认:在 tuya_t5ai_ex_module.c 中检查 TP 初始化函数,如果调用的是 gpio_xxx() 系列函数来模拟 SDA/SCL 时序,就是软件 I2C。
关于改引脚:
- 软件 I2C:可以直接改宏定义到其他 GPIO 引脚,不受硬件 I2C 引脚限制,任意 GPIO 均可
- 硬件 I2C:必须使用 BK7258 I2C 复用功能支持的引脚,具体可查 BK7258 数据手册的 GPIO 复用表
如果想改用硬件 I2C 以提高通信速率:
- 在 board 配置中将 TP I2C 引脚改为 P14(SDA)+P15(SCL)
- 使用 tkl_i2c_init() / tkl_i2c_write() / tkl_i2c_read() 硬件 I2C 接口
- 需要确认 TuyaOpen 的触摸驱动是否支持硬件 I2C 模式切换
■ 问题2:屏幕背光 PWM duty 无效
软件 PWM 修改 duty 值后亮度没变化,可能原因:
- duty 范围不对:检查当前软件 PWM 的配置,确认 period(周期)和 duty 的比例关系。例如 period=10000 时,duty=1000 应该是 10% 亮度,duty=10000 是满亮度。但如果驱动代码里 duty 有不同的映射逻辑(如 duty=0 是最亮),则效果相反
- 初始化顺序:确认 PWM 初始化是在屏幕背光使能之后,如果背光使能引脚的电平状态和 PWM 冲突,可能导致调节无效
- GPIO 冲突:P9 是否被其他功能复用?如果同时有其他代码操作 P9,会导致 PWM 输出被覆盖
建议排查:
- 打印 tkl_pwm_init() 和 tkl_pwm_set_duty() 的返回值,确认是否成功
- 用万用表/示波器测量 P9 引脚的实际 PWM 波形,确认频率和占空比是否符合预期
- 检查是否有其他地方对 P9 做了 GPIO 方向或电平设置
■ 问题3:SPI GPIO 模拟引脚是否可改
GPIO 模拟 SPI(软件 SPI)的引脚可以自由更改,只需修改对应的引脚宏定义即可。因为软件 SPI 本质上是通过 gpio_set()/gpio_get() 来控制 CLK/MOSI/MISO/CS 四根信号线,不依赖硬件 SPI 的引脚复用。
修改步骤:
- 找到 tuya_t5ai_ex_module.c 中 SPI 相关的引脚宏定义
- 将 CLK/MOSI/MISO/CS 改为你新板子上对应的 GPIO 编号
- 确保新引脚没有被其他外设占用
- 重新编译验证
■ 补充:关于自绘屏幕驱动板
既然你的目的是画一块新板来驱动其他屏幕,建议:
- 先在 TuyaOpen 代码中建立新的 board 目录(如 TUYA_T5AI_BOARD_CUSTOM),复制 TUYA_T5AI_BOARD 做基础
- 逐个修改引脚宏定义适配新板硬件
- 屏幕 SPI 初始化时序(reset/dcmd/wrcmd 等)需要参考目标屏幕的数据手册调整
- 触摸 IC 如果换了型号,需要对应修改 TP 驱动
以上分析基于 BK7258 硬件特性。由于 TuyaOpen 的 board 层代码结构和 TuyaOS 不同,具体的宏定义位置和修改方式请以你本地的 TuyaOpen 源码为准。如有具体代码片段,可以贴出来我帮你一起分析。