0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

第三十三章 OTP——一次性编程区域读写

W55MH32 来源:W55MH32 作者:W55MH32 2025-07-01 16:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单芯片解决方案,开启全新体验——W55MH32高性能以太网单片机

W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm® Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数据处理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP协议栈、内置MAC以及PHY,拥有独立的32KB以太网收发缓存,可供8个独立硬件socket使用。如此配置,真正实现了All-in-One解决方案,为开发者提供极大便利。

在封装规格上,W55MH32提供了两种选择:QFN100和QFN68。

W55MH32L采用QFN100封装版本,尺寸为12x12mm,其资源丰富,专为各种复杂工控场景设计。它拥有66个GPIO、3个ADC、12通道DMA、17个定时器、2个I2C、5个串口、2个SPI接口(其中1个带I2S接口复用)、1个CAN、1个USB2.0以及1个SDIO接口。如此丰富的外设资源,能够轻松应对工业控制中多样化的连接需求,无论是与各类传感器、执行器的通信,还是对复杂工业协议的支持,都能游刃有余,成为复杂工控领域的理想选择。同系列还有QFN68封装的W55MH32Q版本,该版本体积更小,仅为8x8mm,成本低,适合集成度高的网关模组等场景,软件使用方法一致。更多信息和资料请进入http://www.w5500.com/网站或者私信获取。

此外,本W55MH32支持硬件加密算法单元,WIZnet还推出TOE+SSL应用,涵盖TCP SSL、HTTP SSL以及 MQTT SSL等,为网络通信安全再添保障。

为助力开发者快速上手与深入开发,基于W55MH32L这颗芯片,WIZnet精心打造了配套开发板。开发板集成WIZ-Link芯片,借助一根USB C口数据线,就能轻松实现调试、下载以及串口打印日志等功能。开发板将所有外设全部引出,拓展功能也大幅提升,便于开发者全面评估芯片性能。

若您想获取芯片和开发板的更多详细信息,包括产品特性、技术参数以及价格等,欢迎访问官方网页:http://www.w5500.com/,我们期待与您共同探索W55MH32的无限可能。

wKgZPGhjkceAQighABA5X7BENG0290.png

第三十三章 OTP——一次性编程区域读写

W55MH32的OTP(One-Time Programmable,一次性可编程存储器)是芯片内部一种特殊的非易失性存储区域,主要用于存储需要一次性写入且不可擦除的关键数据。以下从功能特性、典型应用、程序设计及注意事项等方面展开详解:

1OTP功能特性

1.1非易失性

OTP存储的数据在芯片掉电后仍可保留,无需额外电源维持,与Flash、EEPROM类似。

1.2一次性写入限制

W55MH32的OTP区域仅允许每个存储单元(通常为位或字节)写入一次(部分型号支持按块/页写入,但整体仍为一次性)。写入后无法擦除或覆盖,因此写入前需确保数据准确性。

1.3物理保护机制

OTP的写入通常通过熔断(Fuse)或特殊工艺实现(如反熔丝)。写入操作会永久改变存储单元的物理状态(如熔断金属连线),从而保证数据不可篡改。

W55MH32为反熔丝工艺型OTP,即具有“只能写1(将未编程的0变为1)、不能写0(已编程的1无法恢复为0)”的特性。

反熔丝OTP原理如下:

初始状态(未编程):存储单元为逻辑0(如反熔丝未击穿,等效高阻或电容,代表0)。

编程时:施加高电压击穿反熔丝,单元变为逻辑1(等效低阻,代表1),且一旦编程(写1),无法逆向恢复为0(物理结构不可逆)。

与熔丝型OTP对比

熔丝型:初始为1(熔丝未熔断),编程时熔断熔丝,单元变为0(只能写0,不能写1)。

反熔丝型:初始为0,编程后为1(只能写1,不能写0),符合“写1不可逆”的描述。

1.4访问权限控制

W55MH32的OTP区域支持写保护(通过寄存器锁存),需通过特定指令(写入解锁密钥)才能开启写入权限,防止误操作。

2应用场景

OTP的“一次性写入+非易失”特性使其适用于以下场景:

2.1唯一标识符(UID)存储

芯片出厂时,厂商可能通过OTP写入全局唯一的设备ID(如96位或更长),用于产品追溯、防伪或加密认证(如作为AES密钥的种子)。

2.2校准参数存储

传感器或模拟模块(如ADC、DAC)的校准数据(如偏移量、增益系数)需在出厂前通过测试设备写入OTP,避免因Flash擦写次数限制导致数据丢失。

2.3安全密钥存储

用于存储加密密钥(如AES-128/256密钥、HMAC密钥)或安全配置(如禁止JTAG调试的锁定位)。由于OTP不可擦除,即使芯片被物理攻击,密钥也难以被篡改或窃取。

2.4客户定制化数据

设备制造商可在生产阶段写入客户定制信息(如硬件版本、区域配置),避免后续软件修改带来的成本。

3注意事项

3.1写入次数限制

OTP的每个存储单元仅允许写入一次(支持按位写入,但同一位多次写入会被视为“0→1”的单向操作)。若尝试重复写入同一地址,可能导致数据错误或硬件锁死。

3.2电压与时序要求

OTP的写入需要稳定的电源(通常需满足芯片手册规定的最小电压,如2.7V~3.6V),且写入时序需严格遵循数据手册(如写入脉冲宽度、地址建立时间)。

3.3安全风险

部分OTP区域可能与芯片的安全机制(如读保护、调试接口锁定)关联。错误写入可能导致芯片无法调试或功能失效,需谨慎操作。

4程序设计

以下为OTP例程的程序设计流程:

4.1OTP上电

在使用OTP模块前我们需要为其提供稳定的工作电源,通过配置系统时钟、解锁保护机制,并设置低压差稳压器(LDO)的启动时间,确保OTP在操作(如写入熔断)时电源满足要求。主要通过OTP_PowerOn()函数来实现,内容如下:

void OTP_PowerOn(uint32_tTime)
{
  RCC->RCC_SYSCFG_CONFIG=0x01;
  SYSCFG->SYSCFG_LOCK=0xAB12DFCD;
  if(Time> OTP_POWERON_TIME)
  {
  OTP->OTP_LDO=Time;
  }
  else
  {
  OTP->OTP_LDO= OTP_POWERON_TIME;
  }
}

OTP_PowerOn()函数是OTP模块的电源初始化函数,主要用于配置OTP的供电时序以确保其稳定工作:首先通过RCC->RCC_SYSCFG_CONFIG=0x01启用SYSCFG模块时钟,为后续配置提供基础;接着向SYSCFG->SYSCFG_LOCK写入解锁密钥0xAB12DFCD解除保护,允许修改OTP电源参数;最后根据输入的Time配置OTP的LDO(低压差稳压器)启动时间——若Time大于预设的最小启动时间OTP_POWERON_TIME,则使用Time,否则强制使用最小值,以此平衡供电稳定性与效率,避免因电源波动或启动时间不足导致OTP操作(如写入熔断)失败。

4.2设置时间基准

OTP_SetTime()函数为OTP的写入(熔断或反熔丝)提供精确的控制电压施加的时间:

void OTP_SetTime(uint16_tTime)
{
  OTP->OTP_10ns|=Time;
}

OTP_SetTime()函数通过将输入的Time参数按位或到OTP_10ns寄存器,以10纳秒为单位叠加配置OTP操作的时间参数(如写入脉冲宽度),确保电压/电流施加时间满足OTP物理状态改变的要求,从而保证数据写入的可靠性。该设计兼顾了时间配置的灵活性与安全性,允许开发者根据实际需求动态调整关键时序。

4.3写入数据

OTP_WriteByte()函数用于向OTP指定地址写入一个字节的数据,内容如下:

void OTP_WriteByte(uint8_tAddr,uint8_tData)
{
  assert_param(IS_OTP_ADDRESS(Addr));
  
  OTP->OTP_WR=(Addr< < 8) | Data;
          OTP- >OTP_CTRL= BIT(0);
  while(OTP->OTP_CTRL& BIT(2));
}

OTP_WriteByte()函数通过“地址验证→数据装载→触发写入→等待完成”的闭环流程,实现了向OTP指定地址写入一个字节数据的功能。其核心是通过操作OTP模块的寄存器,与硬件协同完成存储单元的物理状态修改,确保数据的一次性可靠写入。

4.4OTP断电

OTP_PowerOff()函数用于关闭OTP模块的工作电源或使其进入低功耗模式,通常在OTP操作完成后调用,以降低系统功耗或防止意外写入。其核心逻辑是通过解锁保护寄存器并禁用相关时钟,切断OTP模块的供电或配置其进入休眠状态。函数内容如下:

void OTP_PowerOff(void)
{
  SYSCFG->SYSCFG_LOCK=0xAB12DFCD;
  RCC->RCC_SYSCFG_CONFIG=0x00;
}

函数首先向SYSCFG_LOCK写入解锁密钥以解除保护,然后通过RCC_SYSCFG_CONFIG禁用SYSCFG时钟,最终切断OTP的供电或使其进入休眠状态。

4.5主函数main()

主函数main()如下:

int main(void)
{
    RCC_ClocksTypeDef clocks;
 
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
    delay_init();
    UART_Configuration(115200);
    RCC_GetClocksFreq(&clocks);
 
    printf("n");
    printf("SYSCLK: %3.1fMhz, HCLK: %3.1fMhz, PCLK1: %3.1fMhz, PCLK2: %3.1fMhz, ADCCLK: %3.1fMhzn",
           (float)clocks.SYSCLK_Frequency /1000000,(float)clocks.HCLK_Frequency/1000000,
           (float)clocks.PCLK1_Frequency /1000000,(float)clocks.PCLK2_Frequency/1000000,(float)clocks.ADCCLK_Frequency/1000000);
 
    printf("OTP Write Read Test.n");
 
    OTP_PowerOn(clocks.PCLK2_Frequency /10);     //100ms
    OTP_SetTime(clocks.PCLK2_Frequency /1000000);//1us
 
    OTP_WriteByte(OTP_ADDRESS_0,0x5A);
 
    printf("OPT Data0 : 0x%xn", OTP->OTP_DATA0);
    printf("OPT Data1 : 0x%xn", OTP->OTP_DATA1);
    printf("OPT Data2 : 0x%xn", OTP->OTP_DATA2);
    printf("OPT Data3 : 0x%xn", OTP->OTP_DATA3);
    printf("OPT Data4 : 0x%xn", OTP->OTP_DATA4);
    printf("OPT Data5 : 0x%xn", OTP->OTP_DATA5);
    printf("OPT Data6 : 0x%xn", OTP->OTP_DATA6);
    printf("OPT Data7 : 0x%xn", OTP->OTP_DATA7);
 
    OTP_PowerOff();
    while(1);
}

程序首先初始化系统时钟(启用PWR和BKP外设时钟)、延时函数及串口(波特率115200),并通过RCC_GetClocksFreq获取系统各时钟频率(如SYSCLK、PCLK2等),打印验证时钟配置;接着启动OTP电源(OTP_PowerOn,基于PCLK2频率配置100ms启动时间)、设置OTP写入时序(OTP_SetTime,基于PCLK2频率配置1μs时间参数),向OTP的0号地址写入数据0x5A;随后读取并打印OTP的8个数据寄存器(DATA0~DATA7),验证写入是否成功;最后关闭OTP电源(OTP_PowerOff)以降低功耗,进入无限循环保持运行。

整体通过初始化、时钟验证、OTP配置、写入-读取验证及电源管理,完成对OTP功能的测试。

5下载验证

程序下载运行后,串口输出显示系统时钟(如SYSCLK 72MHz)配置正常,OTP测试中地址0(DATA0)写入0x5A成功,其余地址为默认0x0,验证了OTP写入和读取功能功能:

wKgZPGhjlTOAHvxxAAMU7Q2JSHc600.png

6总结

W55MH32的OTP是一种专为“一次性关键数据存储”设计的非易失性存储器,其核心价值在于数据的不可篡改性。在实际应用中,需结合芯片型号的数据手册,严格遵循写入流程,确保数据的准确性和可靠性。

WIZnet是一家无晶圆厂半导体公司,成立于1998年。产品包括互联网处理器iMCU™,它采用TOE(TCP/IP卸载引擎)技术,基于独特的专利全硬连线TCP/IP。iMCU™面向各种应用中的嵌入式互联网设备。

WIZnet在全球拥有70多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。

香港办事处管理的区域包括:澳大利亚、印度、土耳其、亚洲(韩国和日本除外)。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    41

    文章

    6159

    浏览量

    181512
  • OTP
    OTP
    +关注

    关注

    4

    文章

    246

    浏览量

    49712
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MAX5527/MAX5528/MAX5529:一次性编程线性渐变数字电位器解析

    MAX5527/MAX5528/MAX5529:一次性编程线性渐变数字电位器解析 在电子设计领域,数字电位器的应用日益广泛,它为电路设计带来了更高的灵活性和可编程。今天,我们将深入
    的头像 发表于 04-18 11:45 158次阅读

    CAT5126:一次性数字可编程32抽头电位器的深度剖析

    CAT5126:一次性数字可编程32抽头电位器的深度剖析 在电子设计领域,数字可编程电位器是个关键组件,能为电路带来更高的灵活性和可配置
    的头像 发表于 04-10 16:15 151次阅读

    深度解析 Z8E000 Z8PLUS 一次性编程微控制器

    深度解析 Z8E000 Z8PLUS 一次性编程微控制器 引言 在电子设计领域,微控制器扮演着至关重要的角色。ZiLOG 的 Z8E000 Z8PLUS 一次性编程微控制器,以其丰
    的头像 发表于 04-04 13:15 587次阅读

    亚太地区首家一次性通过!中移芯昇eSIM平台获GSMA认证

    近日,中移芯昇自主研发的eSIM连接管理平台成功通过全球移动通信协会(GSMA)SAS-SM权威审核并获得认证证书。本次审核全程零不符合项(零NC项),一次性顺利通过,使得中移芯昇成为亚太地区首家
    的头像 发表于 03-09 17:06 1003次阅读
    亚太地区首家<b class='flag-5'>一次性</b>通过!中移芯昇eSIM平台获GSMA认证

    智能手环做 FCC ID 认证要哪些资料?一次性准备清单

    上取决于资料准备是否完整、规范。本文从企业实操角度,系统整理智能手环申请 FCC ID 认证所需的全部资料清单,帮助你一次性准备到位。
    的头像 发表于 02-05 16:08 271次阅读
    智能手环做 FCC ID 认证要哪些资料?<b class='flag-5'>一次性</b>准备清单

    搭载创飞芯CFX OTP IP晶圆量产数量突破100万片

    国内领先的站式非易失存储 IP 供应商珠海创飞芯科技有限公司(以下简称 “创飞芯”)今日宣布,其自主研发的系列 OTP一次性编程)IP 核搭载晶圆累计量产规模已超过 100 万片
    的头像 发表于 02-05 15:36 372次阅读

    一次写入,永久锁定!OTP存储操作需谨慎

    今天,我们起来聊聊LuatOS中的OTP功能。 OTP(One-Time Programmable Memory) 是一次性编程存储。其
    的头像 发表于 01-27 17:52 1228次阅读
    <b class='flag-5'>一次</b>写入,永久锁定!<b class='flag-5'>OTP</b>存储操作需谨慎

    从共识到共行:拓普联科关于“一次性做好”的团队心智集结

    从共识到共行:拓普联科关于“一次性做好”的团队心智集结12月20日下午,拓普联科VIP会议中心内灯火通明,气氛热烈。肖岚董事长步履沉稳地走向讲台,面对台下两百余位汇聚堂的干部与员工,场以“团队
    的头像 发表于 12-29 10:34 5176次阅读
    从共识到共行:拓普联科关于“<b class='flag-5'>一次性</b>做好”的团队心智集结

    2026寒假第三十三届全国高校具身智能机器人与嵌入式Linux高级师资培训通知

    2026寒假第三十三届全国高校具身智能机器人与嵌入式Linux高级师资培训通知
    的头像 发表于 12-04 11:23 444次阅读
    2026寒假<b class='flag-5'>第三十三</b>届全国高校具身智能机器人与嵌入式Linux高级师资培训通知

    OTP存储器在AI时代的关键作用

    一次性编程OTP)非易失性存储器问世已久。与其他非易失存储技术相比,OTP的占用面积更小,且无需额外的制造工序,因此成为存储启动代码、
    的头像 发表于 10-21 10:38 1886次阅读
    <b class='flag-5'>OTP</b>存储器在AI时代的关键作用

    bootloader和APP烧录,能不能一次性分别烧录到对应的位置?

    目前我是用STM32 ST-LINK Utility将bootloader和APP分别下载到对应的地址分区,那么各位有什么更好的办法可以一次性的将这两个文件烧录? 主要是解决量产的问题,我也想找对应的DLL库自己开发个上位机软件来解决这个问题,但是并没有找到有效的API
    发表于 09-25 06:34

    地平线征程6B一次性成功点亮

    近日,地平线面向入门级主动安全领域的新代车载智能计算方案——征程6B一次性成功点亮!从回片上电到1V出图仅用时23分钟,征程6B再次刷新智驾计算方案点亮的行业速度!自2024年发布以来,地平线征程
    的头像 发表于 07-16 17:35 1275次阅读

    新思科技先进OTP IP赋能高安全SoC设计:构建抗篡改的可靠芯片架构

    在高性能计算、边缘物联网、人工智能和云计算等应用领域,要确保先进SoC设计的安全与正确配置,一次性编程OTP)非易失内存(NVM)至
    的头像 发表于 06-03 10:41 2183次阅读
    新思科技先进<b class='flag-5'>OTP</b> IP赋能高安全<b class='flag-5'>性</b>SoC设计:构建抗篡改的可靠芯片架构

    一次性血压传感器NPC-100T:精准监测的无菌守护者

    在医疗领域,血压监测是评估患者生命体征、指导临床决策的核心环节。传统可重复使用的血压传感器虽然普及,但存在交叉感染风险、消毒成本高以及设备老化导致的精度下降等问题。一次性血压传感器NPC-100T
    的头像 发表于 05-19 13:21 728次阅读
    <b class='flag-5'>一次性</b>血压传感器NPC-100T:精准监测的无菌守护者

    PGA308 具有可编程增益和偏移的单电源自动置零传感器放大器技术手册

    ,并通过VOUT引脚对组件进行编程。增益和偏移校准参数存储在七组一次性编程OTP)存储器中。加电复位(POR)OTP存储体总共可以
    的头像 发表于 05-16 14:01 1206次阅读
    PGA308 具有可<b class='flag-5'>编程</b>增益和偏移的单电源自动置零传感器放大器技术手册