嵌入式彩屏单色字体点阵的存储结构设计

oled320_240.j2b.json

json 复制代码
{
  "remark": "彩屏上单色字体图的存储结构",
  "schema": {
    "MagicEnum:u32":{
      "0": "ascii字体图",
      "1": "hanzi字体图",
      "2": "icon图标图"
    },
    "Rgb565Color:u16":{
      "_[15:11] as red": "0;红",
      "_[10:5] as green": "1;绿",
      "_[4:0] as blue": "5;蓝"
    },
    "ZipFontImgUnit:u16;字体图片单元": {
      "_[15:12] as colorInx": "0:bit[4];颜色索引,最大16渐变色",
      "_[11:0] as repeatNum": "0:bit[12];重复次数,做多重复4095次"
    },
    "ZipIconImgUnit;图标图片单元": {
      "color": "0:Rgb565Color:u16;rgb颜色",
      "repeatNum": "0:u16;重复次数"
    },
    "UnZipAsciiHelper;Ascii解压辅助": {
      "startColumn": "0:u16;未压缩的起始列数",
      "zipAddressOffset": "0:u16;压缩后的偏移地址",
      "unZipWidth": "0:u16;未压缩每个元素宽度",
      "zipByteSize": "0:u16;压缩后每个字符byte大小"
    },
    "UnZipHanziHelper;Hanzi解压辅助": {
      "zipAddressOffset": "0:u32;压缩后的偏移地址",
      "zipByteSize": "0:u16;压缩后每个字符byte大小",
      "gbkCode": "0:u16;gbk码,图片根据gbk码升序排列"
    }
  },
  "agreement": [
    "1.暂时在spiFlash紧挨着放3个bin文件",
    "2.unZipHelper偏移地址固定",
    "3.data偏移地址是根据unZipHelper计算出的",
    "4.data的地址=&unZipHelper+sizeof(unZipHelper[0])*unZipHelper.length",
    "5.data占用的字节数=(data.length)*3"
  ],
  "colorTableContent:@0,160;单独生成colorTable.bin文件,预留10种颜色表,开机读一次": {
    "blackYellow": "0:u16[16];黑底黄字",
    "blackBlue": "0:u16[16];黑底蓝字",
    "blueWhite": "0:u16[16];蓝底白字",
    "blackGreen": "0:u16[16];黑底绿字",
    "blackRed": "0:u16[16];黑底红字"
  },
  "ascii24Content@160;单独生成ascii24Wrap.bin文件": {
    "length@0": "0:u32;总字节数",
    "magic@4": "0:MagicEnum:u32;文件类型",
    "fileName@8":"ascii24.bin:str",
    "gmtCreate@24": "0:u32;创建时间",
    "gmtModified@28": "0:u32;修改时间",
    "width@32":       "0:u16;图片宽度",
    "height@34":     "0:u16;图片高度",
    "checkSum@36":    "0:u32;校验和",
    "unZipHelper@40": "0:UnZipAsciiHelper[]",
    "data":            "0:ZipFontImgUnit[]"
  },
  "hanzi24Content@0x00004000;单独生成hanzi24Wrap.bin文件": {
    "length@0": "0:u32;总字节数",
    "magic@4": "0:MagicEnum:u32;文件类型",
    "fileName@8":"hanzi24.bin:str",
    "gmtCreate@24": "0:u32;创建时间",
    "gmtModified@28": "0:u32;修改时间",
    "width@32":       "0:u16;图片宽度",
    "height@34":     "0:u16;图片高度",
    "checkSum@36":    "0:u32;校验和",
    "unZipHelper@40": "0:UnZipHanziHelper[]",
    "data":           "0:ZipFontImgUnit[]"
  }
}
相关推荐
GeekArch18 小时前
第24讲:Vibe模式代码风格控制——适配Keil/STM32工程规范
人工智能·stm32·单片机·嵌入式硬件·mcu·决策树·ai编程
sramdram2 天前
低功耗MCU微控制器在动态血糖仪(CGM)中的应用方案
单片机·嵌入式硬件·mcu·mcu微控制器
GeekArch5 天前
第8讲:裸机单片机项目——Vibe快速迭代的最优边界
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·ai编程
GeekArch6 天前
第5讲:嵌入式场景二范式决策树:什么情况快写、什么情况严写
人工智能·stm32·单片机·mcu·物联网·决策树·机器学习
不想努力只想躺平的菜鸟ing7 天前
2. UART与TTL UART、CMOS UART、RS232、RS422、RS485、tod
mcu
wuyk55511 天前
38.什么是C语言?从语法到工程落地的工程师视角解读
c语言·开发语言·stm32·单片机·mcu·51单片机
MounRiver_Studio14 天前
RISC-V IDE MRS2调试秘籍(三):通过栈帧可视化模块定位栈溢出、栈内存非法篡改等运行时错误
mcu·risc-v·代码调试
MounRiver_Studio14 天前
RISC-V IDE MRS2调试秘籍(一):通过Memory内存导出对比,锁定隐性内存异常代码
mcu·调试技巧·risc-v·代码调试
sramdram14 天前
灵动高性能32位MCU空调解决方案
单片机·嵌入式硬件·mcu·32位mcu
sramdram16 天前
低功耗MCU芯片电机控制专用
单片机·嵌入式硬件·mcu·低功耗mcu·mcu芯片