
ABB SD822
公司主营:AB、ABB、GEFANUC、福克斯波罗、英维思、ICS、、本特利、西屋、巴赫曼、艾默生EPRO、施耐德莫迪康、安川、横河、博世力士乐、伍德沃德、摩托罗拉、XYCOM等PLC模块、DCS备件。ABBSD8223BSC610038R1ABBSD8223BSC610038R1ABBSD8223BSC610038R1在嵌入式微控制器应用中,通常都要用到非易失性存储器。无论是掉电时维持需要保存的设置,还是存储公司的重要记录,可靠的非易失性存储器都是现代微控制器领域的一个基本单元。非易失性存储常常采用外部串行存储器实现。多年以来,该领域用到了数十亿颗类似存储器件,它们的可靠性得到了的广泛认可。目前,存储器可以做到几百字节到1兆字节甚至更大的容量,在每一个需要保持设置的设备中,都能找到这样一个紧凑、廉价的器件。包括EEPROM、闪存和旋转式存储器在内,所有类型的非易失性存储器都面临一个共同的问题:写周期被中断时,数据会丢失。一旦在写周期执行过程中掉电,那么即使再恢复电源,也很难修复损坏的数据。本文提出了一种基于事务的提交-回退机制,用于保护一个外部串行EEPROM存储器件的内容。这些措施同样适用于大多数MAXQ微控制器的内置EEPROM。I2CEEPROM的特点串行存储器件有多种接口,但最常用的接口是I2C接口。这种总线接口有很多优点:高度标准化的接口;控制器和存储器之间只需两条线;而且具有灵活的时序要求,可以由软件驱动。一个I2C主机可以驱动很多I2C从机,从而最大程度减少了主机的引脚数。在所有EEPROM器件中,写周期都要比读周期长的多。因为在写周期过程中,电荷需要借助隧道效应并通过绝缘层进行转移,而这个过程很费时间。虽然增加电压可以加快这个过程,但是过高的电压会导致绝缘层的介质击穿,从而损坏器件。典型的EEPROM器件写周期持续10毫秒左右;而读周期通常需要几百个纳秒。为了显著缩短写周期的时间,许多I2CEEPROM器件采用页面模式。该模式允许将多个字节传送到缓存中,然后将数据一次性写入存储区。I2C存储器件的典型页面尺寸为32字节。因此,可以在一个写周期内向EEPROM填入32个字节。这一点非常重要,因为串行EEPROM器件都具有特定的耐久度:即每个页面所能承受的写周期次数上限。典型的写周期次数从10,000到1,000,000次。然而,即使存储器件能够承受1百万次写周期,软件也会很快将其损耗殆尽。软件每秒仅执行100次写周期,那么不到3个小时就会耗尽器件的写周期次数。考虑到这些基本的EEPROM特性,设计者为一个嵌入式处理器设计可靠的非易失存储系统时,需切记以下几点:不要在同一页面上反复执行写操作。尤其是不要将某个页面设置成写入任何其它页面时都要更新的“目录”。如果在写周期过程中电源被中断,必须提供以下机制:(1)检测被中断的写操作;(2)完成被中断的操作;(3)或者将事件回退至写操作之前的状态。必须通过某些数据校验机制(校验和、CRC或消息摘要)来保证数据的完整性。设计目标虽然上面提到的EEPROM问题可通过多种非易失文件系统加以解决,但这样的文件机制对于小型嵌入式微控制器来说负担过重。很多文件系统需要更多的RAM,远远超出了小型微控制器所能提供的容量,而且对于多数应用,也不需要一个完整的文件系统。考虑到这一点,下面列出了EEPROM数据保护机制的设计目标:精简:保护机制用于存储校验数据的空间不应超过EEPROM的10%,它应该只需要少量的计算开销。块大小:被保护的块大小,应该和EEPROM的写操作页面大小一样。由于EEPROM器件的页面大小通常是2的偶数次幂,因此与每个块保留1或2个字节的做法相比,相同的尺寸大小更便于软件编码。耐久性:每个保护周期不要对同一页面进行写操作。可靠性:每次掉电情况下,数据都应是可恢复的。这里提到的保护机制有6个接口函数:读、写、提交、回退、检查和清理。读函数接收一个块编号和一个指向32字节缓存的指针。如果缓存地址和块编号处于有效范围内,程序就会将指定的块数据读入缓存,并校验数据的有效性。它会返回如下状态:有效读(validread)、无效读(invalidread)、无效缓存地址(invalidbufferaddress)、无效页面编号(invalidpagenumber)或保护失败(protectionfailure)。写函数接收一个块编号和一个指向填好数据的32字节缓存的指针。如果缓存地址和块编号处于有效范围内,程序就会将数据写入非易失性缓存,并标记缓存状态以准备提交。提交和回退函数,是可以在写操作之后执行的互补型操作。提交函数将最近被写入的缓存数据复制到对应的存储区最终位置,并为下一个待写入的数据块准备好缓存结构。回退函数实际上就是一个“取消”操作。它消除最近一次写操作产生的效果,并为下一个写操作准备好缓存子系统。检查函数读取存储器件的每个数据块,并检查存储数据的有效性。该函数还检查缓存子系统,以确保没有未执行的写操作。任何无效块或未执行的写操作都会使检查函数返回一个错误状态。清理函数修复一个数据损坏的EEPROM。实际上,它将试图找出发生的错误,并采取相应的解决措施。关于这些函数的更多细节,参见下面的操作详解。EEPROM存储器结构EEPROM结构参考上面图1给出的EEPROM结构。EEPROM包含三个主要区域:主存储区:EEPROM的最大区域用于存储用户数据。在一个16kB器件内,包括512页、每页32字节的存储空间。在这样的器件中,开始的473个页面专门用来存储数据。校验存储区:EEPROM的第二个部分,用于校验主存储区每个页面的数据。校验存储区的每1页都包含15个16位的CRC值。每1页的最后1个CRC用于校验本页数据。校验存储区占用31页(从473到503页)。缓存:EEPROM的最后部分,包含由8个页面构成的4个写缓存。每个缓存包含4个域:数据域,它包含32字节数据,执行下一个提交命令时,数据将被写入主存储区;地址域,它表示缓存数据要写入的页面地址;状态域,它表示缓存的状态(包括可用(available)、占用(occupied)和终止(expired)状态);16位CRC域,用来校验整个写缓存。缓存结构见图1所示。1756-RMDCS-401-0405REV.A.1405ASGMPH-15AAA212711-M3A18L12711P-RP1E1401BE8491BGPIB-PCII/IIAISA-GPIBASSY18056-01的IEEE488.2IC693CPU323140ACI03000140ACO13000140CPS11420140CPU11303140DDI85300140DDO35300140NOE771018030-RRK-300FBM01P0400DAFBM07BCM400YHFBM09CCM400YKFBM201P0914SQFBM207BP0914WHFBM242P0916TAP0400HHP0500SRP0700HUP0916AAP0916DBP0916FHP0916JSP0916NG4320IC693ALG223DFBM01P0400DAFBM07BCM400YHFBM09CCM400YNFBM201P0914SQFBM207BP0914WHFBM242P0916TAP0400HHP0500SRP0700HUP0916AAP0916DBP0916FHP0916JSP0916NG1C31224G01EL3020B7A-R3A38-MB7AS-T6B6MDLU2021N00MICREX-FF55MICREX-F-FTLSVX5A58D33N46ES7143-3BH00-0XA0H25E-F1-SS-1024-ABZC-4469-LED-SC18-STC-PRS021MICREX-F55ETLB25-12515-032014-01直流调速1500A/690V6RA7093-4KV62-01直流调速2000A/690V6RA7095-4KV62-01A16B-1212-09506RA7093-4KV62-06RA7095-4KV62-0140CPS11420140CPS11420ER-FC-2048DHDS03.2-W100N-HA01-01-FWHSM01.1-FWSAFT-187CON1523C40025500A50031179A12CR1BV-S1479A22CR1BM-SDSAI130ADSAI146DSDI110AV1DSDO115AERN1120102401L-FWGPIB-USB-HSSIM8-OUT-NPNARS2105ARS23106SN1145-1AA01-0AA2CIMR-G7A2011CIMR-VB2A0056AEEFXA-4PAEFXA-4P-1HPEVVF-YH-4PXFR35-35TU831V11756-TBNH3HAC020466-001IC693MDL645FFR-E740TSX08CD08R6AS140ACI03000140CPU43412A140CPU43412U140CRA21120140CRA93100140CRA93200140CRP93100140CRP93200140DAI75300140DDI84100140DDO35300140DDO84300140EHC10500140XTS002001B30035H011C31129G031C31132G01MUMA042P1S+MLPET2310P6SC6100-0NA116SC6100-0NA216SC6140-0FE006SC6100-0NA116SC6100-0NA216SC6140-0FE00LSN1AAT-DIO-32HSAT-DIO-32HSNAMC-11NGDR-02NINT-43NIOC-01PP15012HS(ABBN)5APP20012HS(ABBN)5AA06B-0113-B075#00051756-IF6CISTSXP57253AT-DIO-32HSIC200ALG265IC200CBL002IC200CHS022IC200GBI001IC200PWR102IC647MPP101IC647TDV700IC660BBD024IC660BCM501IC660BLM506IC697ACC720IC697ACC724IC697BEM731IC697CHS790IC697CMM711IC697CMM742IC697CPM790IC697PWR711EC20-2012BRAEC20-4ADEC20-4DAHB4A00601756-BA21756-L62386SX-CPU3HAC12928-1386SX-CPUTSXP57253MIQDATA395TDS620BIC693MDL645FFC-9821X1C31234G01SST-PB3-CLX2711-B5A56SE9621-7DD50ZC87A06B-6090-H008DKC02.3-040-7-FW140ACI04000140CPU11303140NOE77101FVR0.1C9S-2JW-13BUJW-1PU140CPS114206FC5203-0AF05-0AB06FC5203-0AF22-0AA21756-A131756-CNB1756-ENBT1756-IB321756-IF81756-OB321756-OF41756-PB721794-IB321794-IE81794-TB21794-TB31794-TB32IC200ALG240IC200ALG320IC200EBI001IC200ERM002IC200MDL241IC200MDL742IC200PWR102T5N400R3203500/22M3500/42M3500/539200-01-05-10-001756-CNB/E1756-ENBT/A1756-L611756-PA75140CPU43412U990NAD23000UP1161EI813FF1830FTU810V1TU812V18509C1757-SRM22A-B4P5N104MDV60A0110-5A3-4-00MDD112D-N-030-N2M-130GA0A06B-0075-B503A06B-6078-K811/L-13MA06B-6127-H103A06B-6151-H045#H580SPEEDREGULATORMAXSPEED2TSX08CD08R6ASUGRMEM-02SNQ33TG-7SVE1FT5071-0AF71-11FT5102-0AG71-1MAD130D-0200-SA-M0-AG0-05-N16EV3054-OFCFBM201FBM2013951326AB-B515EM2LCIMR-G7B4015400V15KW(替代CIMR-HB4A0039FAA400V13150-MCMH-PCP-J-141-DMDLU2021N006AU1435-0AA00-0AA16ED1052-1FB00-0BA66ED1055-1FB00-0BA1140ACI03000140CPU43412A140CPU43412U140CRA93100140CRP93100140DAI75300140DDI84100140DDO35300140DDO84300140EHC10500140XTS00200170AAI03000170ADI35000170ADI74050170ADM35010170ADO74050170XTS00100ABE7-CPA01ABE7CPA02ABE7-CPA03TSXAEY1600TSXAEY800TSXASY410TSXCPP110TSXDEY16D3TSXDSY16T3TSXP571634MTSXP572634MTSXPSY2600MTSXPSY5500MTSXSCY21601TSXSCP114UM72-R-230UC/21/SO46170PNT11020990NAD21110990NAD23000990XCP98000MA-0185-100MAGELISHMIGTO6315MAGELISXBTGT2130TSXDSY16T26NH9720-3AA006NH9860-1AA006NH9910-0AA10-0AA3KSD1-08KSD1-166EP1334-2AA01DGM60-ASAKIC697BEM731531X111PSHAWG3VLT30026GK1561-1AA016ES7331-7KF02-0AB06ES7332-5HD01-0AB06ES7307-1AB01-0AA06ES7315-2AH14-0AB06ES7321-1BLOO-0AA06ES7360-3AA01-0AA06GK7342-5DA02-0XE06EP1436-3BA00MDV60A0450-503-4-00KTC-PRL133/1024416NHM30030AIN12-THK2750OUT19-THK-2754UP11851.27.P5UF/+-5C274AA24600AA0JPM864AK013BSE018161R11746-N04I1746-NR43TK2907-0BB46ES5980-OAE11BSM50GD120DN2-B10V-103-1C24-TIC3645LXCD1TXM155R-14ICDQ1756-A171756-ENBT1756-IF161756-IM16I1756-IR611756-L621756-N21756-OF81756-OW16I1756-PA721756-TBCH1783-MS10T1783-MX08T1783-SFP100FX1784-CF64EI813FFI830FS72401-NA140ACO13000140NOE77101520422000990NAD23000MA-0185-100MA-0186-1001746-0W161762-IF2OF21FT5071-0AF71-11FT5102-0AG71-151403776-100140CPU11302TWDLCAA40DRF79800DA06B-0123-B075#70001746-OW16:A02B-0259-B5016SN1145-1BA01-0BA2SONBTY801P-FBCAI810AO810V2CI840DI810DO810DO815EI803FEI813FFI820FRLM01SA801FSA811FSD802FSD822TU810V1TU8471762-IF2OF21762-OW16PS10-2T2-DD1-AD3IC660BBA020KJ3001X1-CA1KJ3002X1-BC1CIMR-M5N2015A02B-0228-B502A06B-6102-H245#H520ASX-16CATS48C11QATS48C14QPD63F160FOS79800D-000)