USB论坛
直播中

早知

10年用户 1321经验值
擅长:光电显示 存储技术
私信 关注
[问答]

FX3设备管理器显示的设备命能否修改?

你好 请问FX3 显示的名称在哪里修改,想区别下版本,如将显示的"Cypress FX3 USB BulkloopExample Device"修改成"Cypress FX3 USB 123 Device"                                                                                                                                                   

回帖(1)

刘军

2025-5-20 18:15:44

在Cypress FX3设备中,设备管理器显示的名称是通过USB设备描述符中的字符串描述符定义的。修改该名称需要修改固件代码中的字符串描述符并重新烧录固件。以下是详细步骤:




修改步骤:




  1. 找到字符串描述符定义位置

    在FX3 SDK的示例代码中(例如BulkLoop示例),字符串描述符通常定义在以下位置之一:



    • 主源文件(如cyfxbulk.c

    • 字符串描述符专用的头文件或源文件(如cyfxusb.h


    查找类似以下代码片段:


    static uint8_t cypressUsbProductString[] = "Cypress FX3 USB BulkloopExample Device";



  2. 修改产品名称字符串

    cypressUsbProductString的值更改为自定义名称(如"Cypress FX3 USB 123 Device")。

    注意:USB字符串描述符需使用Unicode编码(UTF-16 LE),通常通过L宏或手动转换。示例:


    // 直接修改字符串内容(确保使用Unicode)
    static uint8_t cypressUsbProductString[] = L"Cypress FX3 USB 123 Device";

    如果代码中使用CY_FX_USB_PRODUCT_STR宏定义名称,则需修改对应宏:


    #define CY_FX_USB_PRODUCT_STR  "Cypress FX3 USB 123 Device"



  3. 检查字符串索引

    在USB设备描述符中,iProduct字段指定产品名称的字符串索引。确保该索引与字符串描述符数组中的位置一致。例如:


    .iProduct          = 0x02  // 表示使用第2个字符串描述符



  4. 重新编译固件

    使用SDK工具链(如Eclipse或命令行)重新编译修改后的代码,生成新的.img文件。




  5. 烧录固件并测试  



    • 使用Cypress USB Control Center工具将新固件烧录到FX3设备。

    • 重新插拔设备,检查设备管理器中的名称是否更新。






注意事项:



  • Unicode编码:确保字符串以UTF-16 LE格式存储。如果手动定义数组,需将每个字符转换为双字节:
    static uint8_t cypressUsbProductString[] = { 'C',0, 'y',0, 'p',0, ... }; // UTF-16 LE

  • 缓存问题:若设备名称未更新,尝试在设备管理器中卸载设备并重新扫描,或更换USB端口。

  • PID/VID:如需区分多个设备,可同时修改idVendoridProduct(在设备描述符中),避免系统缓存旧名称。




示例代码片段:


// 在cyfxbulk.c中修改以下部分
static uint8_t cypressUsbProductString[] = "Cypress FX3 USB 123 Device";

// 或使用Unicode宏(部分SDK版本可能需要)
static uint8_t cypressUsbProductString[] = L"Cypress FX3 USB 123 Device";

通过以上步骤,即可自定义FX3在设备管理器中显示的名称。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分