FT5316DME空片通过i2c烧录固件
arduino吧
全部回复
仅看楼主
level 5
哦想哦 楼主
FT5316DME 是空白芯片(全新未烧录),在 I2C 总线上能正常应答地址 0x38(i2cdetect -y 1 可见),但所有寄存器通过 i2cget/i2ctransfer 读取均返回 0x00。
烧录时: 1. Chip ID 被强制为 0x0A(FT5x16),否则自动读取返回 0
2. Firmware version 读取返回 0
3. ft5x06_init_upgrade() 中,Reset CTPM(写 AA→0xFC,延时,写 55→0xFC)和 Enter upgrade mode(写 0x55 0xAA)的 I2C 写入不报错
4. 但 ft5x06_read_id() 读取寄存器 0x90 始终返回 0, 0(期望值 0x79, 0x07)
5. READ-ID 失败 30 次后,工具仍然继续执行 Erase + Write firmware + ECC 校验
6. ECC 校验失败(芯片返回 00,期望 0xD5) 7. 最终工具报告 SUCCESS(因代码中错误路径被注释掉),但 i2cget -y 1 0x38 0xa6 仍返回 0x00,固件未写入
已尝试的措施(均无效): - 强制 chip ID -c 0x0A(默认方式) - 强制 chip ID -c 0x54(触发 HID-to-I2C 转换路径)—— 段错误 - GPIO4 硬件复位脉冲(拉低 50ms/100ms/500ms/1s 后拉高)再烧录 - 修改源码让 FT5x16 走 HID-to-I2C 转换路径 —— READ-ID 仍失败 - 去掉 -c 参数让工具自动检测 —— chip ID 读回 0,段错误 - i2cset/i2cget SMBus 协议写寄存器 —— 读回始终 0x00 - i2ctransfer raw I2C 写 4 读 2 —— 始终返回 0
核心疑问: 1. FT5316DME 空白芯片(无出厂固件)的 ROM bootloader 是否会自动启动?如果会,bootloader 的 I2C 通信协议和正常模式是否不同? 2. FT5x16(chip ID 0x0A)的 bootloader READ-ID 是否确实是 0x79/0x07?还是有其他值? 3. 是否需要特殊的硬件复位时序或上电时序才能激活 bootloader? 4. 该芯片是否必须使用 Focaltech 内部烧录工具才能首次编程?
2026年08月08日 11点08分 1
吧务
level 8
空片 I2C 能应答但寄存器全 0,说明芯片活着但确实没固件。FT5x16 首次烧录一般需要 FocalTech 原厂工具或专用烧录器,I2C 升级协议和正常通信模式不同。建议直接找供应商要烧好固件的样片,或索要原厂烧录文档。
2026年08月11日 14点08分 2
1