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.

[参考译文] SN65DSI83:STM32出现 SN65DSI83同步错误

Guru**** 2487425 points
Other Parts Discussed in Thread: SN65DSI83, SN65DSI83-Q1

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/680628/sn65dsi83-sn65dsi83-sync-error-with-stm32

器件型号:SN65DSI83

你好。

我正在为 STM32F769开发一个应用、它具有双通道 DSI 主机、将连接到1024x600 18bpp LVDS 面板。

我设法使面板工作并在其上显示测试模式、但无法从 MCU 获取任何图像。

在开发此应用时、我首先使用 DSI 转 HDMI 适配器、代码经过调整、分辨率为1024x600、在42.3Hz 时正确显示、DSI 速度为每通道400Mbit/s、非突发模式下显示同步脉冲。 这样、我就知道 DSI 流在工作。

已在各种时钟速率下测试面板、并且应该能够使用大约25MHz 的时钟频率在该刷新速率下工作

当调试 SN65DSI83时、我发现 LVDS 流从未启动、它会生成同步错误中断(寄存器0xE5的位7一直被置位、即使我将其清零)

LVDS 时钟由 DSI 时钟生成、我确保 DSI 时钟是连续的、没有 PLL 错误。

此外、还会检查启动序列、以便当 EN 置为有效时、LP11中的所有通道都处于置位状态、20ms 寄存器设置完成后、视频流将启动、之后 PLL 将启用、并向 SN65DSI83发送软复位信号

导致此同步错误的原因可能是什么? 它在流启动后立即显示、IRQ 线路已配置、并且在启动流后立即变为高电平。 当启动 PLL 时、它也会被清零、并在下一帧开始时再次变为高电平。

我已使用 DSI 调谐器检查设置、该设置应该正常、最小时钟为150MHz、系统设置为200MHz (400Mbps)

感谢你的帮助。

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

    首先、您能否共享.dSI 文件和面板规格、以便我们验证设置?

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

    您好 I.K.

    我要附上.dSI 和面板数据表。 将.dSI 重命名为.txt、因为论坛不允许直接上传。

    谢谢。

    e2e.ti.com/.../F_5F005F00C4893C68664E5F00_COG_2D00_TA10MZXH_2D00_01_5F00_NEW-SPEC_5F00_COG_2D00_TA10MZXH_2D00_01-specification.pdfe2e.ti.com/.../sn65dsi83-stm32-1024.dsi.txt

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

    调谐器设置看起来正常。 您能否检查 DSI 源提供的线时间? 与 DSI 调谐器输出的48.160us 是否相同? 如果线时间与工具计算的时间不同、这将导致问题、因为 DSI83不会重新对齐时序。

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

    你(们)好

    为了确保时序、我向制造商询问了它们的值、因为它们没有出现在规格中。

    已使用调谐器重新计算配置并获得56.56us 的线时间。

    调整了 DSI 时钟以匹配该值、因为调谐器显示在150MHz DSI 时钟下、突发时间将准确满足我的需求。 已使用示波器检查主机是否以相同的线路时间发送数据。

    但 sn65dsi83始终显示同步错误。

    此错误的原因可能是什么?

    我要附加新的.dSI 和面板的时序参数。

    此致。

    e2e.ti.com/.../sn65dsi83-stm32-lvds.dsi.txt

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

    在执行一些测试时、我注意到为同步错误配置的 IRQ 线路在垂直同步数据包之后立即变为高电平、其激活看起来与线路事件无关、而是与帧的开始相关。

    不知道这是否有用、或者这只是芯片的正常行为。

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

    你(们)好。

    您是否有时间了解新的配置 I.K.?

    我将附加我在上一篇文章中提到的中断事件捕获。 黄色轨迹线是通道0正信号、蓝色轨迹线是 IRQ 线路。

    它始终在该点有效、在下一帧的第一行中、在它被清零后、它在接收到 SYNC 脉冲后看起来被置位。 帧之间有一个2us 的 LP 周期。

    此致。

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

    很抱歉耽误你的时间、我仍在研究这个问题。 是否可以附加事件捕获? 您好像忘记在上一篇文章中附加它了。

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

    你好。

    是的、我忘了附加它、这里有它。 该通道配置为25MHz LVDS、200MHz DSI 两个通道、非突发脉冲。 黄色轨迹线是 D0+、蓝色是 IRQ

    自从我的第一篇帖子以来、我已经使用不同的时钟、突发模式、使用事件或脉冲的非突发模式以及在不同区域启用 LP 模式进行了测试。 我还尝试了另一个原型装置以丢弃损坏的芯片。 并且还尝试重新配置另一个实例以显示实际的显示、而不是 HDMI 转换器的示例。

    在所有情况下、我都会在帧开始时接收到这个同步中断。

    我想租用一个具有 D-PHY 解码功能的高端示波器来深入探究、因为我的带宽仅为100MHz。

    此致。

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

    我对迟迟不作出答复表示歉意。 当您说您尝试了另一个原型装置以丢弃损坏的芯片时、这是否意味着您在多个 SN65DSI83装置上看到此问题? 当您将器件配置为生成测试模式时、您是否使用外部 REFCLK 生成 LVDS 时钟、或者您是否仍在使用 DSICLK?

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

    你(们)好

    就是这样、我制作了几个板并测试了其中的两个板、两个具有不同 SN65DSI83单元的板都显示了相同的行为。 它实际上是 SN65DSI83-Q1、但它应该是 QFP 中的同一芯片、并通过汽车认证。

    该测试模式适用于 DSICLK 和 REFCLK、其思路是使用 DSICLK、但修改了一个具有25MHz 振荡器的电路板、并测试了外部时钟以解决 DSICLK 的问题。 大多数测试都是使用 DSICLK 完成的、因为 REFCLK 没有显示任何差异。

    使用 DSICLK 时、PLL 解锁位永远不会被置位、因此它必须正常工作、此外、当测试模式激活时、LVDS 时钟也与所需的25MHz 频率相对应。

    此致。

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

    您好、Angel、

    要更清楚地指示故障、您可以尝试配置内部测试寄存器0xF9吗? 该域选择在 IRQ 输出管脚上输出的内部信号。 您可以在上电期间配置此字段。 序列完成后、您可以通过监控 IRQ 来知道从 DSI 到 LVDS 的通信是否存在内部错误。 您可以从尝试 a_wait_for_vsync 开始。 配置后、IRQ 应在加电序列完成且器件正常运行后保持低电平。

    从 测试多路复用器获取 A_WAIT_for_vsync 的状态的过程如下:

    a.启用 IRQ 输出。 将0x1写入地址0xE0以设置 IRQ_EN=1。

    b. 通过 将0x06写入地址0xF9来设置 output_test_MUX_SEL = 00110 (A_wait_for_vsync)。

    c.观察 DSI85 IRQ 引脚上的 TEST_mux 输出。

     

    您还可以使用下表中的 IRQ 功能检查其它错误。

    0xF9
    00000
    IRQ 功能
    正常情况
    问题
    00001
    A_LP_ST态
    每 x 次切换一次
     
    00010
    CHA_ULP_ST态
     
    00011
    dphya_term_en[0]
    每 x 次切换一次
     
    00100
    a_sot_rcvd
    每 x 次切换一次
     
    00101
    A_DSI_RD_DATA_AVAIL
    每 x 次切换一次
     
    00110
    a_wait_for_vsync
    00111
    A_DSI_clk_Ratio_sync
    每 x 次切换一次
     
    01000
    A_DSI_SYNC
    每 x 次切换一次
     
    01001
    a_fifo_pix_wr
    定期切换
     
    01010.
    CHA_SYNC_dly_state
    每 x 次切换一次
     
    01011.
    a_delay_cnt_eq_0
    每 x 次切换一次
     
    01100
    a_fifo_sync_avail
    每 x 次切换一次
     
    01101.
    CHA_VSYNC_OUT
    每 x 次切换一次
     
    01110
    a_fifo_pix_rd
    每 x 次切换一次
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    此致、
    I.K.

     
    0xF9
    00000
    IRQ 功能
    正常情况
    问题
    00001
    A_LP_ST态
    每 x 次切换一次
     
    00010
    CHA_ULP_ST态
     
    00011
    dphya_term_en[0]
    每 x 次切换一次
     
    00100
    a_sot_rcvd
    每 x 次切换一次
     
    00101
    A_DSI_RD_DATA_AVAIL
    每 x 次切换一次
     
    00110
    a_wait_for_vsync
     
    00111
    A_DSI_clk_Ratio_sync
    每 x 次切换一次
     
    01000
    A_DSI_SYNC
    每 x 次切换一次
     
    01001
    a_fifo_pix_wr
    定期切换
     
    01010.
    CHA_SYNC_dly_state
    每 x 次切换一次
     
    01011.
    a_delay_cnt_eq_0
    每 x 次切换一次
     
    01100
    a_fifo_sync_avail
    每 x 次切换一次
     
    01101.
    CHA_VSYNC_OUT
    每 x 次切换一次
     
    01110
    a_fifo_pix_rd
    每 x 次切换一次
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    我已经按照建议对器件进行了测试、在为 A_WAIT_TO_VSYNC 设置了测试多路复用器后、IRQ 信号在 VSS 事件后立即变为低电平、但在几微秒后再次变为高电平。 检查时间并使用配置参数后、很明显低电平时间对应于同步延迟时间。 最初大约为1、4微秒、对于25MHz 的 PCLK、这相当于35像素时间、设置为 DSI 调谐器建议的33。

    增加延迟时间只是增加低电平时间、直到它到达下一个 HSS。 降低它会缩短低电平时间。 值1使线路一直变为高电平、值0给出的结果与极长的时间相同、在下一个 HSS 事件发生时上升。

    已检查上一帖子中的所有多路复用器设置、尝试获取有关该问题的更多信息、结果如下:

    0xF9
    0 IRQ 功能 正常情况 问题 注释
    1 A_LP_ST态 每 x 次切换一次 好的 低电平模式下为高电平
    10. CHA_ULP_ST态 好的 低电平模式下为高电平
    11. dphya_term_en[0] 每 x 次切换一次 好的 在 HS 模式下为高电平
    100 a_sot_rcvd 每 x 次切换一次 好的 标头之后、每个 HS 突发短脉冲
    101. A_DSI_RD_DATA_AVAIL 每 x 次切换一次 好的 在 HS 模式下为高电平
    110 a_wait_for_vsync 切换 仅在同步延迟期间为低电平
    111. A_DSI_clk_Ratio_sync 每 x 次切换一次 好的 在大多数 HS 接头期间为高电平
    1000 A_DSI_SYNC 每 x 次切换一次 好的 VSYNC 上的极短脉冲
    1001. a_fifo_pix_wr 定期切换 好的 VSYNC 上的极短脉冲
    1010. CHA_SYNC_dly_state 每 x 次切换一次 好的 VSYNC 后为高电平以实现同步延迟时间
    1011. a_delay_cnt_eq_0 每 x 次切换一次
    1100 a_fifo_sync_avail 每 x 次切换一次 好的 VSYNC 后为高电平以实现同步延迟时间
    1101. CHA_VSYNC_OUT 每 x 次切换一次
    1110 a_fifo_pix_rd 每 x 次切换一次

    从多路复用器设置说明中可以看到、只有在复位/软复位或错误条件之后、a_wait_for_sync 才应变为高电平。 什么类型的错误会导致此行为? IRQ 状态寄存器仍然只显示 SYNC 错误位。

    为了完全确定芯片、我从另一家提供商处订购了几个芯片、只是为了丢弃一批坏的芯片。

    感谢您的所有帮助!

    此致。

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

    你(们)好。

    最终解决了这个问题,最终是一个非常愚蠢的错误 在初始化寄存器时、寄存器0x10被直接写入、而不检查其之前的值。 这会导致一些保留位设置为零、因此 DSI83 配置为双链路 DSI、该版本不支持该配置、也不是该应用所需的配置。

    现在、我们在 LCD 中有一个稳定的图像。

    再次感谢您的所有支持!

    此致。

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

    很棒,你解决了这个问题! 首先、我可能应该要求一个寄存器转储、我们本来可以更早地发现它。

    此致、
    I.K.