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

    文章

    5926

    浏览量

    179564
  • OTP
    OTP
    +关注

    关注

    4

    文章

    237

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

    一次性编程OTP)非易失性存储器问世已久。与其他非易失存储技术相比,OTP的占用面积更小,且无需额外的制造工序,因此成为存储启动代码、
    的头像 发表于 10-21 10:38 1293次阅读
    <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 943次阅读

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

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

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

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

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

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

    一次性使用心电电极片性能测试 深圳

    一次性使用心电电极片性能测试 :YICE0196 心电电极电性能测试仪、 心电电极电性能测试仪(SEAM) 心电电极性能测试仪
    的头像 发表于 03-19 11:27 1114次阅读
    <b class='flag-5'>一次性</b>使用心电电极片性能测试 深圳<b class='flag-5'>一</b>测

    欧度MEDI-SNAP一次性医用插头发布

    欧度MEDI-SNAP一次性医用插头产品组加入新成员啦!为满足一次性内窥镜、一次性手术消融刀等设备中的耗材需求,欧度将ODU MEDI-SNAP一次性医用插头的锁定方式扩展为插拔自锁和
    的头像 发表于 02-21 16:00 900次阅读

    ER34615 14.4V 57000mAh 一次性锂亚硫酰氯锂离子电池 物联网用

    ,不妨考虑 ER34615 14.4V 57000mAh 一次性锂亚硫酰氯锂离子电池,它可能会成为你项目成功的关键助力。
    的头像 发表于 02-13 15:46 739次阅读
    ER34615 14.4V 57000mAh <b class='flag-5'>一次性</b>锂亚硫酰氯锂离子电池 物联网用

    Nordic推出nPM2100 PMIC,延长一次性电池工作时间

    和多种节能功能,有效管理能源资源,从而显著延长了一次性原电池(非充电电池)在各类应用中的工作时间。 nPM2100 PMIC专为那些依赖一次性电池供电的设备而设计,如无线鼠标和键盘、消费资产跟踪器、遥控器以及随身医疗设备等。这些设备通常要求长时间运行,而电池更换却可能带来
    的头像 发表于 02-12 14:15 778次阅读

    Nordic发布nPM2100 PMIC,延长一次性电池工作时间

    效的升压稳压器和系列节能功能,实现了对能源资源的精细管理,从而显著延长了一次性(非充电)电池在各类应用中的使用时间。 nPM2100 PMIC的推出,无疑为无线鼠标、键盘、消费资产跟踪设备、遥控器以及随身医疗设备等提供了更为持久的电力支持。这些设备在日常使用中频繁依赖于
    的头像 发表于 01-24 15:47 938次阅读

    长光辰芯发布首款一次性医疗内窥镜CMOS图像传感器

    近期,长光辰芯在医疗影像领域迈出了重要步,正式发布了其最新研发的面向一次性医疗内窥镜的CMOS图像传感器及其光学模组——GXS1508/GXSM1508。 这款创新产品的推出,不仅标志着长光辰芯在
    的头像 发表于 01-23 14:16 1228次阅读

    一次性锂电池为什么不能充电?文讲清!

    一次性锂电池不能充电,是由它的正负极材料、电解液等决定的。虽然它不能充电,但在某些场景下,还是有着不可替代的作用。希望通过这篇文章,能让大家对一次性锂电池有更深入的了解,以后在生活中使用的时候,也能更安全、更环保。
    的头像 发表于 01-23 14:11 2384次阅读
    <b class='flag-5'>一次性</b>锂电池为什么不能充电?<b class='flag-5'>一</b>文讲清!

    一次性锂电池为何不能充电?文带你了解

    一次性锂电池由于其电极材料、电解质特性以及结构设计等方面的原因,决定了它不能像可充电锂电池那样进行充电。我们在使用电池时,定要严格按照电池的类型和使用说明来操作,避免因不当使用带来的安全隐患。如果大家还有关于电池的其他问题,欢迎在评论区留言讨论。
    的头像 发表于 01-20 14:27 2389次阅读
    <b class='flag-5'>一次性</b>锂电池为何不能充电?<b class='flag-5'>一</b>文带你了解