完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1. 问题:根据WCH其它型号芯片的经验,CHIP_ID应该返回CH5XX的后两位,这里应该为55。
实测:读取CHIP_ID寄存器,得到的是56。 2. 问题:CH555芯片资料显示,ROM_STATUS寄存器在Flash操作成功后应该返回0xC0。 实测:以4 字节为单位读取ReadOnly 只读信息区域,操作成功后ROM_STATUS返回的是0x00。 // 测试代码 ROM_ADDR_L = 0x10;// 读芯片唯一ID码 ROM_ADDR_H = 0x00; ROM_CTRL = 0x8D; if (ROM_STATUS) // 检查返回操作结果(这里读取成功会0x00) { 返回 ROM_STATUS;// 返回错误代码 } 3. 问题:CH555芯片资料显示,ROM_STATUS寄存器在Flash操作成功后应该返回0xC0。 实测:单字节写flash-ROM,操作成功后ROM_STATUS返回的是0x40。 注意:单字节写flash-ROM,操作成功后ROM_ADDR会自动+1,这点芯片资料没提到。 // 测试代码 // 测试用数据 UINT8X 测试数据[4] = {1,2,3,4}; UINT8D i = 0; UINT8D 长度 = 4; //关闭Flash写保护 SAFE_MOD = 0x55; SAFE_MOD = 0xAA; GLOBAL_CFG |= bCODE_WE | bDATA_WE; // 设置CodeFlash操作地址 ROM_ADDR_L = 0x00;//写入地址低位 ROM_ADDR_H = 0xF0;//写入地址高位 // 写入CodeFlash数据 对于 (i = 0; i != 长度; ++i) { ROM_BUF_MOD = 0x80;// 选择单字节编程模式 ROM_DAT_BUF = 测试数据;// 将数据写入缓冲资金 ROM_CTRL = ROM_CMD_PROG;// 执行Flash写入操作(注:操作成功后ROM_ADDR会自动+1) if (ROM_STATUS != 0x40) // 检查操作结果(注:芯片数据有误,这里操作成功会返回0x40) { 返回 ROM_STATUS;// 返回错误代码 } //++ROM_ADDR; // 写入成功后地址+1 } // 启用Flash写保护 SAFE_MOD = 0x55; SAFE_MOD = 0xAA; GLOBAL_CFG &= ~(bCODE_WE | bDATA_WE); |
|
相关推荐
6个回答
|
|
如果 id 为 0x56,则它实际上可能是 CH556 或源自 CH556。可能这些芯片共享相同的硅片。我们已经看到了 CH551、CH552、CH553 和 CH554。他们都使用相同的硅,似乎 CH553 从未投入生产。
if (ROM_STATUS !=0x40) 似乎只是一个错误 if (ROM_STATUS & 0x40) 中断;//打破循环设置保护 Flash 操作似乎与 CH556/7 和 CH548/9 相同,您应该检查那些 evt 示例。 单字节刷写需要在 reg ROM_BUF_MODE 中设置 bROM_BUF_BYTE |
|
|
|
chip_id 解决芯片型号,注意看一下手上芯片是ch555还是ch556。至于2和问题3,flash时,特别是涉及到进入安全模式的操作时,注意看一下编译器的优化等级,不能是最高优化等级9,否则会优化掉safemod的操作。
|
|
|
|
@Melodyy 请注意看题目,这些内容都是实测验证出来的。
|
|
|
|
你好,关于问题1,CH555的手册上明确表示CHIP_ID复位值为56H,这个跟之前的使用习惯不太一样,容易造成误解,需要注意一下。
至于问题2跟问题3,对FLASH的读写返回的ROM_STATUS状态值主要关心该寄存器的第一位、第六位即可。 |
|
|
|
@wangyy 感谢解惑!
只是为了方便的性质,请把手机贴上标签的性质,表示很重要 如果能够保证能保留位的价值,或者可以为 10 556的CH555和CH556的CH556的CH556H,那么如何从软件上另辟蹊径呢? |
|
|
|
在8位单片中,CHIP_ID的数字就8位,MCU型号就自然会重。ID的作用是在同芯片中使用ID来做其他的。但是CH555和CH556型号数字距离,但是USB很差大,是完全不同的,不会混的。所以就没有必要在软件上用另外两个芯片来代替。
|
|
|
|
只有小组成员才能发言,加入小组>>
516 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2901 浏览 2 评论
2396 浏览 1 评论
860浏览 2评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
402浏览 1评论
678浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
412浏览 1评论
511浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 20:23 , Processed in 1.082387 second(s), Total 87, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号