蓝牙技术
直播中

张浩

8年用户 1205经验值
私信 关注
[问答]

CYW920822M2P4TAI040通过UART升级CYW20822不起作用是怎么回事?

CYW920822M2P4TAI040
我已按照网站上的说明进行操作https://community.infineon.com/t5/Knowledge-Base-Articles/How-to-upgrade-CYW20822-module-firmware-vi...
当我运行命令时
python ut_sysdfu_py3.py --port --rate 115200 --crc 1 --atm EZ_serial_arch_1.4.1.0.ezf --user_data_offset 0x76000 --user_data_size 0x2000 --debug_raw 1
我得到以下信息:
端口:COM8
评分:115200
CRC:1
自动柜员机:EZ_serial_arch_v1.4.1.0.ezf
应用程序箱:无
NVDS 箱:无
用户数据偏移量:0x76000
用户数据大小:0x2000
调试原始数据:1
使用传统的 atm 文件格式
串行端口已打开。
写入:2F 43 44 46 55 24 2C 4D 3D 31 0D 0A
检测到@R,000C,/CDFU$,0000
接收数据:0d0a
写入:41 54 2B 53 59 53 52 45 53 45 54 3D 30 30 0D 0A
写入:41 54 2B 53 59 53 42 44 41 44 44 52 3F 0D 0A
检测到 OK
写入:41 54 2B 53 59 53 44 41 54 41 43 48 4B 3D 37 66 36 31 36 30 66 38 30 32 62 34 37 32 62 33 66 30 34 66 64 38 30 35 35 62 35 31 63 61 32 31 0D 0A
检测到 OK
b'xc7Exf2xd3x9excaABCatmosic'
握手失败
DFU 错误:-9

有人能指出哪里出了问题吗?
我正在尝试使用模块上附带的当前软件,但我担心需要运行最新版本。我希望能够通过 UART 来更新它。 我目前无法使用 Android 手机,但如果我们在生产中使用它,我不会使用手机来更新模块。

回帖(1)

时见栖鸦

2025-7-3 18:17:01

针对您在通过UART升级CYW20822(CYW920822M2P4TAI040模块)时遇到的问题,以下是系统化的排查和解决方案:




常见问题原因及解决步骤


1. DFU模式未正确启动



  • 问题:模块未进入DFU模式时,脚本无法通信。

  • 解决方案

    • 手动进入DFU模式:

      • 将模块的 HOST_WAKE 引脚(P0)拉高(3.3V),然后复位模块(拉低 RESET 引脚再释放)。

      • 或发送DFU命令:通过串口发送 dfu 1 命令(需模块已运行支持该命令的旧固件)。


    • 验证DFU模式:成功后串口会输出DFU启动消息(如 SYSTEM ENTERS DFU MODE)。



2. 固件文件路径或名称错误



  • 问题:输出中文件名显示为 EZ_serial_arch_v1.4.1.0.ezf,但命令中写为 EZ_serial_arch_1.4.1.0.ezf(缺少 _v)。

  • 解决方案

    • 重命名文件为脚本识别的名称,或修正命令:
      python ut_sysdfu_py3.py --port COM8 --rate 115200 --crc 1 --atm EZ_serial_arch_v1.4.1.0.ezf ...



3. 硬件连接问题



  • 关键检查点

    • 串口线序:模块的 TX → 适配器的 RX,模块的 RX → 适配器的 TX,GND 相连。

    • 电压匹配:确保模块使用 3.3V 电平(5V会损坏设备)。

    • 流控引脚:若脚本要求,需连接 RTS/CTS(但大部分情况无需)。


  • 建议:使用示波器检查串口信号,或更换USB-UART适配器测试。


4. 用户数据偏移/大小错误



  • 问题:参数 --user_data_offset 0x76000--user_data_size 0x2000 需与您的固件分区严格匹配。

  • 解决方案

    • 检查固件是否包含用户数据分区(如不包含,移除这两个参数)。

    • 参考芯片手册确认闪存布局(如偏移量是否覆盖了其他分区)。



5. 脚本依赖或环境问题



  • 确认依赖安装
     pip install pyserial crcmod   # 必需库

  • Python版本:脚本 ut_sysdfu_py3.py 仅支持 Python 3.x(检查 python --version)。


6. 调试信息分析



  • 启用 --debug_raw 1 后,关注输出中的关键错误:

    • Timeout waiting for response → 连接或DFU模式问题。

    • Invalid CRC → 文件损坏或波特率不匹配。

    • File not found → 固件路径错误。


  • 建议:将完整日志上传至Infineon社区提问。




完整操作流程(核对要点)



  1. 接线:  
    Module        UART Adapter
    TX      →     RX
    RX      →     TX
    GND     →     GND
    RESET   →    可控GPIO(用于复位)
    HOST_WAKE(P0) → 3.3V(触发DFU)

  2. 进入DFU:  

    • 拉高 HOST_WAKE 引脚,复位模块(拉低 RESET 至少1ms后释放)。


  3. 运行命令:  
    python ut_sysdfu_py3.py --port COM8 --rate 115200 --crc 1 
    --atm EZ_serial_arch_v1.4.1.0.ezf
    --user_data_offset 0x76000 --user_data_size 0x2000
    --debug_raw 1

  4. 预期输出:  

    • Detected DFU device on COM8

    • Erasing flash... Writing... Verifying... Success!





高级故障排除



  • 固件兼容性

    确保 EZ_serial_arch_v1.4.1.0.ezf 是专为CYW20822编译的(而非CYW207xx等)。

  • 波特率尝试

    改用 921600 bps(某些版本DFU使用高速率):
    --rate 921600

  • 擦除全闪存(谨慎使用):

    增加 --erase_all 1 参数(可能修复分区错误)。




文档参考



若问题仍存在,请提供脚本的 完整输出日志(包括错误行),并确认模块批次(可能存在硬件差异)。

举报

更多回帖

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