收到退回的E508RET6故障芯片,把测试过程记录了一下,碰到同样问题可以参考。
- 先打开一个E50x的keil5工程,选择芯片E508,选择启动文件startup_GD32E508.s,JLINK连机,弹出下面窗口时,选择Cortex-M33,能找到芯片ID,连机正常。
2. 点击download,下载不成功。
3. 点Erase,显示擦除成功,就是下载不进去程序。
4. 打开J-Flash,选E508,连机正常。
①readback-> entire chip,回读显示有数据,说明keil5里面没有擦除成功。
②用Jflash里面的Erase chip擦除试一下,也是显示擦除成功,但是回读仍然有数据,没有变化。
5.尝试用GD32AllInOneProgrammer通过串口看看能不能擦除,显示有写保护。
6.如何去除写保护呢
①读取选项字节,显示0x1ffff808,0x1ffff80a,0x1ffff80c都是0,即WP[23:0]为0,页擦除/编程保护值的0到23位都是0,的确是保护生效。现在要把00擦除掉,去除写保护。
②根据GD32E50x用户手册描述,选项字节擦除过程如下所示。
a. 确保FMC_CTL寄存器不处于锁定状态;
b.检查FMC_STAT寄存器的BUSY位来判定闪存是否正处于擦写访问状态,若BUSY位为1,
则需等待该操作结束,BUSY位变为0;
c. 解锁FMC_CTL寄存器的选项字节操作位;
d. 等待FMC_CTL寄存器的OBWEN位置1;
e.置位FMC_CTL寄存器的OBER位;
f. 通过将FMC_CTL寄存器的START位置1来发送选项字节擦除命令到FMC;
g. 等待擦除指令执行完毕,FMC_STAT寄存器的BUSY位清0;
h. 如果需要,读并验证是否擦除成功。
解锁FMC_CTL寄存器的LK位是向FMC_KEY寄 存器写入0x45670123和0xCDEF89AB,解锁FMC_CTL寄存器的OBPG和OBER位也是向FMC_KEY寄 存器写入0x45670123和0xCDEF89AB.
7.反复按上面的操作,选项字节擦除都没有成功,没找到原因,用E507的开发板测试一下。
8.发现开发板选项字节的擦除和写入都没有问题,操作步聚都一样,为什么开发板可以,自己搭的板就不行呢。会不会是开发板连JLINK的排线不一样,把开发板连JLINK的排线换成普通的杜邦线试一下,果然选项字节擦除就不了了,结果如下。
测试发现,按图1的接线,选项字节擦除不能成功,图2选项字节可以正常擦除,但是图1图2接线jlink仿真调试都没有问题。