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.

[参考译文] DLPLCR70EVM:在 DMD 显示屏上加载图像或 bin 文件时出现问题。

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

https://e2e.ti.com/support/dlp-products-group/dlp/f/dlp-products-forum/1335157/dlplcr70evm-facing-issue-in-loading-image-or-bin-file-on-dmd-display

器件型号:DLPLCR70EVM
主题中讨论的其他器件:DLP7000

大家好、  

我已经开始通过 MATLAB 进行自动化、但这对我来说似乎是不可能的、现在我正在尝试通过直接加载*。dll 和*。h 文件来实现自动化。  

我不知道我在哪里做错了。 因为、我的代码运行正常、没有显示任何错误、但不会在 DMD 上加载图像。

有线索吗?

代码:

#包含
#包含
#包含
#include "D4100_USB.h"
#include "Cyapi.h"
#include "RegisterDefinites.h"
#include "8055.D4100_USB.h"
#include "windows.h"

#pragma 注释(lib"D4100_USB.lib")
#pragma 注释(lib"6562.D4100_usb.lib")
使用命名空间 USB
int main()
{

  short numDevices = GetNumDev()
  std::COUT <<"连接的器件数:"<< numDevices << std::endl
  Short DeviceNumber = numDevices - 1//仅连接了一个器件。
   dmdType = GetDMDTYPE (DeviceNumber);//应为1 (DLP7000)
  std::COUT <<"USB 类型0.7XGA 已连接:(1 -是、0 -否、-1 -未连接 DMD)"<< dmdType <<标准endl

  SetWDT (0DeviceNumber);//禁用 WDT
//x SetPWRFLOAT (0、deviceNumber);//禁用功率浮点
  SetTPGEnable (1DeviceNumber);//禁用测试图形发生器
  short USB_speed = GetUsbSpeed (DeviceNumber);//获取 USB 速度(1表示高电平)
  SetBlkMd (0DeviceNumber);// DMD 块操作-- NOP
  LoadControl (DeviceNumber);//使用 DMD 的当前设置加载控制寄存器并执行命令。
  
  file *fp = fopen ("test_Smile.bin""rb");//加载我自己的模式
  无符号字符行数据[(1024 / 8)* 768]
  fread (rowDatasizeof (rowData)、1fp);//从 bin 文件准备 DMD 图形数据。
  fclose (fp);

  SetBlkMd (0DeviceNumber);// DMD 块操作-- NOP
  LoadControl (DeviceNumber);// DMD 块操作--执行!
  SetRowMd (3DeviceNumber);//设置第一行地址
  SetNSFLIP (0DeviceNumber);
  LoadControl (DeviceNumber);//行操作--执行!

  SetRowMd (1DeviceNumber);//内部行地址递增1
  SetNSFLIP (0DeviceNumber);
  LoadControl (DeviceNumber);//行操作--执行!

  ClearFifos (DeviceNumber);//初始化 DMD FIFO。
  LoadData (rowDatasizeof (rowData)、dmdTypeDeviceNumber); //将模式加载到 DMD 中。

  SetBlkMd (3DeviceNumber);// DMD 块操作-全局复位请求
  SetBlkAd (30DeviceNumber);// BLK_AD=4'b10xx
  LoadControl (DeviceNumber);// DMD 块操作--执行!

  返回0
结果显示
连接的设备数:1
DMD 类型0.7XGA 连接:(1 -是、0 -否、-1 -未连接 USB) 1

构建成功完成。
*终端将被任务重用,按任意键将其关闭。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Aisha:

    我知道有些人遇到了 DMD 图形数据格式方面的问题。  数据的格式为数据类型字符数组。  这是很多人的旅行。  如果这改变了问题、请告诉我。

    菲齐克斯

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

    如果我要在.h 文件中将 char* array 更新为 int array,则会显示错误,说明在代码中使用的 char*数组与 int array 不兼容。 当我将 bin 文件转换为 char 文件时、它不会在 DMD 上显示任何输出。 但是、每次运行代码时、它都会显示相同的 DMD 内置模式。   

    有什么建议吗?

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

    您好、Aisha、

    我不熟悉此 EVM 的软件、但这是否会与期望参数仍然是字符数组的其他函数紧密耦合? 这是我的第一个想法、除非这是您更新 include 文件的含义。 我会再次选中将此作为参数传递的所有内容、以确保我具有所有实例。 我不知道这是不是最愚蠢的做法,然而,. 如果您必须更改许多文件而不使用有助于重构此类内容的工具、我似乎很容易出错。

    此致、
    迈克尔·莱

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

    Michael、您好!

    我确信它们与其他函数紧密耦合。  
    这两个命令位于 D4100_usb.h 文件中,  

    USB_DLL int program_FPGA(unsigned char* write_buffer, long write_size, short int DeviceNumber);
    
    USB_DLL int LoadData(unsigned char* RowData, long length, short DMDType, short int DeviceNumber);
    

    与这些类似、它们位于8055.D4100_usb.h 文件中、

    USB_DLL int program_FPGA(UCHAR *write_buffer, LONG write_size, short int DeviceNumber);
    
    USB_DLL int LoadData(UCHAR* RowData, long length, short DMDType, short DeviceNumber); 

    如果我要将它们从 UCHAR 转换为 Int -以下代码

    // D4100_usb.h - unsigned char* to int
    
    USB_DLL int program_FPGA(int write_buffer, long write_size, short int DeviceNumber);
    
    USB_DLL int LoadData(int RowData, long length, short DMDType, short int DeviceNumber);
    
    // 8055.D4100_usb.h
    
    USB_DLL int program_FPGA(int *write_buffer, LONG write_size, short int DeviceNumber);
    
    USB_DLL int LoadData(int* RowData, long length, short DMDType, short DeviceNumber); 

    他们显示此错误:  

    'int USB::LoadData (int、long、short、short)':无法将参数1从'unsigned char [98304]'转换为'int'

    "unsigned char *"  类型的参数与 "int"类型的参数不兼容

    我仍然不明白如何解决这个问题。 有什么建议吗?


    祝你一切

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

    您好、Aisha、

    请允许我留出一些额外的时间来研究这一点。 我将研究 GUI 提供的源操作。 我还将在我的本地计算机上制作一份您的文件副本、以仔细检查可能丢失的任何错误和警告。

    是否还遵循利用 makefile 的编译指令? 我只是想确保我们做同样的事情。

    此致、
    迈克尔·莱

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

    Michael、您好!  


    我正在为 C++使用 VSCode、因为我不需要 makefile。  
    此外、我发现了我的错误、我在头文件中将 char 更新为 int、但没有更新源代码。 好的、现在它对我很有效。 我现在可以将 bin 文件加载到 DMD -成功。  

    非常感谢您的努力和帮助、非常感谢。  

    祝你一切

    顺利。 艾莎