RegConfigViz 寄存器可视化编辑工具

在接触一个新的IC的时候,如果没有demo,需要根据数据手册逐个寄存器配置,一边比对,一边敲代码不太优雅和直观,于是弄了这个支线项目。通过可视化的方式编辑寄存器各个位的值,可以根据需要生成代码,使得配置工作更加直观高效。

💡 目前支持8bit类型的寄存器,后续会支持32bit的版本

打开工具后可以看到如上页面,需要点击「导入新芯片」导入数据手册才能使用。

寄存器配置文件说明

数据手册的格式如下,是一个JSON文件。

总体是一个数组,里面的对象是每个寄存器。

  • name:寄存器名称,建议用英文;
  • description:寄存器描述,详细描述这个寄存器的功能;
  • address:寄存器地址,字符串格式,支持0xFF0b00001111等表述方式;
  • resetValue:默认值,同样支持上述写法。
  • bits:各个位的定义,数组结构。从高位开始写(也就是说寄存器的高位对应于这里数组的低位),具体的组成结合具体的例子描述。
    • isDummy:表示这一个/几个位有无定义,无定义/占位的设置成true,否则设置成false
    • width:位宽,表示这个对象描述几个位,比如下面的例子中,前4个位没有定义,就设置了width为4的isDummy,注意总的width保持为8,以防止出现错乱
    • name:该位的功能名称
    • description:功能的描述,十分建议把该位不同的数值定义的功能也填进去。这样在设置的时候就不用翻datasheet了。可以用\n进行换行,增强可读性。

如果数据手册里的寄存器描述如下图:

那么它的配置文件如下:

[
  {
    "name": "REG1",
    "description": "这是第一个寄存器",
    "address": "0x01",
    "resetValue": "0x11",
    "bits": [
      {
        "isDummy": true,
        "width": 4
      },
      {
        "isDummy": false,
        "name": "ADC",
        "description": "ADC 转换模式 \n 0: 连续转换。\n 1: 单次转换。",
        "width": 1
      },
      {
        "isDummy": false,
        "name": "OSR",
        "description": "0:Fmodclk/4096 \n 1:Fmodclk/2048 \n 2:Fmodclk/1024 \n 3:Fmodclk/512 \n 4:Fmodclk/256 \n 5:Fmodclk/128 \n 6:Fmodclk/64 \n 7:Fmodclk/32",
        "width": 3
      }
    ]
  },
  {
    "name": "REG2",
    "description": "这是第2个寄存器",
    "address": "0x02",
    "resetValue": "0xAA",
    "bits": [
      {
        "isDummy": true,
        "width": 1
      },
      {
        "isDummy": false,
        "name": "CURRENT",
        "description": "设置电流大小 \n 0: 5nA\n 1: 10nA\n 2: 25nA\n 3: 50nA\n 4: 100nA",
        "width": 3
      },
      {
        "isDummy": false,
        "name": "THRESHOLD",
        "description": "设置阈值",
        "width": 4
      }
    ]
  }
]

可能有人会觉得生成这个配置文件太麻烦了,不够优雅。

🙋🏻 目前来说,确实不太优雅,但是可以用chatgpt、poe、豆包等AI工具,让它生成即可。参考话术:

【上传datasheet】

【复制JSON模板】

参考上述格式,根据PDF的内容,帮我生成XXXX的。

要求:高位在bits数组的前面

然后再人工核对!!!

具体使用

导入模板后会显示下列界面。

左侧分栏

  • 依次为「寄存器名称」、「当前值」、「寄存器地址」。鼠标放到寄存器名称上的时候能显示具体的描述。
  • 双击「当前值」、「地址」可以复制当前的值。
  • 当「当前值」与「复位值」不一致时,会以绿色高亮显示。

寄存器位

  • 未定义的会显示成 N/A ,但同时也支持修改该位。
  • 多位一起定义一个功能的时候,会使用蓝色背景。一位的会使用绿色/红色分别表示1和0。
  • 单击一次会增加1
  • 双击可以打开详情窗口,在该窗口会有详细的定义,并且可以通过输入的方式修改该值。
  • 上述的修改都会保存到缓存中,即使刷新和关闭浏览器也不会丢失。
  • 鼠标放到名称上也会显示详细的定义。

右侧分栏

  • 显示复位值,以及复位该寄存器。双击可以复制复位值。

侧边栏

侧边栏按钮功能如上。

  • 导入新IC:单击可以打开JSON模板文件,注意此操作会覆盖原有数据。
  • 将当前工作区数据保存到文件:会把工作区的数据导出到文件,下载为JSON文件。该文件会包括修改后的寄存器值,并且会对数据进行HASH检验,一定程度上防止篡改。
  • 加载历史数据:可以将上面下载的JSON文件导入到工作区,注意此操作会覆盖原有数据。
  • 重置所有寄存器:将所有寄存器设置为reset value。
  • 清除缓存:会把缓存清空,注意此操作不可逆。

代码生成功能

  1. 把当前工作区的寄存器值导出为代码格式。
  2. 文件名中的@DATETIME[params]@是当前的时间变量,params对应于dayjs的format的参数,详情请查阅 Day.js文档
  3. 寄存器中可以使用给出的变量,在生成的时候会自动替换成对应的值。该变量在头部和脚部中不生效。
  4. 对于当前的导出设置,可以把它保存为JSON模板文件,下次可以直接调用。
  5. 此部分不会保存到缓存当中,刷新后会丢失,请注意保存。
  6. 需要选择对应的寄存器才会生成代码,可以手动选择,也可选择与默认值不同的寄存器。
  7. 支持导出到文件或直接复制到剪贴板。

项目使用了 ZeoSeven™ Fonts字图 CDN CDN提供字体

此页面可能更新不及时,最新版请访问GitHub/Gitee仓库查阅

GitHub|Gitee|Mail

暂无评论

发送评论 编辑评论


				
上一篇
下一篇