当前位置: 首页 > news >正文

20250912在荣品RD-RK3588-MID开发板的Android13系统下拿掉卡迪屏的reset引脚的下拉复位波形

20250912在荣品RD-RK3588-MID开发板的Android13系统下拿掉卡迪屏的reset引脚的下拉复位波形
2025/9/12 14:07


缘起:在调试卡迪的屏的时候,和卡迪的人带来的治具进行对比测试。
由于治具的reset时序没有拉低的信号,屏厂的软件工程师让我屏蔽掉拉低的信号。
开干!

Z:\rk-android13-20250818RD-RK3588-MID\u-boot\drivers\video\drm\rockchip_panel.c

【加了10s延迟,最终定位到这里了,复位引脚的dm_gpio_set_value置位1竟然是拉低复位!神奇】
static void panel_simple_prepare(struct rockchip_panel *panel)
{
mdelay(1000);
printf("++++ 2025/9/11 19:02 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);

    // 2025/9/11 19:32 wenyuanbo add reset gpio low????
//if (dm_gpio_is_valid(&priv->reset_gpio))
//    dm_gpio_set_value(&priv->reset_gpio, 1);

    //mdelay(1000);
//printf("++++ 2025/9/11 19:19 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);

}


@Ling?0、治具使用地面站的背光【不停】。关闭治具之后马上打开治具,治具的屏幕不抖动。
1、测试全部时序 改成和测试架相同的200ms延迟 无效
2、复位拉高之后不要拉低! 无效
3、generate write更换为DCS写
4、MIPI 5组并联上ESD器件
5、软件的其它问题。
6、将问题反馈到 FT敦泰原厂?
7、【让敦泰原厂】想办法把 LCD屏的初始化代码固化到FT8206里面,或者 使用比如DEBUG模式等等之类的方式。不需要RK3588来初始化LCD屏,以便 排除 初始化LCD屏的时候/阶段 被干扰这种可能性。?@古风


测试架 下电/背光不断电。有残影 大概5s+小时。
测试架 下电,马上上电。5s后出图。不闪


治具的上电时序 蓝色 VDDI 黄色 AVDD

治具的上电时序 黄色 AVDD 蓝色AVEE。几乎没有时差


治具的上电时序 黄色 AVDD 蓝色RST。 RST没有 电平的跳变。只有从低到高。
治具 上电的时候 每一路电压 都有大概180-200ms的延迟


板子正常显示时MIPI D0P脚初始化波形

地面站 配置 黄色 VDDI 蓝色AVDD。领先大概200ms

客户的AVDD和AVEE由同一引脚控制,只能同步输出,规格书中需要一定的时间差

跟这个关系不大   因为等10秒后  在开机   就正常    这组电源也是一个IO控制


客户的AVDD和AVEE由同一引脚控制 
测试架的AVDD和AVEE也几乎是 0时延[破涕为笑]

治具的上电时序 黄色 AVDD 蓝色AVEE。几乎没有时差


Z:\rk-android13-20250818RD-RK3588-MID\u-boot\drivers\video\drm\rockchip_panel.c

static void panel_simple_prepare(struct rockchip_panel *panel)
{
struct rockchip_panel_plat *plat = dev_get_platdata(panel->dev);
struct rockchip_panel_priv *priv = dev_get_priv(panel->dev);
struct mipi_dsi_device *dsi = dev_get_parent_platdata(panel->dev);
int ret;
u8 mode;

printf("****************wap %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);

    if (priv->prepared)
return;

    if (priv->power_supply)
regulator_set_enable(priv->power_supply, !plat->power_invert);

    if (dm_gpio_is_valid(&priv->enable_gpio))
dm_gpio_set_value(&priv->enable_gpio, 1);

    if (plat->delay.prepare)
mdelay(plat->delay.prepare);

    mdelay(1000);
printf("++++ 2025/9/11 19:02 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);

    // 2025/9/11 19:32 wenyuanbo add reset gpio low????
//if (dm_gpio_is_valid(&priv->reset_gpio))
//    dm_gpio_set_value(&priv->reset_gpio, 1);

    //mdelay(1000);
//printf("++++ 2025/9/11 19:19 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:19 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:19 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:19 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:19 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:19 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:19 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);


if (plat->delay.reset)
mdelay(plat->delay.reset);

    if (dm_gpio_is_valid(&priv->reset_gpio))
dm_gpio_set_value(&priv->reset_gpio, 0);

    
//mdelay(1000);
//printf("++++ 2025/9/11 19:20 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:20 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:20 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:20 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:20 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:20 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);

gpio_direction_output(118, 1); //GPIO3C6 reset ft8206  32*3+8*2+6=118
mdelay(10);
printf("++++ wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
//mdelay(1000);
//printf("++++ 2025/9/11 19:03 wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);

//gpio_direction_output(150, 1);//GPIO4C6 LCD RESET HIGH
//mdelay(8);
//gpio_direction_output(150, 0);//GPIO4C6 LCD RESET LOW

gpio_direction_output(128, 1);   //open backlight
mdelay(10);

    gpio_free(128);  //open backlight
gpio_free(118); //GPIO3C6 reset ft8206  32*3+8*2+6=118

    printf("&&&& wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);

if (plat->delay.init)
mdelay(plat->delay.init);

    mipi_dsi_dcs_get_power_mode(dsi, &mode);
printf("===>mode1: 0x%x\n", mode);
printf("#### wyb %s %s %d ************** ===>mode1: 0x%x\n", __FILE__, __FUNCTION__, __LINE__, mode);

mdelay(1200);

//printf("#### qingshuiyu %s %s %d ************** ===>mode1: 0x%x\n", __FILE__, __FUNCTION__, __LINE__, mode);
printf("&&&& qingshuiyu %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);

if (plat->on_cmds) {
if (priv->cmd_type == CMD_TYPE_SPI)
ret = rockchip_panel_send_spi_cmds(panel, panel->state,
plat->on_cmds);
else if (priv->cmd_type == CMD_TYPE_MCU)
ret = rockchip_panel_send_mcu_cmds(panel, panel->state,
plat->on_cmds);
else
ret = rockchip_panel_send_dsi_cmds(dsi, plat->on_cmds);
if (ret)
printf("failed to send on cmds: %d\n", ret);
}

mipi_dsi_dcs_get_power_mode(dsi, &mode);
printf("===>mode2: 0x%x\n", mode);
printf("#### wyb %s %s %d ************** ===>mode2: 0x%x\n", __FILE__, __FUNCTION__, __LINE__, mode);

    priv->prepared = true;

printf("---- wyb %s %s %d **************\n", __FILE__, __FUNCTION__, __LINE__);
}

黄色AVDD 蓝色reset 定位地面站拉低复位的地方


文章转载自:

http://nqTaHolR.zymgs.cn
http://1bld0Ui1.zymgs.cn
http://2W0sqpoS.zymgs.cn
http://PJ8vS3dT.zymgs.cn
http://KYHeHfXL.zymgs.cn
http://vdz9tTH9.zymgs.cn
http://lBp3q7qt.zymgs.cn
http://22H3qHC1.zymgs.cn
http://X2gfCpLy.zymgs.cn
http://uKVCnC1d.zymgs.cn
http://h7mk0RXM.zymgs.cn
http://mDzvxNXU.zymgs.cn
http://RkZXf4rd.zymgs.cn
http://Qc5TQDzT.zymgs.cn
http://2YSTqJnr.zymgs.cn
http://cm8lsIbN.zymgs.cn
http://9Tbi8QMH.zymgs.cn
http://4zUJJhUu.zymgs.cn
http://oTpimyvM.zymgs.cn
http://nSUgiifc.zymgs.cn
http://2dPwe32F.zymgs.cn
http://577CFz4G.zymgs.cn
http://FVmsRVGu.zymgs.cn
http://JM8uotVC.zymgs.cn
http://n4MaNzIk.zymgs.cn
http://hZvA1tKW.zymgs.cn
http://WOw4BP6T.zymgs.cn
http://2Yu4M2W4.zymgs.cn
http://wLeJsWjR.zymgs.cn
http://5EP8EfPd.zymgs.cn
http://www.dtcms.com/a/384330.html

相关文章:

  • 在线图书借阅平台的设计与实现 —— 基于飞算JavaAI的实战开发全流程与优化实践
  • Git : 分支管理和远程仓库
  • 当传统金融遇上AI智能:AIStock系统深度技术解析
  • 大数据如何捕捉你的爱好?如何实现跨站用户行为分析?
  • 用OpenCV CSRT实现实时目标跟踪
  • 13.Linux OpenSSH 服务管理
  • 微算法科技(NASDAQ: MLGO)研发基于量子密钥图像的量子图像加密算法,提供更高安全性的图像保护方案
  • LAMP 环境部署
  • Java程序设计:Eclipse 安装和使用
  • ZooKeeper 集群高可用配置指南
  • 在天嵌 TQ3568 (Debian) 上配置并添加打印机教程
  • pcl封装10 get_area_form_boundary计算平面点云面积
  • 突破局域网限制:MongoDB远程管理新体验
  • C++学习:map/set源码剖析+利用红黑树封装map/set
  • HTML开发工具有哪些?常用HTML编辑器推荐、HTML开发工具对比与HTML调试工具实战应用
  • Redis篇章3:Redis 企业级缓存难题全解--预热、雪崩、击穿、穿透一网打尽
  • 什么区块链(Blockchain)?Rust的区块链的例子
  • LangChain4J-(5)-记忆缓存与持久化
  • 遇到 npm install报错 certificate has expired是因为淘宝镜像源(registry.npm.taobao.org)
  • Excel办公新选择:300项功能的免费插件
  • 在Excel和WPS表格中用照相机创建动态更新的数据图片
  • 开发与维护nodejs工具库或自定义npm包
  • 从企业实战中学习Appium自动化测试(一)
  • 深度理解链表:使用C++数组与下标的模拟
  • 【wpf】从 DataContext 到依赖属性:WPF 自定义控件 ImageView 的优化之路
  • Sport Network 凭借 Akamai 实现卓越成就
  • Topaz Photo AI 人工智能图像处理(Mac)
  • LeetCode 第467场周赛 第13天
  • PINN物理信息神经网络锂电池剩余寿命预测模型(内含容量特征提取+两组电池剩余寿命预测实验),MATLAB实现
  • 「日拱一码」088 机器学习——蒙特卡洛树搜索MCTS