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.

[参考译文] DLPLCRC410EVM:DLP Discovery 4100板 USB 连接问题

Guru**** 2537360 points
Other Parts Discussed in Thread: DLPLCR95UVEVM, DLPLCR70UVEVM, DLPLCR70EVM, DLPLCR95EVM, DLP9500UV, DLPLCRC410EVM, DLPLCR65NEVM

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

https://e2e.ti.com/support/dlp-products-group/dlp/f/dlp-products-forum/1493714/dlplcrc410evm-dlp-discovery-4100-board-usb-connection-problem

器件型号:DLPLCRC410EVM
Thread 中讨论的其他器件:DLP9500UV、DLPLCR95UVEVM 、DLPLCR70UVEVM 、DLPLCR70EVM、 DLPLCR65NEVM、DLPLCR95EVM

工具/软件:

大家好:

我是 IM2NP (法国普罗旺斯微电子研究所)的一名研究员、我们想使用 2xLVDS 1080p DMD 板数字照明创新7005. (我假设此板是 DLP9500UV DMD 评估板)与 A 耦合 DLP Discovery 4100板 (我假设该模块是 DLPLCRC410评估模块)。

我们已安装 Discovery 4100 Explorer 软件(详见"dlpu040c.pdf"文档)、并遵循启动过程、特别是:

  • 2.2硬件概览和设置

  • 2.2.1开始使用

正如预期的那样、LED 16和17呈绿色亮起、D9以1Hz 的频率闪烁、D10呈稳定绿色。

关于驱动程序安装和 Discovery 4100 Explorer 软件、我们还遵循了技术文档( 3.2 DLP Discovery 4100运行 )、请确保事先安装 Microsoft Visual Studio 2010 (x86版本)。

但是、我们注意到、在选择驱动器时、会出现两个选项、与中所示的选项不同 图3-8. 选择 TI D4100 Explorer 。 可用的选项包括:

  • "TI D4100发现"

  • "TI D4100 Explorer"

我们选择了"资源管理器"、确保驱动程序已正确安装、然后重新启动计算机。

我们在启动 Discovery 4100 Explorer 软件时遇到问题:

  • 宽度方向 未连接并通电 、软件将正确启动。 但是、我们接着打开该电路板、即软件 冻结 。 冻结后、它会崩溃(关闭时没有错误消息)或保持无响应(继续在左下方显示"未连接")。

  • 打开或关闭 已连接并通电 、软件启动和冻结所需的时间较长(闪屏变为白色、而不是显示 TI 徽标)。 然后、会发生上述相同的行为、要么崩溃、要么无法检测到电路板。

我们已经观察到如果我们 关闭电源 在保持电路板连接的同时、发送消息 "未连接" 对进行了更改 "USB 2.0" 将显示右侧的字段 " DMD:无 DMD "

我们已经在多台计算机(两台运行的计算机)上测试了此测试 Windows 10 64位 一个正在运行 Windows 7 64位 )、始终具有管理员权限并使用相应的驱动程序。

随附、您会发现我认为可能相关的照片(概述 DLP Discovery 4100 主板、序列号和软件行为的屏幕截图)。 如果您需要其他图片、请告知我。

提前感谢您的帮助、祝您度过美好的一天。

此致、

C é dric


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

    您好 Cedric、

    在 GUI 中显示 DMD:No DMD 时、请打开"About"并报告其中显示的信息。   

    在中间的图片中、在2个 FPGA 的上方有一个带有白色标签的 PROM。  您能否报告在其中找到的信息?

    菲齐克斯

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

    您好、Fizix、

    感谢你的帮助。
    下面是我们设法收集在 PROM 上的信息:

    XCF1LP FG

    BRT

    CK 0U3 V5

    第819章

    我不确定某些字符、因为它们非常小。

    如果需要,我可以把卡片移到实验室,在那里我们有显微镜再次检查,认为这将是很好的,不必.

    另外、下面是 About 部分的屏幕截图。

    我认为很奇怪的是,dll 不会出现。 它当前位于 C:\Windows\SysWOW64文件夹中。 也许我们应该将它复制到 System32吗?

    同样奇怪的是, USB 驱动程序不出现也... (我们必须关闭卡、因为打开卡后软件会崩溃)。

    感谢您的帮助、

    此致、

    Cedric

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

    PS :我们还在开发基于 API (D4100_USB.dll)的非常简单的 Visual Studio C++代码,尝试一个非常基本的连接并收集一些信息。

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

    您好、Cedric、

    我指的是您的初始图像系列中白色标签上的信息。

    我需要从白色小标签上获取信息。  它没有足够的分辨率来制定出来。

    菲齐克斯

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

    很抱歉误解。
    我假设你想要在贴纸下的信息。 我想你可以通过左键单击缩略图(从我的原始帖子),然后右键单击放大的图片,然后"在新选项卡中打开图片"来获得完整的图片。
    下面是信息尽管如此:

    2510442.
    -0001

    如果我们发现一些我们认为可能有价值的内容、我们将在明天尝试 C++代码、并使用一些信息更新主题。

    再次感谢您的帮助、

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

    请告诉我这是如何与 C++代码一起使用的。

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

    您好、Fizix、

    按照中提供的说明进行操作 DLP Discovery 4100开发套件 API 编程人员指南 (又名 dlpu039.pdf)、我们使用的是 D4100_USB.dll、因为 Microsoft 不再支持 ActiveX。

    使用. dll、我们设法列出其中的功能、然后我们只试图检查卡是否已连接并收集基本信息。 为此、我们使用的是 GetNumDev()函数、该函数在拔下卡时返回1 (和0)。  到目前为止、一切似乎都还可以。 对于记录、我们没有插入其他 USB 设备、我们使用的是 Visual Studio。 我们必须编译32位(x86)才能正确加载.dll、否则、我们会收到错误。 但是、由于公司策略/IT 技术支持规则的原因、计算机采用的是 Windows 10 64位、我们无法更改。

    但是、调用  GetDMDTYPE()将返回不一致的结果。 我尝试了两个0和1参数。  
    0参数(似乎是正确的方法、关于 ActiveX 部分中给出的注释:设备编号(...)、这与等效的.dll 函数不同、该函数从0开始进行编号。) 使控制台加载几秒钟、然后返回-2值、这是文档中未讨论的情况。

    因此、我们目前无法确定如何解决该问题、甚至无法看到进一步调试的路径。

    任何想法都会受到欢迎、

    再次感谢您、


    C é dric

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

    Cedric、

    请查看我向您发送的朋友请求。

    菲齐克斯

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

    你好,菲齐克斯,谢谢你,我刚刚接受了你的请求

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

    您好、下面是关于我们使用自制代码进行测试的一些更新。 输出为:


    和我们的代码:

    #include <stdio.h>
    #include <windows.h>
    
    // Definition des pointeurs de fonction
    typedef short (*GetNumDevFunc)();
    typedef int (*GetDescriptorFunc)(int*, short);
    typedef short (*GetDMDTYPEFunc)(short);
    
    typedef unsigned int (*GetDriverRevFunc)(short);
    typedef unsigned int (*GetFirmwareRevFunc)(short);
    typedef short int (*GetUsbSpeedFunc)(short);
    typedef unsigned int (*GetDLLRevFunc)();
    typedef unsigned int (*GetFPGARevFunc)(short);
    typedef short(*GetDDCVERSIONFunc)(short);
    
    int main() {
        HINSTANCE hDLL = LoadLibraryA("D4100_usb.dll");
        if (!hDLL) {
            printf("Erreur : Impossible de charger la DLL.\n");
            return 1;
        }
    
        printf("DLL chargee avec succes.\n");
    
        // Chargement des fonctions
        GetNumDevFunc GetNumDev = (GetNumDevFunc)GetProcAddress(hDLL, "GetNumDev");
        GetDescriptorFunc GetDescriptor = (GetDescriptorFunc)GetProcAddress(hDLL, "GetDescriptor");
        GetDMDTYPEFunc GetDMDTYPE = (GetDMDTYPEFunc)GetProcAddress(hDLL, "GetDMDTYPE");
    
        GetDriverRevFunc GetDriverRev = (GetDriverRevFunc)GetProcAddress(hDLL, "GetDriverRev");
        GetFirmwareRevFunc GetFirmwareRev = (GetFirmwareRevFunc)GetProcAddress(hDLL, "GetFirmwareRev");
        GetUsbSpeedFunc GetUsbSpeed = (GetUsbSpeedFunc)GetProcAddress(hDLL, "GetUsbSpeed");
        GetDLLRevFunc GetDLLRev = (GetDLLRevFunc)GetProcAddress(hDLL, "GetDLLRev");
        GetFPGARevFunc GetFPGARev = (GetFPGARevFunc)GetProcAddress(hDLL, "GetFPGARev");
        GetDDCVERSIONFunc GetDDCVERSION = (GetDDCVERSIONFunc)GetProcAddress(hDLL, "GetDDCVERSION");
    
        if (!GetNumDev || !GetDescriptor || !GetDMDTYPE) {
            printf("Erreur : Impossible de charger certaines fonctions de la DLL.\n");
            FreeLibrary(hDLL);
            return 1;
        }
    
        printf("Toutes les fonctions requises ont ete chargees avec succes.\n");
    
        //6.1.2 Verifier le nombre d'appareils connectes
        short numDevices = GetNumDev();
        printf("Nombre d'appareils detectes : %d\n", numDevices);
        if (numDevices <= 0) {
            printf("Aucun appareil detecte.\n");
            FreeLibrary(hDLL);
            return 1;
        }
    
        //6.1.3 Recuperer les informations du premier appareil
        int descriptor[14];
        int get_descriptor = -3;
    
        get_descriptor = GetDescriptor(descriptor, 0);
    
        switch (get_descriptor)
        {
        case -1:
            printf("USB device failed top open\n");
            break;
        case -2:
            printf("device descriptor request fails\n");
            break;
        case -3:
            printf("Aucun changement");
            break;
        default:
            printf("octets (bytes) ecrits : %d\n", get_descriptor);
        }
    
        if (get_descriptor) {
            printf("Description de l'appareil :\n");
    
            for (int i = 0;i < 14;i++)
            {
                printf("indice %d, valeur : %d\n", i, descriptor[i]);
            }
        }
        else {
            printf("Erreur lors de la recuperation du descripteur.\n");
        }
    
        //6.1.4 Recuperer la version du driver
        unsigned int driver_version;
    
        driver_version = GetDriverRev(0);
        printf("Version du driver : %d\n",driver_version);
    
        //6.1.5 Recuperer la version du firmware
        unsigned int firmware_version;
    
        firmware_version = GetFirmwareRev(0);
        printf("Version du firmware : %d\n", firmware_version);
    
        //6.1.6 Recuperer la vitesse de l'USB
        short int usb_speed=-10;
    
        switch (usb_speed)
        {
        case 0:
            printf("full speed\n");
            break;
        case 1:
            printf("high speed\n");
            break;
    
        case -1:
            printf("Device failed to open\n");
            break;
        case -2:
            printf("Descriptor request failed\n");
            break;
    
        case -3:
            printf("USBspeed value differs from expected\n");
            break;
    
        case -10:
            printf("Valeur non modifiee\n");
            break;
    
        default:
            printf("cas non reconnu (valeur :%d)\n", usb_speed);
        }
    
        //6.1.7 Recuperer la version de la DLL
        unsigned int dll_version;
    
        dll_version = GetDLLRev();
        printf("Version de la DLL : %d\n", dll_version);
    
        //6.1.8 Recuperer la version du FPGA
        unsigned int fpga_version;
    
        fpga_version = GetFPGARev(0);
        printf("Version du FPGA : %d\n", fpga_version);
    
        //6.1.9 Recuperer la version du DDC
        short ddc_version;
    
        ddc_version = GetDDCVERSION(0);
        printf("Version du DDC : %d\n", ddc_version);
    
        //6.1.10 Recuperer le type de DMD
        short DMDtype = 3;
    
        DMDtype = GetDMDTYPE(0);
    
        switch (DMDtype)
        {
        case 0:
            printf("DLP 9500\n");
            break;
        case 1:
            printf("DLP 7000\n");
            break;
        case 7:
            printf("DLP 650\n");
            break;
        case 15:
            printf("pas reconnu (code 15)\n");
            break;
        default:
            printf("cas non reconnu (valeur :%d)\n", DMDtype);
        }
    
        FreeLibrary(hDLL);
        printf("DLL liberee et programme termine.\n");
        return 0;
    }
    



    我谨提请你注意、我们没有称之为 INT program_FPGA (UCHAR* write_buffer、long write_size、short int DeviceNumber) 测量输出。 我可能是错的、但我假设 FPGA 已使用某些默认代码编程。 这是正确的吗? 或者我应该在之前加载 D4100_GUI_FPGA.bin 文件吗? 如果我理解正确,我们必须在发送之前拆分它? 有没有任何机会,你有一个示例,如何正确地做到这一点?

    感谢你的帮助。

    此外,我们设法获得了我们的手 Windows 732位版本,与一个全新的安装。 这将是我们的设置,以避免64位兼容问题,但缺点是此计算机不能插入网络。

    最后,还有一个信息是,我们正在使用这些文档:

    - dlpu039a.pdf (DLPRegisteredDiscovery 4100开发平台 API 编程人员指南) 2016年9月–2018年12月修订

    - dlpu40c.pdf (EVM 用户指南:DLPLCRC410EVM、DLPLCR65NEVM、DLPLCR70EVM、DLPLCR70UVEVM、DLPLCR95EVM、DLPLCR95UVEVM DLPRegisteredDiscovery 4100开发平台) DLPU040C–2016年10月–2024年7月修订

    我假设他们是最新的,但请你确认?

    再次感谢您、


    此致、

    C é dric

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

    我将查看这些内容。  这些日期看起来是正确的。

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

    谢谢你。 PROM 信息或奇怪的返回值是否为您提供了有关我们下一步可以尝试的任何线索? 由于我的想法耗尽,我想发送正确的 D4100_GUI_FPGA.bin 文件到卡,但我担心错误的.bin 文件或不正确的程序可能会积木卡. 您能否为我们的卡提供正确的文件和如何正确发送它的片段(通过使用. dll )? 谢谢你。

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

    Cedric、

    由于您使用带有 XCF16 PROM 的电路板、该文件与用于 SPI PROM 的较新电路板不同。

    我也不想向您发送错误的文件、但 bin 文件不会将其砖化、因为它无论如何都是易失的。  我会给您发送几个不同的尝试。

    菲齐克斯

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

    Cedric、

    很抱歉、美国假日周末进一步延迟。

    菲齐克斯

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

    Cedric、

    我很抱歉,我把球落在了这上面。  您是否仍需要此查询的帮助?

    菲齐克斯

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

    您好、Fizix、

    不用担心、我可以理解。

    然而,我们确实仍然需要你们的帮助。 您告诉我们、您已向我们发送了正确的程序、我们仍在等待。
    由于我们必须进行概念验证、因此我们订购了另一个成本约为2000美元的 TI DMD (并且遇到了错误)、但我们预计这两个卡最终都能正常工作。 我觉得很不舒服,不得不扔掉一个10万美元的设备,而不能告诉什么是错的。

    此致、

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

    您好、Cedric、

    我向您发送了一个朋友邀请、因为我想就此问题与您进行通话。  您知道电路板是何时购买的吗?

    查看 PROM 上的数字、这是 EVM 的早期版本。  您将需要 GUI 版本1.x。   

    菲齐克斯

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

    您好、Cedric、

    我看到我们已经是"朋友"。  请检查您的私人消息。

    菲齐克斯