To our customers, Old Company Name in Catalogs and Other Documents On April 1st, 2010, NEC Electronics Corporation merged with Renesas Technology Corporation, and Renesas Electronics Corporation took over all the business of both companies. Therefore, although the old company name remains in this document, it is a valid Renesas Electronics document. We appreciate your understanding. Renesas Electronics website: http://www.renesas.com April 1st, 2010 Renesas Electronics Corporation Issued by: Renesas Electronics Corporation (http://www.renesas.com) Send any inquiries to http://www.renesas.com/inquiry. Notice 1. 2. 3. 4. 5. 6. 7. All information included in this document is current as of the date this document is issued. Such information, however, is subject to change without any prior notice. Before purchasing or using any Renesas Electronics products listed herein, please confirm the latest product information with a Renesas Electronics sales office. Also, please pay regular and careful attention to additional and different information to be disclosed by Renesas Electronics such as that disclosed through our website. Renesas Electronics does not assume any liability for infringement of patents, copyrights, or other intellectual property rights of third parties by or arising from the use of Renesas Electronics products or technical information described in this document. No license, express, implied or otherwise, is granted hereby under any patents, copyrights or other intellectual property rights of Renesas Electronics or others. You should not alter, modify, copy, or otherwise misappropriate any Renesas Electronics product, whether in whole or in part. Descriptions of circuits, software and other related information in this document are provided only to illustrate the operation of semiconductor products and application examples. You are fully responsible for the incorporation of these circuits, software, and information in the design of your equipment. Renesas Electronics assumes no responsibility for any losses incurred by you or third parties arising from the use of these circuits, software, or information. When exporting the products or technology described in this document, you should comply with the applicable export control laws and regulations and follow the procedures required by such laws and regulations. You should not use Renesas Electronics products or the technology described in this document for any purpose relating to military applications or use by the military, including but not limited to the development of weapons of mass destruction. Renesas Electronics products and technology may not be used for or incorporated into any products or systems whose manufacture, use, or sale is prohibited under any applicable domestic or foreign laws or regulations. Renesas Electronics has used reasonable care in preparing the information included in this document, but Renesas Electronics does not warrant that such information is error free. Renesas Electronics assumes no liability whatsoever for any damages incurred by you resulting from errors in or omissions from the information included herein. Renesas Electronics products are classified according to the following three quality grades: “Standard”, “High Quality”, and “Specific”. The recommended applications for each Renesas Electronics product depends on the product’s quality grade, as indicated below. You must check the quality grade of each Renesas Electronics product before using it in a particular application. You may not use any Renesas Electronics product for any application categorized as “Specific” without the prior written consent of Renesas Electronics. Further, you may not use any Renesas Electronics product for any application for which it is not intended without the prior written consent of Renesas Electronics. Renesas Electronics shall not be in any way liable for any damages or losses incurred by you or third parties arising from the use of any Renesas Electronics product for an application categorized as “Specific” or for which the product is not intended where you have failed to obtain the prior written consent of Renesas Electronics. The quality grade of each Renesas Electronics product is “Standard” unless otherwise expressly specified in a Renesas Electronics data sheets or data books, etc. “Standard”: 8. 9. 10. 11. 12. Computers; office equipment; communications equipment; test and measurement equipment; audio and visual equipment; home electronic appliances; machine tools; personal electronic equipment; and industrial robots. “High Quality”: Transportation equipment (automobiles, trains, ships, etc.); traffic control systems; anti-disaster systems; anticrime systems; safety equipment; and medical equipment not specifically designed for life support. “Specific”: Aircraft; aerospace equipment; submersible repeaters; nuclear reactor control systems; medical equipment or systems for life support (e.g. artificial life support devices or systems), surgical implantations, or healthcare intervention (e.g. excision, etc.), and any other applications or purposes that pose a direct threat to human life. You should use the Renesas Electronics products described in this document within the range specified by Renesas Electronics, especially with respect to the maximum rating, operating supply voltage range, movement power voltage range, heat radiation characteristics, installation and other product characteristics. Renesas Electronics shall have no liability for malfunctions or damages arising out of the use of Renesas Electronics products beyond such specified ranges. Although Renesas Electronics endeavors to improve the quality and reliability of its products, semiconductor products have specific characteristics such as the occurrence of failure at a certain rate and malfunctions under certain use conditions. Further, Renesas Electronics products are not subject to radiation resistance design. Please be sure to implement safety measures to guard them against the possibility of physical injury, and injury or damage caused by fire in the event of the failure of a Renesas Electronics product, such as safety design for hardware and software including but not limited to redundancy, fire control and malfunction prevention, appropriate treatment for aging degradation or any other appropriate measures. Because the evaluation of microcomputer software alone is very difficult, please evaluate the safety of the final products or system manufactured by you. Please contact a Renesas Electronics sales office for details as to environmental matters such as the environmental compatibility of each Renesas Electronics product. Please use Renesas Electronics products in compliance with all applicable laws and regulations that regulate the inclusion or use of controlled substances, including without limitation, the EU RoHS Directive. Renesas Electronics assumes no liability for damages or losses occurring as a result of your noncompliance with applicable laws and regulations. This document may not be reproduced or duplicated, in any form, in whole or in part, without prior written consent of Renesas Electronics. Please contact a Renesas Electronics sales office if you have any questions regarding the information contained in this document or Renesas Electronics products, or if you have any other inquiries. (Note 1) “Renesas Electronics” as used in this document means Renesas Electronics Corporation and also includes its majorityowned subsidiaries. (Note 2) “Renesas Electronics product(s)” means any product developed or manufactured by or for Renesas Electronics. 应用笔记 78K0/Kx2 8 位单片微控制器 Flash 存储器编程器 (编程器) 78K0/KB2: μPD78F0500, 78F0501, 78F0502, 78F0503, 78F0503D, 78F0500A, 78F0501A, 78F0502A, 78F0503A, 78F0503DA 78K0/KC2: μPD78F0511, 78F0512, 78F0513, 78F0514, 78F0515, 78F0513D, 78F0515D, 78F0511A, 78F0512A, 78F0513A, 78F0514A, 78F0515A, 78F0513DA, 78F0515DA 78K0/KD2: μPD78F0521, 78F0522, 78F0523, 78F0524, 78F0525, 78F0526,78F0527, 78F0527D, 78F0521A, 78F0522A, 78F0523A, 78F0524A, 78F0525A, 78F0526A, 78F0527A, 78F0527DA 78K0/KE2: μPD78F0531, 78F0532, 78F0533, 78F0534, 78F0535, 78F0536, 78F0537, 78F0537D, 78F0531A, 78F0532A, 78F0533A, 78F0534A, 78F0535A, 78F0536A, 78F0537A, 78F0537DA 78K0/KF2: μPD78F0544, 78F0545, 78F0546, 78F0547, 78F0547D, 78F0544A, 78F0545A, 78F0546A, 78F0547A, 78F0547DA 文档编号. U17739CA3V0AN00 (第三版) 发行日期 2009 年 1 月 NS © 日本印刷 [备注] 2 应用笔记 U17739CA3V0AN CMOS 设备注意事项 ① 输入引脚处的电压波形 输入噪音或一个反射波引起的波形失真可能导致错误发生。如果由于噪音等的影响使CMOS设备的输入 电压范围保持在VIL(MAX)和VIH(MIN)之间,设备可能发生错误。在输入电平固定时以及输入电平从VIL (MAX)过渡到VIH (MIN)时的传输期间,要防止散射噪声影响设备。 ② 未使用的输入引脚的处理 CMOS设备的输入端保持开路可能导致误操作。如果一个输入引脚未被连接,则由于噪音等原因可能会 产生内部输入电平,从而导致误操作。CMOS设备的操作特性与Bipolar或NMOS设备不同。CMOS设备 的输入电平必须借助上拉或下拉电路固定在高电平或低电平。每一个未使用引脚都应该通过附加电阻连 接到VDD或GND。如果有可能尽量定义为输出引脚。对未使用引脚的处理因设备而异,必须遵循与设 备相关的规定和说明。 ③ ESD防护措施 如果MOS设备周围有强电场,将会击穿氧化栅极,从而影响设备的运行。因此必须采取措施,尽可能 防止静电产生。一旦有静电,必须立即释放。对于环境必须有适当的控制。如果空气干燥,应当使用增 湿器。建议避免使用容易产生静电的绝缘体。半导体设备的存放和运输必须使用抗静电容器、抗静电屏 蔽袋或导电材料容器。所有的测试和测量工具包括工作台和工作面必须良好接地。操作员应当佩戴静电 消除手带以保证良好接地。不能用手直接接触半导体设备。对于装配有半导体设备的PW板也应采取类 似的静电防范措施。 ④ 初始化之前的状态 在上电时MOS设备的初始状态是不确定的。在刚刚上电之后,具有复位功能的MOS设备并没有被初始 化。因此上电不能保证输出引脚的电平,I/O设置和寄存器的内容。设备在收到复位信号后才进行初始 化。具有复位功能的设备在上电后必须立即进行复位操作。 ⑤ 电源开关顺序 在一个设备的内部操作和外部接口使用不同的电源的情况下,按照规定,应先在接通内部电源之后再 接通外部电源。当关闭电源时,按照规定,先关闭外部电源再关闭内部电源。如果电源开关顺序颠倒, 可能会导致设备的内部组件过电压,产生异常电流,从而引起内部组件的误操作和性能的退化。 对于每个设备电源的正确开关顺序必须依据设备的规范说明分别进行判断。 ⑥ 电源关闭状态下的输入信号 不要向没有加电的设备输入信号或提供I/O上拉电源。因为输入信号或提供I/O上拉电源将引起电流注 入,从而引起设备的误操作,并产生异常电流,从而使内部组件退化。 每个设备电源关闭时的信号输入必须依据设备的规范说明分别进行判断。 应用笔记 U17739CA3V0AN 3 z 本文档所登载的内容有效期截止至 2009 年 01 月,信息先于产品的生产周期发布。将来可能未经预先通 知而更改。在实际进行生产设计时,请参阅各产品最新的数据表或数据手册等相关资料以获取本公司产 品的最新规格。 z 并非所有的产品和/或型号都向每个国家供应。请向本公司销售代表查询产品供应及其他信息。 z 未经本公司事先书面许可,禁止复制或转载本文件中的内容。否则因本文档所登载内容引发的错误,本公 司概不负责。 z 本公司对于因使用本文件中列明的本公司产品而引起的,对第三者的专利、版权以及其它知识产权的侵权 行为概不负责。本文件登载的内容不应视为本公司对本公司或其他人所有的专利、版权以及其它知识产权 作出任何明示或默示的许可及授权。 z 本文件中的电路、软件以及相关信息仅用以说明半导体产品的运作和应用实例。用户如在设备设计中应用 本文件中的电路、软件以及相关信息,应自行负责。对于用户或其他人因使用了上述电路、软件以及相关 信息而引起的任何损失,本公司概不负责。 z 虽然本公司致力于提高半导体产品的质量及可靠性,但用户应同意并知晓,我们仍然无法完全消除出现产 品缺陷的可能。为了最大限度地减少因本公司半导体产品故障而引起的对人身、财产造成损害(包括死 亡)的危险,用户务必在其设计中采用必要的安全措施,如冗余度、防火和防故障等安全设计。 z 本公司产品质量分为: “标准等级”、“专业等级”以及“特殊等级”三种质量等级。 “特殊等级”仅适用于为特定用途而根据用户指定的质量保证程序所开发的日电电子产品。另外,各种日电电 子产品的推荐用途取决于其质量等级,详见如下。用户在选用本公司的产品时,请事先确认产品的质量等 级。 “标准等级”: 计算机,办公自动化设备,通信设备,测试和测量设备,音频·视频设备,家电,加工机 械以及产业用机器人。 “专业等级”: 运输设备(汽车、火车、船舶等),交通用信号控制设备,防灾装置,防止犯罪装置, 各种安全装置以及医疗设备(不包括专门为维持生命而设计的设备)。 “特殊等级: 航空器械,宇航设备,海底中继设备,原子能控制系统,为了维持生命的医疗设备、用于 维持生命的装置或系统等。 除在本公司半导体产品的数据表或数据手册等资料中另有特别规定以外,本公司半导体产品的质量等级均 为“标准等级”。如果用户希望在本公司设计意图以外使用本公司半导体产品,务必事先与本公司销售代表联 系以确认本公司是否同意为该项应用提供支持。 (注) (1) 本声明中的“本公司”是指日本电气电子株式会社(NEC Electronics Corporation)及其控股公司。 (2) 本声明中的“本公司产品”是指所有由日本电气电子株式会社开发或制造的产品或为日本电气电子株式会社 (定义如上)开发或制造的产品。 M5 02.11-1 4 应用笔记 U17739CA3V0AN 引言 读者 目的 本手册适用于那些希望了解 78K0/Kx2 功能,并设计开发应用系统和程序的工程师。 本手册旨在提供帮助用户理解怎样开发用于重写 78K0/Kx2 的 flash 存储器的 flash 编程 器 本文档中的样例程序和电路图仅供参考,并非供实际设计所使用 因此,用户需自行承担使用这些样例的的风险。这些样例程序不保证能正确操作。 组织 以下是本手册包含的主要部分. • Flash 存储器编程器 • 命令/数据帧格式 • 命令处理描述 • UART 通讯模式 • 3 线串行 I/O 通讯模式 (CSI) • Flash 存储器编程参数特性 怎样阅读本手册 在阅读本手册前,读者应掌握电子工程、逻辑电路和微控制器等电子工程方面的基础知 识。 • 要了解基本功能: → 请按目录顺序阅读本手册。标注 “<R>” 表示主要修订部分。修订部分可以很方便地 通过在 PDF 文件中拷贝 “<R>” 并通过在 “查找:” 中指定来搜索查询。 • 要了解更多 78K0/Kx2 的硬件功能 → 请参阅 78K0/Kx2 产品的各个用户手册 规则 数据规则: 数据的高位部分在左边,低位部分在右边 有效低电平表示法: ××× (在引脚和信号名称上加划一条线) 注: 文中用注标注的相关术语的脚注 注意事项: 需要特别关注的信息 备注: 补充信息 数值的表示: 二进制 ... ×××× 或 ××××B 十进制 ... ×××× 十六进制 ... ××××H 应用笔记 U17739CA3V0AN 5 相关文档 本手册中提到的相关文档可能包括有初稿版本。但是,初稿版本没有特别注明。 设备相关文档 文档名称 文档编号 78K0/KB2 用户手册 U17328E 78K0/KC2 用户手册 U17336E 78K0/KD2 用户手册 U17312E 78K0/KE2 用户手册 U17260E 78K0/KF2 用户手册 U17397E 78K/0 系列指令用户手册 U12326E 注意事项 以上列出的相关文档可能会在无任何声明条件下修改。读者开发设计时,应该使用每个文档的最新版本。 6 应用笔记 U17739CA3V0AN 目录 第 1 章 FLASH 存储器编程 ..........................................................................................................................13 1.1 1.2 1.3 1.4 1.5 概述 ..........................................................................................................................................13 系统配置........................................................................................................................................14 Flash 存储器配置..........................................................................................................................15 命令列表与状态列表 .....................................................................................................................17 1.4.1 命令列表 ......................................................................................................................................... 17 1.4.2 状态列表 ......................................................................................................................................... 18 供电电压与设置 Flash 存储器编程模式 ........................................................................................19 1.5.1 模式设置流程图 .............................................................................................................................. 21 1.5.2 示例程序 ......................................................................................................................................... 22 1.6 1.7 关闭目标板电源.............................................................................................................................23 Flash 存储器重写时命令执行流程 ................................................................................................23 第2章 命令/数据帧格式............................................................................................................................26 2.1 2.2 2.3 命令帧发送处理.............................................................................................................................28 数据帧发送处理.............................................................................................................................28 数据帧接收处理.............................................................................................................................28 第3章 命令处理描述 ................................................................................................................................29 3.1 状态命令........................................................................................................................................29 3.2 3.3 3.4 3.5 3.6 3.7 3.1.1 描述 ................................................................................................................................................ 29 3.1.2 命令帧和状态帧 .............................................................................................................................. 29 复位命令........................................................................................................................................30 3.2.1 描述 ................................................................................................................................................ 30 3.2.2 命令帧与状态帧 .............................................................................................................................. 30 波特率设置命令.............................................................................................................................31 振荡频率设置命令 .........................................................................................................................31 3.4.1 描述 ................................................................................................................................................ 31 3.4.2 命令帧和状态帧 .............................................................................................................................. 31 片擦除命令 ....................................................................................................................................32 3.5.1 描述 ................................................................................................................................................ 32 3.5.2 命令帧与状态帧 .............................................................................................................................. 32 块擦除命令 ....................................................................................................................................33 3.6.1 描述 ................................................................................................................................................ 33 3.6.2 命令帧与状态帧 .............................................................................................................................. 33 编程命令........................................................................................................................................34 3.7.1 描述 ................................................................................................................................................ 34 3.7.2 命令帧与状态帧 .............................................................................................................................. 34 3.7.3 数据帧与状态帧 .............................................................................................................................. 34 3.7.4 全部数据和状态帧传送完成............................................................................................................. 35 应用笔记 U17739CA3V0AN 7 3.8 3.9 校验命令 ....................................................................................................................................... 35 3.8.1 描述 ................................................................................................................................................35 3.8.2 命令帧与状态帧...............................................................................................................................35 3.8.3 数据帧与状态帧...............................................................................................................................35 块空白检测命令 ............................................................................................................................ 37 3.9.1 描述 ................................................................................................................................................37 3.9.2 命令帧与状态帧...............................................................................................................................37 3.10 硅信号命令 ................................................................................................................................... 38 3.10.1 说明 ................................................................................................................................................38 3.10.2 命令帧与状态帧...............................................................................................................................38 3.10.3 硅信号数据帧 ..................................................................................................................................38 3.10.4 78K0/Kx2 硅信号列表 .....................................................................................................................41 3.11 版本获取命令................................................................................................................................ 46 3.11.1 描述 ................................................................................................................................................46 3.11.2 命令帧与状态帧...............................................................................................................................46 3.11.3 版本数据帧......................................................................................................................................47 3.12 校验和命令 ................................................................................................................................... 47 3.12.1 描述 ................................................................................................................................................47 3.12.2 命令帧与状态帧...............................................................................................................................47 3.12.3 校验和数据帧 ..................................................................................................................................48 3.13 安全设置命令................................................................................................................................ 48 3.13.1 描述 ................................................................................................................................................48 3.13.2 命令帧与状态帧...............................................................................................................................48 3.13.3 数据帧与状态帧...............................................................................................................................49 3.13.4 内部校验检查和状态帧 ....................................................................................................................49 第 4 章 UART 通讯模式 ............................................................................................................................... 51 4.1 4.2 4.3 4.4 4.5 4.6 命令帧发送处理流程图 ................................................................................................................. 52 数据帧发送处理流程图 ................................................................................................................. 53 数据帧接收处理流程图 ................................................................................................................. 54 复位命令 ....................................................................................................................................... 55 4.4.1 处理流程图......................................................................................................................................55 4.4.2 处理流程描述 ..................................................................................................................................56 4.4.3 处理完成时状态...............................................................................................................................56 4.4.4 流程图 .............................................................................................................................................57 4.4.5 示例程序 .........................................................................................................................................58 振荡频率设置命令 ........................................................................................................................ 59 4.5.1 处理流程图......................................................................................................................................59 4.5.2 处理顺序描述 ..................................................................................................................................60 4.5.3 处理完成时状态...............................................................................................................................60 4.5.4 流程图 .............................................................................................................................................61 4.5.5 示例程序 .........................................................................................................................................62 片擦除命令 ................................................................................................................................... 63 4.6.1 8 处理流程图......................................................................................................................................63 应用笔记 U17739CA3V0AN 4.7 4.8 4.9 4.6.2 处理顺序描述 .................................................................................................................................. 64 4.6.3 处理完成时状态 .............................................................................................................................. 64 4.6.4 流程图............................................................................................................................................. 65 4.6.5 示例程序 ......................................................................................................................................... 66 块擦除命令 ....................................................................................................................................67 4.7.1 处理流程图...................................................................................................................................... 67 4.7.2 处理顺序描述 .................................................................................................................................. 68 4.7.3 处理完成时状态 .............................................................................................................................. 68 4.7.4 流程图............................................................................................................................................. 69 4.7.5 示例程序 ......................................................................................................................................... 70 编程命令........................................................................................................................................71 4.8.1 处理流程图...................................................................................................................................... 71 4.8.2 处理顺序描述 .................................................................................................................................. 72 4.8.3 处理完成时状态 .............................................................................................................................. 73 4.8.4 流程图............................................................................................................................................. 74 4.8.5 示例程序 ......................................................................................................................................... 75 验证命令........................................................................................................................................77 4.9.1 处理流程图...................................................................................................................................... 77 4.9.2 处理顺序描述 .................................................................................................................................. 78 4.9.3 处理完成时状态 .............................................................................................................................. 78 4.9.4 流程图............................................................................................................................................. 79 4.9.5 示例程序 ......................................................................................................................................... 80 4.10 块空白检查命令.............................................................................................................................82 4.10.1 处理流程图...................................................................................................................................... 82 4.10.2 处理顺序描述 .................................................................................................................................. 83 4.10.3 处理完成时状态 .............................................................................................................................. 83 4.10.4 流程图............................................................................................................................................. 84 4.10.5 示例程序 ......................................................................................................................................... 85 4.11 硅签名命令 ....................................................................................................................................86 4.11.1 处理流程图...................................................................................................................................... 86 4.11.2 处理顺序描述 .................................................................................................................................. 87 4.11.3 处理完成时状态 .............................................................................................................................. 87 4.11.4 流程图............................................................................................................................................. 88 4.11.5 示例程序 ......................................................................................................................................... 89 4.12 版本获取命令 ................................................................................................................................90 4.12.1 处理流程图...................................................................................................................................... 90 4.12.2 处理顺序描述 .................................................................................................................................. 91 4.12.3 处理完成时状态 .............................................................................................................................. 91 4.12.4 流程图............................................................................................................................................. 92 4.12.5 示例程序 ......................................................................................................................................... 93 4.13 校验和命令 ....................................................................................................................................94 4.13.1 处理流程图...................................................................................................................................... 94 4.13.2 处理顺序描述 .................................................................................................................................. 95 4.13.3 处理完成时状态 .............................................................................................................................. 95 应用笔记 U17739CA3V0AN 9 4.13.4 流程图 .............................................................................................................................................96 4.13.5 示例程序 .........................................................................................................................................97 4.14 安全设置命令................................................................................................................................ 98 4.14.2 处理顺序描述 ..................................................................................................................................99 4.14.3 处理完成时状态...............................................................................................................................99 4.14.4 流程图 ...........................................................................................................................................100 4.14.5 示例程序 .......................................................................................................................................101 第 5 章 3 线串行 I/O 通讯模式 (CSI)......................................................................................................... 103 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 命令帧发送处理流程图 ............................................................................................................... 104 数据帧发送处理流程图 ............................................................................................................... 105 数据帧接收处理流程图 ............................................................................................................... 106 状态命令 ..................................................................................................................................... 107 5.4.1 处理流程图....................................................................................................................................107 5.4.2 处理顺序描述 ................................................................................................................................108 5.4.3 处理完成时状态.............................................................................................................................108 5.4.4 流程图 ...........................................................................................................................................109 5.4.5 示例程序 .......................................................................................................................................110 复位命令 ..................................................................................................................................... 112 5.5.1 处理流程图....................................................................................................................................112 5.5.2 处理流程描述 ................................................................................................................................113 5.5.3 处理完成时状态.............................................................................................................................113 5.5.4 流程图 ...........................................................................................................................................114 5.5.5 示例程序 .......................................................................................................................................115 振荡频率设置命令 ...................................................................................................................... 116 5.6.1 处理流程图....................................................................................................................................116 5.6.2 处理流程描述 ................................................................................................................................117 5.6.3 处理完成时状态.............................................................................................................................117 5.6.4 流程图 ...........................................................................................................................................118 5.6.5 示例程序 .......................................................................................................................................119 片擦除命令 ................................................................................................................................. 120 5.7.1 处理流程图....................................................................................................................................120 5.7.2 处理流程描述 ................................................................................................................................121 5.7.3 处理完成时状态.............................................................................................................................121 5.7.4 流程图 ...........................................................................................................................................122 5.7.5 示例程序 .......................................................................................................................................123 块擦除命令 ................................................................................................................................. 124 5.8.1 处理流程图....................................................................................................................................124 5.8.2 处理流程描述 ................................................................................................................................125 5.8.3 处理完成时状态.............................................................................................................................125 5.8.4 流程图 ...........................................................................................................................................126 5.8.5 示例程序 .......................................................................................................................................127 编程命令 ..................................................................................................................................... 128 5.9.1 10 处理流程图....................................................................................................................................128 应用笔记 U17739CA3V0AN 5.9.2 处理流程描述 ................................................................................................................................ 130 5.9.3 处理完成时状态 ............................................................................................................................ 131 5.9.4 流程图........................................................................................................................................... 132 5.9.5 示例程序 ....................................................................................................................................... 133 5.10 验证命令......................................................................................................................................135 5.10.1 处理流程图.................................................................................................................................... 135 5.10.2 处理流程描述 ................................................................................................................................ 136 5.10.3 处理完成时状态 ............................................................................................................................ 136 5.10.4 流程图........................................................................................................................................... 137 5.10.5 示例程序 ....................................................................................................................................... 138 5.11 块空白检查命令...........................................................................................................................140 5.11.1 处理流程图.................................................................................................................................... 140 5.11.2 处理流程描述 ................................................................................................................................ 141 5.11.3 处理完成时状态 ............................................................................................................................ 141 5.11.4 流程图........................................................................................................................................... 142 5.11.5 示例程序 ....................................................................................................................................... 143 5.12 硅签名命令 ..................................................................................................................................144 5.12.1 处理流程图.................................................................................................................................... 144 5.12.2 处理流程描述 ................................................................................................................................ 145 5.12.3 处理完成时状态 ............................................................................................................................ 145 5.12.4 流程图........................................................................................................................................... 146 5.12.5 示例程序 ....................................................................................................................................... 147 5.13 版本获取命令 ..............................................................................................................................148 5.13.1 处理流程图.................................................................................................................................... 148 5.13.2 处理流程描述 ................................................................................................................................ 149 5.13.3 处理完成时状态 ............................................................................................................................ 149 5.13.4 流程图........................................................................................................................................... 150 5.13.5 示例程序 ....................................................................................................................................... 151 5.14 校验和命令 ..................................................................................................................................152 5.14.1 处理流程图.................................................................................................................................... 152 5.14.2 处理流程描述 ................................................................................................................................ 153 5.14.3 处理完成时状态 ............................................................................................................................ 153 5.14.4 流程图........................................................................................................................................... 154 5.14.5 示例程序 ....................................................................................................................................... 155 5.15 安全设置命令 ..............................................................................................................................157 5.15.1 处理流程图.................................................................................................................................... 157 5.15.2 处理流程描述 ................................................................................................................................ 158 5.15.3 处理完成时状态 ............................................................................................................................ 158 5.15.4 流程图........................................................................................................................................... 159 5.15.5 示例程序 ....................................................................................................................................... 160 第 6 章 FLASH 存储器编程参数特性 .........................................................................................................161 6.1 扩展规范产品 (μPD78F05xxA) 的 Flash 存储器编程参数特性 ..................................................161 6.1.1 基本特性 ....................................................................................................................................... 161 应用笔记 U17739CA3V0AN 11 6.2 6.3 6.4 6.5 6.1.2 Flash 存储器编程模式设置时间.....................................................................................................161 6.1.3 编程特性 .......................................................................................................................................162 常规产品 (μPD78F05xx) 的 Flash 存储器编程参数特性 ........................................................... 164 6.2.1 基本特性 .......................................................................................................................................164 6.2.2 Flash 存储器编程模式设置时间.....................................................................................................164 6.2.3 编程特性 .......................................................................................................................................165 由块擦除命令执行的同时选择与擦除 ......................................................................................... 167 UART 通讯模式 .......................................................................................................................... 175 3 线串行 I/O 通讯模式 ................................................................................................................ 178 附录 A 电路图 (参考) ............................................................................................................................. 181 附录 B 修订历史....................................................................................................................................... 189 B.1 本版本主要修订内容................................................................................................................... 189 B.2 旧版本的再版修订记录 ............................................................................................................... 190 12 应用笔记 U17739CA3V0AN 第 1 章 FLASH存储器编程 要重写78K0S/Kx2 内部Flash 存储器的内容,通常需要使用一个专用Flash 存储器编程器(以后我们用“编程器”来代 替)。 本应用笔记将介绍如何开发专用的编程器。 1.1 概述 78K0/Kx2含有控制FLASH存储器编程的固件。通过编程器和78K0/Kx2 之间串口发送和接收通讯命令可以执行内部 flash 存储器的编程。 图 1-1. 78K0/Kx2 Flash 存储器编程系统概要 78K0/Kx2 固件 串行通讯 编程器 CPU Flash 存储器 应用笔记 U17739CA3V0AN 13 第 1 章 FLASH 存储器编程 1.2 系统配置 存储器编程的系统配置示例如图 1-2 所示。 这些图例所示为主机控制下的编程器如何对 Flash 存储器编程。 根据编程器的连接方式,若事先已经将程序下载到编程器中,则编程器可以在无主机的独立模式下使用。 例如, NEC 电子的 Flash 存储器编程器 PG-FP4 可以在主机连接时使用 GUI 软件或独立的执行编程。 图 1-2.系统配置实例 (1) UART 通讯模式(LSB 优先传输) 主机 设备 编程器 FLMD0 VDD RESET RS-232C, etc. FLMD0 VDD 固件 RESET TXD RXD RX D TXD GND VSS Flash 存储器 (2) 三线串行输入/输出通讯模式(CSI)(MSB 优先传输) 主机 设备 编程器 FLMD0 VDD RESET SCK RS-232C, etc. VDD SCK SI SI SO GND VSS 应用笔记 U17739CA3V0AN 固件 RESET SO 备注 Flash 存储器编程所用的引脚及未用引脚的推荐连接,详见每个产品的用户手册。 14 FLMD0 Flash 存储器 第 1 章 FLASH 存储器编程 1.3 Flash存储器配置 78K0/Kx2 必须管理产品的具体信息(例如设备名称与存储器信息) 表 1-1 所示为 78K0/Kx2 Flash 存储器容量,图 1-3 所示为 Flash 存储器结构。 表 1-1. 78K0/Kx2 Flash 存储器容量 设备名称 78K0/KB2 78K0/KC2 78K0/KD2 78K0/KE2 78K0/KF2 Flash 存储器容量 μPD78F0500, 78F0500A 8 KB μPD78F0501, 78F0501A 16 KB μPD78F0502, 78F0502A 24 KB μPD78F0503, 78F0503A, 78F0503D, 78F0503DA 32 KB μPD78F0511, 78F0511A 16 KB μPD78F0512, 78F0512A 24 KB μPD78F0513, 78F0513A, 78F0513D, 78F0513DA 32 KB μPD78F0514, 78F0514A 48 KB μPD78F0515, 78F0515A, 78F0515D, 78F0515DA 60 KB μPD78F0521, 78F0521A 16 KB μPD78F0522, 78F0522A 24 KB μPD78F0523, 78F0523A 32 KB μPD78F0524, 78F0524A 48 KB μPD78F0525, 78F0525A 60 KB μPD78F0526, 78F0526A 96 KB μPD78F0527, 78F0527A, 78F0527D, 78F0527DA 128 KB μPD78F0531, 78F0531A 16 KB μPD78F0532, 78F0532A 24 KB μPD78F0533, 78F0533A 32 KB μPD78F0534, 78F0534A 48 KB μPD78F0535, 78F0535A 60 KB μPD78F0536, 78F0536A 96 KB μPD78F0537, 78F0537A, 78F0537D, 78F0537DA 128 KB μPD78F0544, 78F0544A 48 KB μPD78F0545, 78F0545A 60 KB μPD78F0546, 78F0546A 96 KB μPD78F0547, 78F0547A, 78F0547D, 78F0547DA 128 KB 应用笔记 U17739CA3V0AN 15 第 1 章 FLASH 存储器编程 图 1-3 Flash 存储器结构 1 KB <块编号> <地址> 块 7F (127) 1FFFFH < Flash 存储器容量> 128 KB 1 KB 块 60 (96) 1 KB 块 5F (95) 18000H 17FFFH 96 KB 1 KB 块 3C (60) 1 KB 块 3B (59) F000H EFFFH 60 KB 1 KB 块 30 (48) 1 KB 块 2F (47) C000H BFFFH 48 KB 1 KB 块 20 (32) 1 KB 块 1F (31) 8000H 7FFFH 32 KB 1 KB 块 18 (24) 1 KB 块 17 (23) 6000H 5FFFH 24 KB 1 KB 块 10 (16) 1 KB 块 0F (15) 4000H 3FFFH 16 KB 1 KB 块 08 (08) 1 KB 块 07 (07) 2000H 1FFFH 8 KB 1 KB 16 块 00 0000H 应用笔记 U17739CA3V0AN 第 1 章 FLASH 存储器编程 备注 每个 block 由 1KB 组成(这个结构仅是 Flash 存储器中整个 block 的一部分举例)。 命令列表与状态列表 1.4 可以对组成 78K0/Kx2 的 Flash 存储器执行如表 1-2 所示的操作。编程器发送命令给 78K0/Kx2 来控制这些功能,并 通过检查 78K0/Kx2 的响应状态来操作 Flash 存储器。 1.4.1 命令列表 下表所示为编程器使用的命令及其功能。 表 1-2. 编程器给 78K0/Kx2 传送的命令列表 命令数值 命令名称 功能名称 擦除 功能 20H 片擦除 22H 块擦除 擦除全部 Flash 存储器区域。 40H 编程 写入 在 Flash 存储器的指定区域写入数据。 13H 校验 校验 比较 Flash 存储器指定区域的内容与编程器发送的数据。 32H 块空白检查 空白检查 检查 Flash 存储器指定区域的擦除状态。 70H 状态 信息获取 获取当前的操作状态(状态数据)。 C0H 硅信号 获取 78K0/Kx2 信息(写入协议信息)。 C5H 获取版本 获取 78K0/Kx2 与固件的版本信息。 B0H 校验和 A0H 安全设置 安全 设置安全信息。 00H 复位 其他 检测同步通讯。 90H 设置振荡频率 擦除 Flash 存储器的指定区域。 获取指定区域的校验和数据。 指定 78K0/Kx2 的振荡频率。 应用笔记 U17739CA3V0AN 17 第 1 章 FLASH 存储器编程 1.4.2 状态列表 下表所示为编程器从 78K0/Kx2 接收到的状态码。 表 2-7. 状态码列表 状态码 状态 描述 04H 命令数值错误 接收到不支持的命令的错误返回 05H 参数错误 命令信息(参数)无效的错误返回 06H (ACK)常规应答 常规应答 07H 校验和错误 编程器发送的帧数据反常时的错误返回 0FH 校验错误 编程器传送校验数据时校验错误返回 10H 保护错误 由于安全设置命令而禁止执行处理的错误返回 15H (NACK)否定应答 否定应答 1AH MRG10 错误 擦除校验错误 1BH MRG11 错误 数据写入期间的内部校验错误或空白检测错误 1CH 写入错误 写入错误 20H 读取错误 读取安全信息失败时的错误返回 FFH 处理中(BUSY) 繁忙应答 注 注 CSI 通讯期间,可以将 1 字节的“FFH”及“FFH”作为数据帧格式传送。 本手册将接收校验和错误或NACK视为非正常终止处理。当开发专用编程器时,引起校验和错误或NACK的命令发送 前,该过程会一直执行直到没有错误发生。因此,推荐限制重查次数来防止无限次重复运行。 尽管上表并未列出,但若发生超时错误时(BUSY 超时或UART 通讯期间数据帧接收超时),将关闭78K0/Kx2 供电电 压并再次连接。(详情参见1.6 关闭目标电源) 18 应用笔记 U17739CA3V0AN 第 1 章 FLASH 存储器编程 1.5 供电电压与设置Flash存储器编程模式 通过编程器重写Flash 存储器的内容,必须先将78K0/Kx2设置为Flash 存储器编程模式。要设置该模式,必须给 Flash 存储器编程模式设置引脚(FLMD0)提供高电平,并复位。 在转到编程模式后,编程器接收到 FLMD0 引脚重写 Flash 存储器的脉冲输入。 以下举例说明设置 Flash 存储器编程模式与选择通讯模式的时序图。 图 1-4. 设置 Flash 存储器编程模式并选择通讯模式 VDD 复位 VDD FLMD0 <1> <2> <3> <4> <5> <1>:供电电压(VDD) <2>: FLMD0 =高电平 <3>:复位释放(模式设置) <4>:脉冲输出开始 <5>:脉冲输出结束 下列表格所示为复位后 FLMD0 引脚设置与操作模式之间的关系。 表 1-4. 复位后 FLMD0 引脚设置与操作模式之间的关系。 操作模式 FLMD0 低(GND) 普通操作模式 高(VDD) Flash 存储器编程模式 下列表格所示为通过 78K0/Kx2 选择的 FLMD0 脉冲个数(脉冲数)与通讯模式之间的关系。 表 1-5. FLMD0 脉冲个数与通讯模式之间的关系 通讯模式 UART (UART6) FLMD0 脉冲个数 0(当使用 X1 时钟(fX)时) 通讯使用端口 TxD6 (P13), RxD6 (P14) 3(当使用外部主系统时钟(fEXCLK)时) 三线串行 I/O(CSI10) 禁止设置 8 其他 应用笔记 U17739CA3V0AN SO10 (P12), SI10 (P11), SCK10 (P10) − 19 第 1 章 FLASH 存储器编程 UART 通讯模式 UART 通讯使用 RxD 与 TxD 引脚。通讯条件如下。 UART 通讯条件 项目 波特率 描述 通讯一直以9,600 bps 执行,直到振荡频率设置命令已经传输。 状态帧接收后,通讯速率转换为115,200 bps。 此后,通讯速率固定为 115,200 bps。 校验位 无 数据长度 8 位(LSB 优先) 停止位 1位 CSI 通讯时,编程器总是作为主设备运行,所以编程器必须检查78K0/Kx2 操作(例如写入或擦除)是否正常完 成。另外, UART 通讯期间主从设备状态有时候互换,所以必须在最适宜的时间通讯。 注意事项 执行 UART 通讯时,设置主从设备相同的波特率。 三线串行 I/O 通讯模式(CSI) CSI 通讯使用SCK 、SO和SI 引脚。编程器始终为主设备,当78K0/Kx2没有准备好传送/接收时如果编程器经 SCK引脚传输数据,有可能通讯不能正常执行。 通讯数据格式为 MSB 优先,8 位。保持时钟频率为 2.5 MHz 或更低。 20 应用笔记 U17739CA3V0AN 第 1 章 FLASH 存储器编程 1.5.1 模式设置流程图 编程模式设置 RESET 引脚输出低 FLMD0 引脚输出低 VDD 引脚输出高 (目标电源打开) 等待 tDP FLMD0 引脚输出高 等待 tPR RESET 引脚输出高 时间测量开始直到重置指令处理开始 tR1 CSI 通讯时间: tRC 是 通讯模式是否 UART0 (FLMD0 脉冲 = 0)? 有关脉冲计数与通讯模式的关系请参阅 表格 1-5 。 否 等待 UART 通讯时间: (tRP+tRPE)/ 2 根据通讯模式将串行输入/输 出硬件初始化。 根据通讯模式将串行输入/输 出硬件初始化。 根据通讯模式输出脉冲计数 重置指令处理前规定时间 是否已过? 否 UART 通讯时间: tR1 过去? CSI 通讯时间: tRC 过去? 是 接下来,为每个通讯模式执行重置指令。 结束 应用笔记 U17739CA3V0AN 21 第 1 章 FLASH 存储器编程 1.5.2 示例程序 以下为模式设置处理示例程序 /****************************************************************/ /* /* connect to Flash device Flash /* /****************************************************************/ void fl_con_dev(void) { extern void init_fl_uart(void); extern void init_fl_csi(void); int int */ */ */ n; pulse; SRMK0 = true; UARTE0 = false; switch (fl_if){ default: case FLIF_UART: case FLIF_CSI: pulse = PULSE_UART; break; pulse = UseEXCLK ? PULSE_UART_EX : PULSE_UART; break; pulse = PULSE_CSI; break; } pFL_RES = low; pmFL_FLMD0 = PM_OUT; pFL_FLMD0 = low; FL_VDD_HI(); // VDD = 高 fl_wait(tDP); // wait 等待 pFL_FLMD0 fl_wait(tPR); = hi; // 等待 // RESET = 低 // FLMD0 = 输出模式 // FLMD0 = 高 pFL_RES = hi; // RESET = 高 start_flto(fl_if == FLIF_CSI ? tRC : tR1); // 开始"tRC"等待计时 fl_wait((tRP+tRPE)/2); if (fl_if == FLIF_UART){ init_fl_uart();// 初始化UART硬件(控制Flash设备) UARTE0 = true; SRIF0 = false; SRMK0 = false; } else{ init_fl_csi(); //初始化CSI硬件 } for (n = 0; n < pulse; n++){ 22 //脉冲输出 应用笔记 U17739CA3V0AN 第 1 章 FLASH 存储器编程 pFL_FLMD0 = low; fl_wait(tPW); pFL_FLMD0 = hi; fl_wait(tPW); } while(!check_flto()) ; // tRC超时? // 否 //开始执行RESET命令 } 1.6 关闭目标板电源 每个命令执行完毕后,按以下所示设置复位 RESET 引脚至低后关闭目标板电源。 当关闭目标板电源时,将其他引脚设置为 Hi-Z。 注意事项 命令处理期间禁止关闭电源和输入复位信号。 图 1-5. Flash 存储器编程模式终止时序 VDD 复位 复位输入 1.7 关闭电源 Flash存储器重写时命令执行流程 图 1-6 举例说明了当 Flash 存储器重写时编程器的基本流程。 除图 1-6 显示的命令外,校验命令与校验和命令也能被支持。 应用笔记 U17739CA3V0AN 23 第 1 章 FLASH 存储器编程 图 1-6. Flash 存储器重写处理的基本流程 基本流程 目标系统上电 (详见图表 1-4) 模式设置 (重置释放) (详见 1.5) 选择通讯模式 (脉冲输入) (详见 1.5) 同步处理 (重置指令) (详见 3.2) UART 通讯? 否 是 振荡频率设置 (振荡频率设置 指令) (详见 3.4) 指令执行 处理完成? 否 是 重写时禁止重置输入以及关闭电源 否则可能丢失安全信息。 关闭目标电源 (详见 1.6) 结束 注 24 图表 1-7 所示为每条命令的执行示例。 应用笔记 U17739CA3V0AN 第 1 章 FLASH 存储器编程 图表 1-7. Flash 存储器重写的常规命令执行流程 常规指令流程 块空白检查指令 (请见 3.9) 是 否 执行块擦除指令 (请见 3.6) 执行编程指令 (请见 3.7) 执行校验指令 (请见 3.8) 编程器可通过校验指令来检验编程器与目标设备 之间的数据传送是否正常完成。 执行安全设置指令 (请见 3.13) 结束 应用笔记 U17739CA3V0AN 25 第 2 章 命令/数据帧格式 编程器使用命令帧来发送命令给 78K0/Kx2。78K0/Kx2 使用数据帧发送写入数据或校验数据给编程器。每帧都附加 头、尾、数据长度、校验和以增加发送数据的可靠性。 以下所示为命令帧和数据帧的格式。 图 2-1. 命令帧格式 SOH LEN COM 命令信息(可变长度) (1 字节) (1 字节) (1 字节) (最大 255 字节) SUM (1 字节) ETX (1 字节) SUM (1 字节) ETX 或 ETB 图 2-2. 数据帧格式 STX LEN 数据(可变长度) (1 字节) (1 字节) (最大 256 字节) (1 字节) 表 2-1. 每帧符号描述 符号 值 SOH 01H 命令帧头 STX 02H 数据帧头 LEN − COM − SUM − 描述 数据长度信息(00H 指示 256)。 命令帧: COM+命令信息长度 数据帧: 数据长度 命令号 帧校验和数据,这些帧从最初值(00H)开始按照 1 个字节(忽略借位)顺序减去计 算目标数据获得。计算目标如下。 命令帧:LEN+COM+全部命令信息 数据帧:LEN+全部数据 ETB 17H 倒数第二帧数据帧尾 ETX 03H 命令帧尾或数据帧尾 以下举例说明如何计算 1 帧的校验和(SUM)。 26 应用笔记 U17739CA3V0AN 第 2 章 命令/数据帧格式 [命令帧] 下例中状态命令帧不包括命令信息,所以 LEN 和 COM 作为校验和计算目标。 SOH LEN COM SUM ETX 01H 01H 70H 校验和 03H 校验和计算目标 此命令帧,校验和数据按如下所示。 00H (原始数值) − 01H (LEN) − 70H (COM) = 8FH (忽略借位。仅低 8 位。) 最后发送的命令帧如下。 SOH LEN COM SUM ETX 01H 01H 70H 8FH 03H [数据帧] 以下所示为发送的数据帧,LEN 和 D1~ D4 为校验和计算目标。 STX 02H LEN 04H D1 FFH D2 80H D3 40H D4 SUM ETX 22H 校验和 03H 校验和计算目标 此数据帧,校验和数据按如下所示。 00H (原始数值) − 04H (LEN) − FFH (D1) − 80H (D2) − 40H (D3) − 22H (D4) = 1BH (忽略借位。仅低 8 位。) 最后发送的数据帧如下。 STX LEN D1 D2 D3 D4 SUM ETX 02H 04H FFH 80H 40H 22H 1BH 03H 当接收到数据帧时,校验和数据以同样的方式计算,并且通过判断获得值与接收数据中SUM 的值是否相同来检测校 验和错误。例如,若接收到的数据帧如下,将检测到1个校验和错误。 STX LEN D1 D2 D3 D4 SUM ETX 02H 04H FFH 80H 40H 22H 1AH 03H ↑ 若是正常的,应该为 1BH 应用笔记 U17739CA3V0AN 27 第 2 章 命令/数据帧格式 2.1 命令帧发送处理 请参考以下章节关于每种通讯模式下发送命令帧,命令处理流程图的详细说明。 • UART 通讯模式,参考 4.1 命令帧发送处理流程图 • 3 线串行 I/O 通讯模式(CSI),参考 5.1 命令帧发送处理流程图图 2.2 数据帧发送处理 数据帧(用户程序)、校验数据帧(用户程序)和安全数据帧(安全标志)按数据帧发送。 请参考以下章节关于每种通讯模式下发送数据帧,命令处理流程图的详细说明。 • UART 通讯模式,参考 4.2 数据帧发送处理流程图。 • 3 线串行 I/O 通讯模式(CSI),参考 5.2 数据帧发送处理流程图 2.3 数据帧接收处理 状态帧、硅信号数据帧、版本数据帧,和校验和数据帧按数据帧接收。 请参考以下章节关于每种通讯模式下接收数据帧,命令处理流程图的详细说明。 • UART 通讯模式,参考 4.3 数据帧接收处理流程图 • 三线串行 I/O 通讯模式(CSI),参考 5.3 数据帧接收处理流程图 28 应用笔记 U17739CA3V0AN 第 3 章 命令处理描述 3.1 状态命令 3.1.1 描述 此命令用来检查执行每条命令(例如写入或擦除)后 78K0/Kx2 的 操作状态 执行状态命令后,若由于通讯问题或类似问题,78K0/Kx2 不能正常接收状态命令帧,将不能执行状态设置。结果 会接收到忙响应(FFH),而不是状态帧。这样,将重发状态命令。 3.1.2 命令帧和状态帧 图 3-1 所示为状态命令的命令帧格式,图 3-2 所示为命令的状态帧。 图 3-1. 状态命令帧 (从编程器到 78K0/Kx2) SOH LEN COM SUM ETX 01H 01H 70H(状态) 检查和 03H 图 3-2. 状态命令的状态帧 (从 78K0/Kx2 到编程器) STX LEN 02H n 备注 Data (数据) ST1 … STn SUM ETX 检查和 03H 1. ST1 至 STn: 状态 #1 至 状态 #n 2. 根据发送给 78K0/Kx2 每条命令(例如写入或擦除)的不同而改变状态帧的长 度。 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的详细 资料。 • UART 通讯模式不能使用状态命令。 • 三线串行 I/O 通讯模式(CSI),请参考 5.4 状态命令 注意事项 UART 通讯中每条命令(例如写入或擦除)发送后,78K0/Kx2 在指定时间内自动返回状态帧。因此不使 用状态命令。 若在 UART 通讯中发送状态命令,将返回命令数错误。 应用笔记 U17739CA3V0AN 29 第三章 命令处理描述 3.2 复位命令 3.2.1 描述 在通讯模式设置后,此命令用来检查编程器与 78K0/Kx2 之间通讯是否建立。 当 78K0/Kx2 选择 UART 通讯模式时,编程器和 78K0/Kx2 必须设置相同的波特率。但是,78K0/Kx2 不能检测自己 的波特率产生时钟频率(fX or fEXCLK) ,所以不能设置波特率。78K0/Kx2 波特率产生时钟频率可以通过从编程器以 9,600 bps 的速度发送两次“00H”来测得。测得“00H”的低电平宽度后,再计算两次发送信号的平均值。这样就可设置波 特率,能够在通讯中同步侦测。 3.2.2 命令帧与状态帧 图 3-3 所示为复位命令的命令帧格式,图 3-4 所示为命令的状态帧。 图解 3-3. 复位命令帧 (从编程器到 78K0/Kx2) SOH LEN COM SUM ETX 01H 01H 00H(复位) 检查和 03H 图 3-4. 复位命令的状态帧 (从 78K0/Kx2 到编程器 ) STX LEN 数据 SUM ETX 02H 1 ST1 检查和 03H 备注 ST1:同步结果 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的详细资 料。 • 关于 UART 通讯模式,请参考 4.4 复位命令。 • 关于三线串行 I/O 通讯模式(CSI),请参考 5.5 复位命令。 30 应用笔记 U17739CA3V0AN 第三章 命令处理描述 3.3 波特率设置命令 78K0/Kx2 不支持波特率设置命令。 对于 78K0/Kx2,UART 通讯以 9,600 bps 的速度执行,直至发送振荡频率设置命令。在接收到状态帧后,通讯速率 切换为 115,200 bps。之后,通讯速率固定为 115,200 bps。 3.4 振荡频率设置命令 3.4.1 描述 此命令用来指定 UART 通讯期间 fX 或 fEXCLK。 78K0/Kx2 通过接收包的频率数据来确定波特率为 115,200 bps。 注意事项 78K0/Kx2 以 9,600 bps 的速度执行 UART 通讯,直到振荡频率设置命令传输。 接收状态帧后,通讯速率转换为 115,200 bps。此后,通讯速率固定为 115,200 bps。 3.4.2 命令帧和状态帧 图 3-5 所示为振荡频率设置命令的命令帧格式,图 3-6 所示为命令的状态帧。 图 3-5. 振荡频率设置命令帧 (从编程器至 78K0/Kx2) SOH 01H 备注 命令信息 LEN COM 05H 90H (振荡频率设置) D01 D02 D03 D04 SUM ETX 检查和 03H D01 至 D04: 振荡频率 = (D01×0.1 +D02×0.01 + D03×0.001)×10D04 (单位:kHz) 可以设置 10 kHz ~100 MHz,但是实际传输命令时,设置值按照每个设备的规格而 定。D01~D03 由 BCDs 分开保存,D04 保存为 1 个带符号的整数。 设置举例:设置 6 MHz D01 = 06H D02 = 00H D03 = 00H D04 = 04H 振荡频率 = 6 × 0.1 × 104 = 6,000 kHz = 6 MHz 设置举例:设置 10 MHz D01 = 01H D02 = 00H D03 = 00H D04 = 05H 振荡频率 = 1 × 0.1 × 105 = 10,000 kHz = 10 MHz 图 3-6. 振荡频率设置命令的状态帧 (从 78K0/Kx2 至编程器) STX LEN 数据 SUM ETX 02H 01H ST1 检查和 03H 备注 ST1: 震荡频率设置结果 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的详细资 料。 • 关于 UART 通讯模式,请参考 4.5 振荡频率设置命令。 • 关 于三线 串行 I/O 通讯 模式 (CSI),请 参考 5.6 振荡 频 率设 置命令。 应用笔记 U17739CA3V0AN 31 第三章 命令处理描述 3.5 片擦除命令 3.5.1 描述 此命令用来擦除 Flash 存储器的全部内容。另外,只要安全设置未禁止擦除(参见 3.13 安全设置命令),片擦除 处理可以初始化安全设置处理的全部设置信息。 3.5.2 命令帧与状态帧 图 3-7 所示为芯片擦除命令的命令帧格式,图 3-8 所示为命令的状态帧。 图 3-7. 片擦除命令帧(从编程器到 78K0/Kx2) SOH LEN COM SUM ETX 01H 01H 20H (片擦除) 检查和 03H 图 3-8. 片擦除命令的状态帧(从 78K0/Kx2 到编程器) STX LEN 数据 SUM ETX 02H 01H ST1 检查和 03H 备注 ST1:片擦除结果 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的详细 资料。 • 关于 UART 通讯模式,请参考 4.6 片擦除命令。 • 关于三线串行 I/O 通讯模式,请参考 5.7 芯片擦除命令。 32 应用笔记 U17739CA3V0AN 第三章 命令处理描述 3.6 块擦除命令 3.6.1 描述 指定从擦除开始块的开始地址直至擦除结束块的结束地址的所有地址。可以指定多个连续块。 可是,只要擦除未被安全设置禁止 ,内容将不被擦除(参见 3.13 安全设置命令)。 3.6.2 命令帧与状态帧 图 3-9 所示为块擦除命令的命令帧格式,图 3-10 所示为命令的状态帧。 图 3-9. 块擦除命令帧 (从编程器到 78K0/Kx2) SOH 01H LEN COM 命令信息 SUM ETX 07H 22H (块擦除) SAHSAMSALEAHEAMEAL 检查和 03H 备注 SAH, SAM, SAL: 块擦除开始地址 (任何块的开始地址) SAH: 开始地址,高(23 至 16 位)(固定于 00H) SAM: 开始地址,中(15 至 8 位)(固定于 00H) SAL: 开始地址,低(7 至 0 位)(固定于 00H) EAH, EAM, EAL: 块擦除结束地址(内部 Flash 存储器的最后地址) EAH: 结束地址,高(23 至 16 位) EAM: 结束地址,中(15 至 8 位) EAL: 结束地址,低(7 至 0 位) 图 3-10. 块擦除命令的状态帧 (从 78K0/Kx2 到编程器) STX LEN 数据 SUM ETX 02H 01H ST1 检查和 03H 备注 ST1:块擦除结果 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的详细 资料。 • 关于 UART 通讯模式,请参考 4.7 块擦除命令。 • 关于三线串行 I/O 通讯模式(CSI),请参考 5.8 块擦除命令。 应用笔记 U17739CA3V0AN 33 第三章 命令处理描述 3.7 编程命令 3.7.1 描述 此命令在写入开始地址和结束地址发送完成后,通过写入字节来发送数据。此命令将用户程序写入到 Flash 存储器并 进行内部校验。 写入开始/结束地址仅能在块开始/结束地址单元中设置。 若最后数据传输后,两个状态帧(ST1 和 ST2)都显示 ACK,78K0/Kx2 固件自动执行内部校验。所以,内部校验 需要进行状态代码确认。 3.7.2 命令帧与状态帧 图 3-11 所示为编程命令的命令帧格式,图 3-12 所示为命令的状态帧。 图 3-11. 编程命令帧(从编程器到 78K0/Kx2) 通讯信息 SOH LEN COM 01H 07H 40H (编程) 备注 SAH SAM SAL EAH EAM EAL SAH, SAM, SAL: 写入开始地址 EAH, EAM, EAL: 写入结束地址 图 3-12. 编程命令的状态帧(从 78K0/Kx2 到编程器) 备注 STX LEN 数据 SUM ETX 02H 01H ST1 (a) 检查和 03H ST1 (a):命令接收结果 3.7.3 数据帧与状态帧 图 3-13 所示为数据写入的帧格式,图 3-14 所示为数据的状态帧。 图 3-13. 写入数据帧(从编程器到 78K0/Kx2) STX 02H 备注 数据 SUM ETX/ETB 写入数据 检查和 03H/17H LEN 00H 至 FFH (00H = 256) 写入数据:写入用户程序 图 3-14. 数据帧的状态帧(从 78K0/Kx2 到编程器) STX LEN 02H 02H 备注 数据 ST1 (b) ST2 (b) SUM ETX 检查和 03H ST1 (b): 数据接收检查结果 ST2 (b): 写入结果 34 应用笔记 U17739CA3V0AN SUM ETX 检查和 03H 第三章 命令处理描述 3.7.4 全部数据和状态帧传送完成 图 3-15 所示为发送完所有数据后的状态帧。 图 3-15. 传输完成全部数据后的状态帧(从 78K0/Kx2 到编程器) STX LEN 数据 SUM ETX 02H 01H ST1 (c) 检查和 03H 备注 ST1 (c): 内部校验结果 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的详细 资料。 • 关于 UART 通讯模式,请参考 4.8 编程命令。 • 关于三线串行 I/O 通讯模式(CSI),请参考 5.9 编程命令。 3.8 校验命令 3.8.1 描述 此命令用来比较从指定地址范围内的编程器发送的数据和从 78K0/Kx2(读电平)读入的数据,并检查是否相配。 校验开始/结束地址只能在块开始/结束地址单元中设置。 3.8.2 命令帧与状态帧 图 3-16 所示为检验命令的命令帧格式,图 3-17 所示为命令的状态帧。 图 3-16. 校验命令帧(从编程器到 78K0/Kx2) 命令信息 SOH LEN COM 01H 07H 13H(检验) 备注 SAH SAM SAL EAH EAM EAL SUM ETX 检查和 03H SAH, SAM, SAL: 检验开始地址 EAH, EAM, EAL: 检验结束地址 图 3-17. 检验命令的状态帧(从 78K0/Kx2 到编程器) STX LEN 数据 SUM ETX 02H 01H ST1 (a) 检查和 03H 备注 ST1 (a): 命令接收结果 3.8.3 数据帧与状态帧 图 3-18 所示为检验数据的框架格式,图 3-19 所示为数据的状态帧。 图 3-18. 检验数据的数据帧(从编程器到 78K0/Kx2) STX 02H 备注 LEN 00H 至 FFH (00H = 256) 数据 SUM ETX/ETB 校验数据 检查和 03H/17H 校验数据:将校验的用户程序 应用笔记 U17739CA3V0AN 35 第三章 命令处理描述 图 3-19. 数据帧的状态帧(从 78K0/Kx2 到编程器) STX LEN 02H 02H 备注 数据 ST1 (b) ST2 (b) SUM ETX 检查和 03H ST1 (b): 数据接收检验结果 ST2 (b): 检验结果注 注 即使指定地址范围内有校验错误,校验结果 ACK 始终返回。所有校验错误的状态反映 在最后数据的检验结果中。因此,只有在指定地址范围的所有校验处理完成后,才能 检查出发生的校验错误。 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的 详细资料。 • 关于 UART 通讯模式,请参考 4.9 检验命令。 • 关于三线串行 I/O 通讯模式(CSI),请参考 5.10 检验命令。 36 应用笔记 U17739CA3V0AN 第三章 命令处理描述 3.9 块空白检测命令 3.9.1 描述 此命令用来检查 Flash 存储器内指定块的空白状态(擦除状态)。 指定从空白检测开始块的开始地址至空白检测结束块的结束地址。可以指定多个连续块。 3.9.2 命令帧与状态帧 图 3-20 所示为块空白检查命令的命令帧格式,图 3-21 所示为命令的状态帧。 图 3-20. 块空白检查命令帧(从编程器到 78K0/Kx2) SOH LEN COM 命令信息 SUM ETX 01H 07H 32H(块空白检查) SAH SAM SAL EAHEAMEAL 检查和 03H 备注 SAH, SAM, SAL: 块空白检查开始地址(任何块的开始地址) SAH: 开始地址,高(23 至 16 位) SAM: 开始地址,中(15 至 8 位) SAL: 开始地址,低(7 至 0 位) EAH, EAM, EAL: 块空白检查结束地址(任何块的结束地址) EAH: 结束地址,高(23 至 16 位) EAM: 结束地址,中(15 至 8 位) EAL: 结束地址,低(7 至 0 位) 图 3-21. 块空白检测命令的状态帧(从 78K0/Kx2 到编程器) STX LEN 数据 SUM ETX 02H 01H ST1 检查和 03H 备注 ST1:块空白检查结果 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例 程序的详细资料。 • 关于 UART 通讯模式,请参考 4.10 块空白检验命令。 • 关于三线串行 I/O 通讯模式(CSI),请参考 5.11 块空白检验命令。 应用笔记 U17739CA3V0AN 37 第三章 命令处理描述 3.10 硅信号命令 3.10.1 说明 此命令用来读取设备写入协议信息(硅信号)。 如果编程器支持 78K0/Kx2 不支持的编程协议,按照第二和第三字节的数值执行此命令并选择适当的协议。 3.10.2 命令帧与状态帧 图 3-22 所示为硅信号命令的命令帧格式,图 3-23 所示为命令的状态帧。 图 3-22. 硅信号命令帧(从编程器至 78K0/Kx2) SOH LEN COM SUM ETX 01H 01H C0H(硅信号) 检查和 03H 图 3-23. 硅信号命令的状态帧(从 78K0/Kx2 至编程器) STX LEN 数据 SUM ETX 02H 01H ST1 检查和 03H 备注 ST1: 命令接收结果 3.10.3 硅信号数据帧 图 3-24 所示为硅信号数据的帧格式。 图 3-24. 硅信号数据帧(从 78K0/Kx2 到编程器) STX LEN 02H N 备注 Data VEN MET MSC DEC END DEV SCF BOT SUM ETX 检查和 03H 1. n (LEN): 数据长度 VEN: 厂商码(NEC: 10H) MET: 宏扩展码 MSC: 宏功能码 DEC: 设备扩展码 END: 内部 Flash 存储器的结束地址 DEV: 设备名称(μPDxx) SCF: 安全标志信息 BOT: 引导块编号(固定为 03H) 2. 除引导块号码(BOT)的以上字段,低 7 位常用作数据,最高位用于奇偶校验。以下举例说明。 38 应用笔记 U17739CA3V0AN 第三章 命令处理描述 表 3-1. 硅信号数据举例(以μPD78F0522 (78K0/KD2)为例) 字段 内容 长度 硅信号数据举例 注1 实际值 奇偶校验 (字节) <R> VEN 厂商码(NEC) 1 10H (00010000B) 10H 奇 MET 扩展码 (固定于 78K0/Kx2) 1 7FH (01111111B) 7FH 奇 MSC 功能信息 (固定于 78K0/Kx2) 1 04H (00000100B) 04H 奇 DEC 设备扩展码 (固定于 78K0/Kx2) 1 7CH (01111100B) 07H 奇 END 内部 Flash 存储器的结束地址 3 7FH (01111111B) 005FFFH BFH (11011111B) 01H (00000001B) C4H (11000100B = ‘D’) ‘D’ 37H (00110111B = ‘7’) ‘7’ 38H (00111000B = ‘8’) ‘8’ 46H (01000110B = ‘F’) ‘F’ B0H (10110000B = ‘0’) ‘0’ B5H (10110101B = ‘5’) ‘5’ 32H (00110010B = ‘2’) ‘2’ 32H (00110010B = ‘2’) ‘2’ 20H (00100000B = ‘ ’) ‘’ 20H (00100000B = ‘ ’) ‘’ (从低字节中提取) DEV <R> 设备名称 10 SCF 安全标志信息 1 BOT 引导块簇的最后块号(固定) 1 注解 任意 03H (00000011B) 任意 03H 注2 奇 奇 奇 注3 未被加 1. 0 与 1 为奇偶校验(调整字节中 “1”的个数作为奇值) 2. END 区域的奇偶校验计算按以下执行(当结束地址为 005FFFH) <1> 0 从低位开始以 7 位为单位将 END 区域分开 (舍弃高 3 位)。 0 00000000 5 F 01011111 F F 11111111 ↓ 000 0000001 0111111 1111111 <2> 奇校验位加于最高位。 p0000001 p01111111 p1111111(p = 奇校验位) = 0000001 10111111 01111111 = 01 BF 7F <3> 高、中、与低字节的顺序按如下反转。 7F BF 01 应用笔记 U17739CA3V0AN 39 第三章 命令处理描述 以下所示为在 END 区域发送从微处理器得到的数据至实际地址的过程。 <1> 高、中、与低字节的顺序按如下反转。 7F BF 01 ↓ 01 BF 7F <2> 检查在每个字节中“1”的个数为奇数(可在另一时间进行)。 <3> 去掉校验位并在最高位加 3 位 0。 01 BF 7F ↓ 00000001 10111111 01111111 ↓ 0000001 0111111 1111111 ↓ 000 0000001 0111111 1111111 <4> 将值以 8 位为一组进行发送。 00000000101111111111111 ↓ 00000000 01011111 11111111 ↓ = 0 0 5 F F F 若 给 END 区域赋值“7F BF 01” ,实际的最终地址为 005FFFH。 注 3. 当使用安全设置命令来设置安全标志信息时,最高位固定为“1”。但是,若使用硅信号命令读取安全标志信 息,最高位是奇校验。 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的详细资 料。 • 关于 UART 通讯模式,请参考 4.11 硅信号命令。 • 关于三线串行 I/O 通讯模式(CSI),请参考 5.12 硅信号命令。 40 应用笔记 U17739CA3V0AN 第三章 命令处理描述 <R> 3.10.4 78K0/Kx2 硅信号列表 表格 3-2. 78K0/Kx2 硅信号数据列表 数据 项目 描述 长度(字节) 厂商码 NEC 1 10 扩展码 扩展码 1 7F 功能码 功能信息 1 04 设备信息 设备信息 1 7C (7 位数据 + 奇校验位) × 3 3 注1 10 注2 内部 Flash 存储器 结束地址 (十六进制) 78F0500, 78F0500A, 78F0501, 78F0501A, 78F0502, 78F0502A, 78F0503, 78F0503A, 78F0503D, 78F0503DA, 78F0511, 78F0511A, 78F0512, 78F0512A, 78F0513, 78F0513A, 78F0513D, 78F0513DA, 78F0514, 78F0514A, 78F0515, 78F0515A, 78F0515D, 78F0515DA, 78F0521, 78F0521A, 78F0522, 78F0522A, 78F0523, 78F0523A, 设备名称 78F0524, 78F0524A, 78F0525, 78F0525A, 78F0526, 78F0526A, 78F0527, 78F0527A, 78F0527D, 78F0527DA, 78F0531, 78F0531A, 78F0532, 78F0532A, 78F0533, 78F0533A, 78F0534, 78F0534A, 78F0535, 78F0535A, 78F0536, 78F0536A, 78F0537, 78F0537A, 78F0537D, 78F0537DA, 78F0544, 78F0544A, 78F0545, 78F0545A, 78F0546, 78F0546A, 78F0547, 78F0547A, 78F0547D, 78F0547DA 安全信息 安全信息 1 任何值 引导块数 当前选定的引导簇的最后块号 1 03 备注 1. 内部 Flash 存储器结束地址列表 项目 内部 Flash 存储器结束 地址 描述 8 KB (1FFFH) 长度(字节) 数据(十六进制) 3 7FBF80 16 KB (3FFFH) 7F7F80 24 KB (5FFFH) 7FBF01 32 KB (7FFFH) 7F7F01 48 KB (BFFFH) 7F7F02 60 KB (EFFFH) 7FDF83 96 KB (17FFFH) 7F7F85 128 KB (1FFFFH) 7F7F07 (备注 2 列于下页) 应用笔记 U17739CA3V0AN 41 第三章 命令处理描述 备注 2. 设备名称如下表所列。 设备名称列表(1/4) 绰号 设备名称 长度 实际值 (字节) 上行:地址码 下行:字符码 78K0/KB2 D78F0500 D78F0500A D78F0501 D78F0501A D78F0502 D78F0502A D78F0503 37 38 46 B0 B5 B0 B0 20 20 D 7 8 F 0 5 0 0 - - C4 37 38 46 B0 B5 B0 B0 C1 20 D 7 8 F 0 5 0 0 A - C4 37 38 46 B0 B5 B0 31 20 20 D 7 8 F 0 5 0 1 - - C4 37 38 46 B0 B5 B0 31 C1 20 D 7 8 F 0 5 0 1 A - C4 37 38 46 B0 B5 B0 32 20 20 D 7 8 F 0 5 0 2 - - C4 37 38 46 B0 B5 B0 32 C1 20 D 7 8 F 0 5 0 2 A - C4 37 38 46 B0 B5 B0 B3 20 20 D 7 8 F 0 5 0 3 - - D78F0503A C4 37 38 46 B0 B5 B0 B3 C1 20 D 7 8 F 0 5 0 3 A - C4 37 38 46 B0 B5 31 31 20 20 D 7 8 F 0 5 1 1 - - C4 37 38 46 B0 B5 31 31 C1 20 D 7 8 F 0 5 1 1 A - C4 37 38 46 B0 B5 31 32 20 20 D 7 8 F 0 5 1 2 - - C4 37 38 46 B0 B5 31 32 C1 20 D 7 8 F 0 5 1 2 A - C4 37 38 46 B0 B5 31 B3 20 20 D78F0513D D 7 8 F 0 5 1 3 - - D78F0513A C4 37 38 46 B0 B5 31 B3 C1 20 D78F0513DA D 7 8 F 0 5 1 3 A - C4 37 38 46 B0 B5 31 34 20 20 D 7 8 F 0 5 1 4 - - D78F0514A C4 37 38 46 B0 B5 31 34 C1 20 D 7 8 F 0 5 1 4 A - D78F0515 C4 37 38 46 B0 B5 31 B5 20 20 D78F0515D D 7 8 F 0 5 1 5 - - D78F0515A C4 37 38 46 B0 B5 31 B5 C1 20 D78F0515DA D 7 8 F 0 5 1 5 A - D78F0511 D78F0511A D78F0512 D78F0512A D78F0513 D78F0514 42 C4 D78F0503D D78F0503DA 78K0/KC2 10 应用笔记 U17739CA3V0AN 第三章 命令处理描述 设备名称列表(2/4) 略称 设备名称 长度 实际数值 (字节) 上行:地址码 下行:字符码 78K0/KD2 D78F0521 C4 37 38 46 B0 B5 32 31 20 20 D 7 8 F 0 5 2 1 - - C4 37 38 46 B0 B5 32 31 C1 20 D 7 8 F 0 5 2 1 A - C4 37 38 46 B0 B5 32 32 20 20 D 7 8 F 0 5 2 2 - - D78F0522A C4 37 38 46 B0 B5 32 32 C1 20 D 7 8 F 0 5 2 2 A - D78F0523 C4 37 38 46 B0 B5 32 B3 20 20 D 7 8 F 0 5 2 3 - - C4 37 38 46 B0 B5 32 B3 C1 20 D 7 8 F 0 5 2 3 A - C4 37 38 46 B0 B5 32 34 20 20 D 7 8 F 0 5 2 4 - - C4 37 38 46 B0 B5 32 34 C1 20 D 7 8 F 0 5 2 4 A - C4 37 38 46 B0 B5 32 B5 20 20 D 7 8 F 0 5 2 5 - - C4 37 38 46 B0 B5 32 B5 C1 20 D 7 8 F 0 5 2 5 A - C4 37 38 46 B0 B5 32 B6 20 20 D 7 8 F 0 5 2 6 - - D78F0526A C4 37 38 46 B0 B5 32 B6 C1 20 D 7 8 F 0 5 2 6 A - D78F0527 C4 37 38 46 B0 B5 32 37 20 20 D78F0527D D 7 8 F 0 5 2 7 - - D78F0527A C4 37 38 46 B0 B5 32 37 C1 20 D78F0527DA D 7 8 F 0 5 2 7 A - D78F0521A D78F0522 D78F0523A D78F0524 D78F0524A D78F0525 D78F0525A D78F0526 10 应用笔记 U17739CA3V0AN 43 第三章 命令处理描述 设备名称列表(3/4) 略称 设备名称 长度 实际数值 (字节) 上行:地址码 下行:字符码 78K0/KE2 D78F0531 C4 37 38 46 B0 B5 B3 31 20 20 D 7 8 F 0 5 3 1 - - C4 37 38 46 B0 B5 B3 31 C1 20 D 7 8 F 0 5 3 1 A - C4 37 38 46 B0 B5 B3 32 20 20 D 7 8 F 0 5 3 2 - - D78F0532A C4 37 38 46 B0 B5 B3 32 C1 20 D 7 8 F 0 5 3 2 A - D78F0533 C4 37 38 46 B0 B5 B3 B3 20 20 D 7 8 F 0 5 3 3 - - C4 37 38 46 B0 B5 B3 B3 C1 20 D 7 8 F 0 5 3 3 A - C4 37 38 46 B0 B5 B3 34 20 20 D 7 8 F 0 5 3 4 - - C4 37 38 46 B0 B5 B3 34 C1 20 D 7 8 F 0 5 3 4 A - C4 37 38 46 B0 B5 B3 B5 20 20 D 7 8 F 0 5 3 5 - - C4 37 38 46 B0 B5 B3 B5 C1 20 D 7 8 F 0 5 3 5 A - C4 37 38 46 B0 B5 B3 B6 20 20 D 7 8 F 0 5 3 6 - - D78F0536A C4 37 38 46 B0 B5 B3 B6 C1 20 D 7 8 F 0 5 3 6 A - D78F0537 C4 37 38 46 B0 B5 B3 37 20 20 D78F0537D D 7 8 F 0 5 3 7 - - D78F0537A C4 37 38 46 B0 B5 B3 37 C1 20 D78F0537DA D 7 8 F 0 5 3 7 A - D78F0531A D78F0532 D78F0533A D78F0534 D78F0534A D78F0535 D78F0535A D78F0536 44 10 应用笔记 U17739CA3V0AN 第三章 命令处理描述 设备名称列表 (4/4) 略称 设备名称 长度 实际数值 (字节) 上行:地址码 下行:字符码 78K0/KF2 D78F0544 C4 37 38 46 B0 B5 34 34 20 20 D 7 8 F 0 5 4 4 - - C4 37 38 46 B0 B5 34 34 C1 20 D 7 8 F 0 5 4 4 A - C4 37 38 46 B0 B5 34 B5 20 20 D 7 8 F 0 5 4 5 - - D78F0545A C4 37 38 46 B0 B5 34 B5 C1 20 D 7 8 F 0 5 4 5 A - D78F0546 C4 37 38 46 B0 B5 34 B6 20 20 D 7 8 F 0 5 4 6 - - C4 37 38 46 B0 B5 34 B6 C1 20 D 7 8 F 0 5 4 6 A - C4 37 38 46 B0 B5 34 37 20 20 D78F0547D D 7 8 F 0 5 4 7 - - D78F0547A C4 37 38 46 B0 B5 34 37 C1 20 D78F0547DA D 7 8 F 0 5 4 7 A - D78F0544A D78F0545 D78F0546A D78F0547 10 应用笔记 U17739CA3V0AN 45 第三章 命令处理描述 3.11 版本获取命令 3.11.1 描述 此命令用来获取 78K0/Kx2 设备版本和固件版本信息。 设备版本值固定为 00H。 根据 78K0/Kx2 固件版本必须更改编程参数时,使用此命令。 注意事项 固件版本可能更新,更新版本不会对 Flash 编程参数造成改变(此时,不公布更新的固件版本)。 举例 固件版本和重编程序参数 固件版本 编程参数 参数 A V1.00 更新需要改变 Flash 编程参数 V2.00 更新的项目不影响更改变 Flash 编程参数 参数 B V3.00 3.11.2 命令帧与状态帧 图 3-25 所示为版本获取命令的命令帧格式,图 3-26 所示为命令版本获取命令的状态帧。 图 3-25. 版本获取命令帧(从编程器到 78K0/Kx2) SOH LEN COM SUM ETX 01H 01H C5H(版本获取) 检查和 03H 图 3-26. 版本获取命令的状态帧(从 78K0/Kx2 到编程器) STX LEN 数据 SUM ETX 02H 01H ST1 检查和 03H 备注 46 ST1: 命令接收结果 应用笔记 U17739CA3V0AN 第三章 命令处理描述 3.11.3 版本数据帧 图 3-27 所示为版本数据的数据帧。 图 3-27. 版本数据帧(从 78K0/Kx2 到编程器) STX LEN 02H 06H 备注 数据 DV1 DV2 DV3 FV1 FV2 FV3 SUM ETX 检查和 03H DV1: 设备版本整数 (固定为 00H) DV2: 设备版本的第 1 小数位 (固定为 00H) DV3: 设备版本的第 2 小数位(固定为 00H) FV1: 固件版本整数 FV2: 固件版本的第 1 小数位 FV3: 固件版本的第 2 小数位 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的详细资 料。 • 关于 UART 通讯模式,请参考 4.12 版本获取命令。 • 关于三线串行 I/O 通讯模式(CSI),请参考 5.13 版本获取命令。 3.12 校验和命令 3.12.1 描述 此命令用来获取指定区域的校验和数据。 对于校验和计算的开始/结束地址,从 Flash 存储器开头指定块单元(1KB)的一个固定地址。 校验和数据通过指定地址从原始值(000H)以 1 字节为单位做累减获得。 3.12.2 命令帧与状态帧 图 3-28 所示为检查和命令的命令帧格式。图 3-29 所示为校验和命令的状态帧。 图 3-28. 校验和命令帧(从编程器到 78K0/Kx2) 命令信息 SOH LEN COM 01H 07H B0H(检查和) 备注 SAH SAM SAL EAH EAM EAL SUM ETX 检查和 03H SAH, SAM, SAL: 校验和计算开始地址 EAH, EAM, EAL: 校验和计算结束地址 图 3-29. 校验和命令的状态帧(从 78K0/Kx2 到编程器) STX LEN Data SUM ETX 02H 01H ST1 检查和 03H 备注 ST1: 命令接收结果 应用笔记 U17739CA3V0AN 47 第三章 命令处理描述 3.12.3 校验和数据帧 图 3-30 所示为包括校验和数据的帧格式。 图 3-30. 校验和数据帧(从 78K0/Kx2 到编程器) STX LEN 02H 02H 备注 数据 CK1 CK2 SUM ETX 检查和 03H CK1: 检查和数据的高 8 位 CK2: 检查和数据的低 8 位 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的详细资 料。 • 关于 UART 通讯模式,请参考 4.13 检查和命令。 • 关于三线串行 I/O 通讯模式(CSI),请参考 5.14 检查和命令。 3.13 安全设置命令 3.13.1 描述 此命令用来进行安全设置(允许或禁止写入,块擦除,芯片擦除,与引导块簇重写)。用此命令进行设置,可限制 未经许可者重写 Flash 存储器。 注意事项 即使在安全设置后,可以执行从允许到禁止的更改设置,但不允许执行从禁止到允许的更改设置。若执行 类似的设置,将产生保护错误(10H)。若必须这样设置,首先要先通过片擦除命令将所有的安全标记都初 始化 (块擦除命令不能用来初始化安全标记)。 若禁止片擦除或启动块重写,片擦除自身也被禁止,那么编程器不能擦除这些设置。根据编程器规 范,推荐片擦除禁止前重新确认安全设置。 3.13.2 命令帧与状态帧 图 3-31 所示为安全设置命令的命令帧格式,图 3-32 所示为命令的状态帧。 安全设置命令帧包括块数与页数,但这些字段没有任何特别用处,所以固定设置为 00H。 图 3-31. 安全设置命令帧(从编程器到 78K0/Kx2) (命令信息) SOH LEN COM 01H 03H A0H(安全设置) 00H 00H (固定) (固定) SUM ETX 检查和 03H 图 3-32. 安全设置命令的状态帧(从 78K0/Kx2 到编程器) STX LEN 数据 SUM ETX 02H 01H ST1 (a) 检查和 03H 备注 48 ST1 (a): 命令接收结果 应用笔记 U17739CA3V0AN 第三章 命令处理描述 3.13.3 数据帧与状态帧 图 3-33 所示为安全数据帧的格式。图 3-34 所示为数据的状态帧。 图 3-33. 安全数据帧(从编程器到 78K0/Kx2) STX LEN 02H 02H 备注 数据 FLG BOT SUM ETX 检查和 03H FLG: 安全标记 BOT: 启动块簇的最后块数(固定为 03H) 图 3-34. 安全数据写入状态帧(从 78K0/Kx2 到编程器) STX LEN 数据 SUM ETX 02H 01H ST1 (b) 检查和 03H 备注 ST1 (b): 安全数据写入结果 3.13.4 内部校验检查和状态帧 图 3-35 所示为内部校验检查的状态帧。 图 3-35. 内部校验检查的状态帧(从 78K0/Kx2 到编程器) STX LEN 数据 SUM ETX 02H 01H ST1 (c) 检查和 03H 备注 ST1 (c): 内部校验结果 以下表格所示为安全标记的内容。 表格 3-3. 安全标记内容 项目 Bit 7 内容 固定为“1” Bit 6 Bit 5 Bit 4 启动块簇重写禁止标志(1:允许启动块重写,0:禁止引导块重写) Bit 3 固定为“1” Bit 2 编程禁止标志(1:允许遍程,0:禁止编程) Bit 1 块擦除禁止标志(1:允许块擦除,0:禁止块擦除) Bit 0 片擦除禁止标志(1:允许片擦除,0:禁止片擦除) 应用笔记 U17739CA3V0AN 49 第三章 命令处理描述 以下表格所示为每个操作下安全标志字段设置和允许/禁止状态的关系。 表 3-4. 安全标志字段与每个操作的允许/禁止状态 操作模式 Flash 存储器编程模式 命令 自编程模式 安全设置后的命令操作 • 不管安全设置数值,所有命令都可以执行 √:允许执行, 禁止执行 • 仅保持安全设置值 U: 无法在引导区域写入和块擦除 可以在除引导区域以外的区域写入或块擦除 安全设置项目 编程 片擦除 块擦除 禁止编程 × √ × 禁止片擦除 √ × × 禁止块擦除 √ √ × 禁止导入块重写标记 U × U 与 Flash 存储器编程模式条件相同(onboard/off-board 编程) 请参考以下章节关于编程器和 78K0/Kx2 间处理顺序流程图、命令处理流程图以及每种通讯模式下示例程序的详细资 料。 • 关于 UART 通讯模式,请参考 4.14 安全设置命令。 • 关于三线串行 I/O 通讯模式(CSI),请参考 5.15 安全设置命令。 50 应用笔记 U17739CA3V0AN 第 4 章 UART 通讯模式 本章流程图中所示的每个符号(tXX 与 tWTXX)均为“第 6 章 FLASH 存储器编程参数特性”中项目的符号。 有关每个指定值的信息,请参阅“第 6 章 FLASH 存储器编程参数特性”。 应用笔记 U17739CA3V0AN 51 第4章 <R> 4.1 UART 通讯模式 命令帧发送处理流程图 命令帧发送流程 发送命令帧头 (SOH=01H) 数据发送间隙等待 tDR (UART) 发送数据长度(LEN) 数据发送间隙等待 tDR (UART) 发送 命令号 (COM) 已发送 (LEN − 1) 字节? 是 否 数据发送间隙等待 tDR (UART) 发送 1-字节 命令信息 数据发送间等待 tDR (UART) 发送 校验和数据 (SUM) 数据发送间隙等待 tDR (UART) 发送 命令帧脚 (ETX = 03H) 命令帧发送结束 52 应用笔记 U17739CA3V0AN 第4章 <R> 4.2 UART 通讯模式 数据帧发送处理流程图 数据帧发送处理 发送数据帧头 (STX=02H) 数据发送间隙等待 tDR (UART) 发送数据长度 (LEN) 已发送 LEN 字节? 是 否 数据发送间隙等待 发送 tDR (UART) 1 字节数据 数据发送间隙等待 tDR (UART) 发送校验和数据 (SUM) 数据发送间隙等待 最后一个数据帧? tDR (UART) 否 是 发送最后一个数据帧脚 发送非最后数据帧的帧脚 (ETX=03H) (ETX=17H) 数据帧发送结束 应用笔记 U17739CA3V0AN 53 第4章 <R> 4.3 UART 通讯模式 数据帧接收处理流程图 数据帧接收处理 是 已接收数据帧头 (STX=02H) ? 否 否 超时? tFD1/tFD2 是 接收超时错误 是 已接收数据长度 (LEN) ? 否 否 超时? tDT 是 接收超时错误 是 已接收 1 字节数据? 否 否 超时? tDT 是 接收超时错误 否 已接收 LEN 字节? 是 是 已接收校验和 数据 (SUM) ? 否 否 超时? tDT 是 接收超时错误 是 最后一个数据帧脚 (ETX=03H) 或者 非最后一个数据帧 (ETB=17H) 的帧脚 已接收数据帧脚? 否 否 超时? tDT 是 接收超时错误 校验和错误? 是 否 数据帧接收结束 54 校验和错误 应用笔记 U17739CA3V0AN 第4章 4.4 UART 通讯模式 复位命令 4.4.1 处理流程图 复位命令处理流程 7 8 K0 K 0 /Kx 2 编程器 <1> 从上次帧接收开始等待直到 下次命令发送 COM 低电平输出(00H @ 9,600 bps) <2> 等待 t <3> 12 低电平输出(00H @ 9,600 bps) <4> 等待 t <5> 2C 复位命令帧发送 <6> 发生超时 t 检查状态帧接收 是否超时 t <7> WT0 在指定时间内接收到状态帧 超时错误 [C] 状态帧接收 <8> 接收状态 [ACK/非 ACK] 非 ACK 超过重试次数?注 [是/否] ACK 否 转至 <5> 是 异常终止 [B] 注 正常完成 [A] 请勿超过复位命令发送的重试次数(最多 16 次)。 应用笔记 U17739CA3V0AN 55 第4章 UART 通讯模式 4.4.2 处理流程描述 <1> 从上一帧接收开始等待直到下次命令处理开始(等待时间 tCOM)。 <2> 输出低电平(以 9,600 bps 发送数据 00H)。 <3> 等待状态(等待时间 t12)。 <4> 输出低电平(以 9,600 bps 发送数据 00H)。 <5> 等待状态(等待时间 t2C)。 <6> “复位”命令由命令帧发送处理过程进行发送。 <7> 在命令发送到状态帧接收期间执行超时检查。 如果发生超时,返回超时错误 [C](超时时间 tWT0)。 <8> 检查状态码。 当 ST1 = ACK: 当 ST1 ≠ ACK: 正常完成 [A] 检查重查次数 (tRS)。 如果未超过重查次数,则从 <5> 开始重新顺序执行。 如果超过重查次数,则处理异常终止 [B]。 4.4.3 处理完成时状态 处理完成时状态 正常完成 [A] 正常应答 (ACK) 描述 状态码 06H 已正常执行命令,并且已经建立编程器与 78K0/Kx2 之间的同 步。 异常终止 [B] 超时错误 [C] 56 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 − 未在指定时间内接收到状态帧。 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.4.4 流程图 复 位命令处 理 从上一帧接收等待至 下次命令发送 tCOM 以 9,600 bps 传输?00? 等待 t12 以 9,600 bps 传输?00? 等待 t2C 命令帧发送处理 (复位) 已接收状态帧? 否 是 否 超时? 是 tWT0(UART) 超时错误 [C] 状态=ACK? 是 否 超过重查次数? 否 是 正常完成 [A] 异常终止 [B] 应用笔记 U17739CA3V0AN 57 第4章 UART 通讯模式 4.4.5 示例程序 以下所示为“复位”命令处理的示例程序。 /****************************************************************/ /* /* 复位命令 */ /* */ */ /****************************************************************/ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_ua_reset(void) { u16 rc; u32 retry; set_uart0_br(BR_9600); // 更改为 9600bps fl_wait(tCOM); // 等待 putc_ua(0x00); // 发送 0x00 @ 9600bps fl_wait(t12); putc_ua(0x00); // wait // 发送 0x00 @ 9600bps for (retry = 0; retry < tRS; retry++){ fl_wait(t2C); // 等待 put_cmd_ua(FL_COM_RESET, 1, fl_cmd_prm); // 发送“复位”命令 rc = get_sfrm_ua(fl_ua_sfrm, tWT0_TO); if (rc == FLC_DFTO_ERR) break; // t.o. ? // 是 if (rc == FLC_ACK){ break; // case [C] // ACK ? // 是 // case [A] } else{ NOP(); } //continue; // case [B](如果退出循环) } // switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // default: // return return rc; rc; break; // case [A] return rc; break; break; // case [B] } return rc; } 58 应用笔记 U17739CA3V0AN // case [C] 第4章 4.5 UART 通讯模式 振荡频率设置命令 4.5.1 处理流程图 振荡频率设置命令处理顺序 78K0/Kx2 编程器 <1> 从上一帧接收开始等待直到下 次命令发送 tCOM <2> 发送振荡频率设置命令帧 <3> 切换 UART 通讯波特率为 115,200 bps 发生超时 <4> 检查状态帧接收是否超时 tWT9 在指定时间内接收到状态帧 <5> 状态帧接收 发生超时 [C] 接收状态 [ACK/非 ACK] 非 ACK 异常终止 [B] ACK 正常完成 [A] 应用笔记 U17739CA3V0AN 59 第4章 UART 通讯模式 4.5.2 处理顺序描述 <1> 从上次帧接收开始等待直到下次命令发送(等待时间 tCOM)。 <2> 振荡频率设置命令由命令帧发送处理过程发送。 <3> 接收状态帧之后, UART 波特率更改为 115,200 bps。此后波特率固定为 115,200 bps <4> 从命令发送开始执行超时检查,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT9)。 <5> 检查状态码。 当 ST1 = ACK: 正常完成 [A] 当 ST1 ≠ ACK: 异常终止 [B] 4.5.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已将操作频率正确地置入 78K0/Kx2。 异常终止 [B] 参数错误 05H 振荡频率值超过范围。 校验和错误 07H 传输的命令帧校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 超时错误 [C] 60 − 未在指定时间内接收到状态帧。 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.5.4 流程图 振荡频率设置命令处理 从上个帧接收开始等待直到下次命令发送 tCOM 命令帧发送处理 (振荡频率设置) 传输振荡频率设置命令前,UART 通讯将以 9,600 bps 运行。 接收状态帧后,波特率将改为 115,200 bps,此后通讯率固定为 115,200 bps。 将 UART 通讯波特率 更改为 115,200 bps。 已接收状态帧? 否 是 否 超时? 是 tWT9 超时错误 [C] 状态 = ACK? 否 是 正常完成 [A] 异常终止 [B] 应用笔记 U17739CA3V0AN 61 第4章 UART 通讯模式 4.5.5 示例程序 以下所示为振荡频率设置命令处理的示例程序。 /****************************************************************/ /* /* 设置 Flash 设备时钟值命令 */ /* */ */ /****************************************************************/ /* [i] u8 clk[4] ... 频率数据 (D1-D4) */ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_ua_setclk(u8 clk[]) { u16 rc; fl_cmd_prm[0] = clk[0]; // "D01" fl_cmd_prm[1] = clk[1]; // "D02" fl_cmd_prm[2] = clk[2]; // "D03" fl_cmd_prm[3] = clk[3]; // "D04" fl_wait(tCOM); // 发送命令前等待 put_cmd_ua(FL_COM_SET_OSC_FREQ, 5, fl_cmd_prm); set_flbaud(BR_115200); // 更改波特率 set_uart0_br(BR_115200); // 更改波特率 (h.w.) rc = get_sfrm_ua(fl_ua_sfrm, tWT9_TO); // // 获取状态帧 switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // default: // return return rc; rc; break; // case [A] return rc; break; break; // case [B] } return rc; } 62 应用笔记 U17739CA3V0AN // case [C] 第4章 4.6 UART 通讯模式 片擦除命令 4.6.1 处理流程图 片擦除命令处理顺序 78K0/K 2 编程器 <1> 从上一帧接收开始等待直到下次命令发送 tCOM <2> 发送片擦除命令帧 发生超时 <3> 检查状态帧接收是否超时 t1WT 在指定时间内接收到状态帧 发生超时 [C] - <4> 状态帧接收 接收状态 [ACK/非 ACK] 非 ACK 异常终止 [B] ACK 正常完成 [A] 应用笔记 U17739CA3V0AN 63 第4章 UART 通讯模式 4.6.2 处理顺序描述 <1> 从上一帧接收开始等待直到下次命令发送(等待时间 tCOM)。 <2> 片擦除命令由命令帧发送处理过程发送。 <3> 超时检查从命令传输时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT1)。 <4> 检查状态码。 当 ST1 = ACK: 正常完成 [A] 当 ST1 ≠ ACK: 异常终止 [B] 4.6.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答(ACK) 06H 已正常执行命令,并且已正常执行片擦除。 异常退出 [B] 校验和错误 07H 已发送命令帧的校验和发生异常。 保护错误 10H 片擦除受安全设置的保护。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 擦除错误 1AH 发生擦除错误。 超时错误 [C] 64 − 未在指定时间内接收到状态帧。 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.6.4 流程图 片擦除命令处理 从上一帧接收等待至 下次命令发送 tCOM 命令帧发送处理 (片擦除) 已接收状态帧? 否 是 否 超时? tWT1 是 超时错误 [C] 状态=ACK? 否 是 正常完成 [A] 异常终止 [B] 应用笔记 U17739CA3V0AN 65 第4章 UART 通讯模式 4.6.5 示例程序 以下说明了片擦除命令处理的示例程序。 /****************************************************************/ /* /* 擦除所有(片)命令 */ /* */ */ /****************************************************************/ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_ua_erase_all(void) { u16 rc; fl_wait(tCOM); // 发送命令前等待 put_cmd_ua(FL_COM_ERASE_CHIP, 1, fl_cmd_prm); // 发送“擦除片”命令 rc = get_sfrm_ua(fl_ua_sfrm, tWT1_MAX); // // 获取状态帧 switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // // default: return return rc; rc; break; // case [A] return rc; break; break; // case [B] } return rc; } 66 应用笔记 U17739CA3V0AN // case [C] 第4章 4.7 UART 通讯模式 块擦除命令 4.7.1 处理流程图 块擦除命令处理流程 7 8K0/Kx 2 编 程器 从上一帧接收等待至 下次命令发送 <1> 块擦除命令帧发送 <2> 发生超时 检查状态帧接收是否超时 <3> t COM t WT2 在指定时间内接收到状态帧 超时错误 [C] <4> 状态帧接收 接收状态[ACK/非 ACK] 非 ACK ACK 异常终止 [B] 正常完成 [A] 应用笔记 U17739CA3V0AN 67 第4章 UART 通讯模式 4.7.2 处理顺序描述 <1> 从上一帧接收开始等待直到下次命令发送(等待时间 tCOM)。 <2> 块擦除命令由命令帧发送处理过程进行发送。 <3> 超时检查从命令发送时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT2)。 <4> 检查状态码。 当 ST1 = ACK: 正常完成 [A] 当 ST1 ≠ ACK: 异常终止 [B] 4.7.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常执行块擦除。 异常终止 [B] 参数错误 05H 块数目超出范围。 校验和错误 07H 已发送命令帧的校验和发生异常。 保护错误 10H 写入、块擦除或片擦除受安全设置的保护。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 擦除错误 1AH 发生擦除错误。 超时错误 [C] 68 − 未在指定时间内接收到状态帧。 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.7.4 流程图 块擦除命令处理 从上一帧接收等待至 下次命令发送 tCOM 命令帧发送处理 (块擦除) 已接收状态帧? 否 是 否 超时? tWT2 是 否 异常终止 [B] 状态=ACK? 超时错误 [C] 是 正常完成 [A] 应用笔记 U17739CA3V0AN 69 第4章 UART 通讯模式 4.7.5 示例程序 以下所示为一个块的块擦除命令处理的示例程序。 /****************************************************************/ /* /* 块擦除命令 */ /* */ */ /****************************************************************/ /* [i] u16 sblk ... 要擦除起始块 (0...255) */ /* [i] u16 eblk ... 要擦除结束块 /* [r] u16 (0...255) ... 错误代码 */ */ /****************************************************************/ u16 fl_ua_erase_blk(u16 sblk, u16 eblk) { u16 rc; u32 wt2_max; u32 top, bottom; top = get_top_addr(sblk); // 获取起始块的起始地址 bottom = get_bottom_addr(eblk); // 获取结束块的结束地址 set_range_prm(fl_cmd_prm, top, bottom); // 设置 SAH/SAM/SAL, EAH/EAM/EAL wt2_max = make_wt2_max(sblk, eblk); fl_wait(tCOM); // 发送命令前等待 put_cmd_ua(FL_COM_ERASE_BLOCK, 7, fl_cmd_prm); // 发送“擦除片”命令 rc = get_sfrm_ua(fl_ua_sfrm, wt2_max); // // 获取状态帧 switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // default: // return return rc; rc; break; // case [A] return rc; break; break; // case [B] } return rc; } 70 应用笔记 U17739CA3V0AN // case [C] 第4章 4.8 UART 通讯模式 编程命令 4.8.1 处理流程图 编程命令处理顺序 78K0/Kx2 编程器 <1>从上一帧接收开始等待直到下 次命令发送 <2> 发生超时 <3> tCOM 发送编程命令帧 检查状态帧接收是否超时 tWT3 在指定时间内接收到状态帧 超时错误 [C] <4> 状态帧接收 接收状态 [ACK/非 ACK] 非 ACK ACK 从上一帧接收开始等待直到下次 <5> 命令发送 异常终止 [B] <6> 发生超时 <7> tFD3 (UART) 数据帧(用户数据)传输 检查状态帧接收是否超时 tWT4 在指定时间内接收到状态帧 超时错误 [C] <8> 非 ACK 状态帧接收 接收状态 (ST1) [ACK/非 ACK] ACK 异常终止 [B] 接收状态 (ST2) [ACK/非 ACK] 非 ACK ACK 异常终止 [D] 否 转至 <5> 已传输所有数据帧? [是/否] 是 发生超时 <9> 检查状态帧接收是否超时 tWT5 × 块数目 在指定时间内接收到状态帧 超时错误 [C] <10> 状态帧接收 接收状态 [ACK/非 ACK] 非 ACK ACK 异常终止 [E] 正常完成 [A] 应用笔记 U17739CA3V0AN 71 第4章 UART 通讯模式 4.8.2 处理顺序描述 <1> 从上一帧接收开始等待直到下次命令发送(等待时间 tCOM)。 <2> 编程命令由命令帧发送处理过程进行发送。 <3> 超时检查从命令发送时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT3)。 <4> 检查状态码。 当 ST1 = ACK: 转至 <5>。 当 ST1 ≠ ACK: 异常终止 [B] <5> 从上次帧接收等待至下次命令发送(等待时间 tCOM(UART))。 <6> 用户数据由数据帧发送处理过程进行发送。 <7> 超时检查从用户数据发送时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT4)。 <8> 检查状态码 (ST1/ST2)(也可参阅处理流程图与流程图)。 当 ST1 ≠ ACK: 异常终止 [B] 当 ST1 = ACK: 以下处理将按照 ST2 值进行操作。 • 当 ST2 = ACK: 所有数据帧发送完成后,转至 <9>。 如果仍有数据帧未发送,该流程将从 <5> 重新顺序执行。 • 当 ST2 ≠ ACK: 异常终止 [D] <9> 执行超时检查,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT5× 块数目)。 <10> 检查状态码。 72 当 ST1 = ACK: 正常完成 [A] 当 ST1 ≠ ACK: 异常终止 [E] 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.8.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常写入用户数据。 异常终止 [B] 参数错误 05H 指定的起始/结束地址超出 flash 存储器范围,或者不是 8 的倍 数。 校验和错误 07H 已发送命令帧的校验和发生异常。 保护错误 10H 写入操作受安全设置的保护。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 − 超时错误 [C] 异常终止 [D] 写入错误 异常终止 [E] MRG11 错误 1CH (ST2) 1BH 未在指定时间内接收到状态帧。 发生写入错误。 发生内部验证错误。 应用笔记 U17739CA3V0AN 73 第4章 UART 通讯模式 4.8.4 流程图 编程命令处理 从上一帧接收开始等待直到下 tCOM 次命令发送 命令帧传输处理 (编程) 已接收状态帧? 否 是 否 超时? tWT3 是 超时错误 [C] 状态 = ACK? 否 是 异常终止 [B] 从上一帧接收开始等待直到下 次命令发送 tFD3 (UART) 数据帧传输处理 (用户程序) 已接收状态帧? 否 是 否 超时? tWT4 是 超时错误 [C] ST1 = ACK? 否 是 ST2 = ACK? 异常终止 [B] 否 是 异常终止 [D] 是 已发送所有数据帧? 是 已接收状态帧? 否 否 否 超时? 否 状态 = ACK? 是 异常终止 [E] 74 正常完成 [A] 应用笔记 U17739CA3V0AN 是 tWT5 × 块数目 超时错误 [C] 第4章 UART 通讯模式 4.8.5 示例程序 以下所示为编程命令处理的示例程序。 /****************************************************************/ /* /* 写入命令 */ /* */ */ /****************************************************************/ /* [i] u32 top ... 起始地址 */ /* [i] u32 bottom ... 结束地址 /* [r] u16 */ ... 错误代码 */ /****************************************************************/ #define u16 fl_st2_ua (fl_ua_sfrm[OFS_STA_PLD+1]) fl_ua_write(u32 top, u32 bottom) { u16 rc; u32 send_head, send_size; bool is_end; u16 block_num; /************************************************/ /* 设置参数 */ /************************************************/ set_range_prm(fl_cmd_prm, top, bottom); // 设置 SAH/SAM/SAL, EAH/EAM/EAL block_num = get_block_num(top, bottom); // 获取块数目 /************************************************/ /* 发送命令和检查状态 */ /************************************************/ fl_wait(tCOM); // 发送命令前等待 put_cmd_ua(FL_COM_WRITE, 7, fl_cmd_prm); // 发送“编程”命令 rc = get_sfrm_ua(fl_ua_sfrm, tWT3_TO); // 获取状态帧 switch(rc) { // case FLC_NO_ERR: case FLC_DFTO_ERR: default: return rc; break; // continue return rc; break; break; // case [B] // case [C] } /************************************************/ /* 发送用户数据 */ /************************************************/ send_head = top; 应用笔记 U17739CA3V0AN 75 第4章 UART 通讯模式 while(1){ // make send data frame if ((bottom - send_head) > 256){ // 其余大小大于 256 ? is_end = false; // “是”代表不是结束帧 send_size = 256; // 传输大小 = 256 字节 } else{ is_end = true; send_size = bottom - send_head + 1; // 传输大小 = (bottom – // send_head)+1 字节 } memcpy(fl_txdata_frm, rom_buf+send_head, send_size); // 设置数据帧 // 净荷 send_head += send_size; // 发送数据帧前等待 fl_wait(tFD3_UA); put_dfrm_ua(send_size, fl_txdata_frm, is_end); // 发送用户数据 rc = get_sfrm_ua(fl_ua_sfrm, tWT4_MAX); // 获取状态帧 switch(rc) { case break; // 继续 return rc; break; break; // case [B] case FLC_NO_ERR: FLC_DFTO_ERR: default: return rc; // case [C] } if (fl_st2_ua != FLST_ACK){ rc = decode_status(fl_st2_ua); return // ST2 = ACK ? // 否 rc; // case [D] } if (is_end) break; } /************************************************/ /* 进行内部检验 */ /************************************************/ rc = get_sfrm_ua(fl_ua_sfrm, (tWT5_MAX * block_num)); // switch(rc) { // case FLC_NO_ERR: // case FLC_DFTO_ERR: // default: // return return rc; rc; break; // case [A] return rc; break; break; // case [E] } return rc; } 76 // 再次获取状态帧 应用笔记 U17739CA3V0AN // case [C] 第4章 4.9 UART 通讯模式 验证命令 4.9.1 处理流程图 验证命令处理顺序 78K0/Kx2 编程器 从上一帧接收等待直 到下次命令发送 <1> t COM 验证命令帧发送 <2> 发生超时 检查状态帧接收是否超时 t <3> WT 6 在指定时间内接收到状态帧 超时错误 [C] 状态 帧 接收 <4> 接收状态 <ACK/非 ACK> 非 ACK A CK 异常终止 [B] 从上一帧接收等待至 下次命令发送 <5> t (UART) FD 3 数据帧(要验证的用户数据)发送 <6> 检查状态帧接收是否超时 发生超时 t <7> WT 7 在指定时间内接收到状态帧 超时错误 [C] 状态帧接收 (ST1/ST2) <8> 接收状态(ST1)[ACK/ 非 ACK] 非 ACK 异常终止 [B] ACK 接收状态 (ST2)[ACK/ 非 ACK] 非 ACK AC K 异常终止 [D] 已发送所有数据帧? 否 转至 <5> [ 是 /否 ] 是 正常完成 [A] 应用笔记 U17739CA3V0AN 77 第4章 UART 通讯模式 4.9.2 处理顺序描述 <1> 从上一帧接收开始等待直到下次命令发送(等待时间 tCOM)。 <2> 验证命令由命令帧发送处理过程进行发送。 <3> 超时检查从命令发送时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT6)。 <4> 检查状态码。 当 ST1 = ACK: 转至 <5>。 当 ST1 ≠ ACK: 异常终止 [B] <5> 从上一帧接收开始等待直到下次命令发送(等待时间 tCOM(UART))。 <6> 要验证的用户数据由数据帧发送处理过程进行发送。 <7> 超时检查从用户数据发送时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT7)。 <8> 检查状态码 (ST1/ST2)(也可参阅处理流程图与流程图)。 当 ST1 ≠ ACK: 异常终止 [B] 当 ST1 = ACK: 以下处理将按照 ST2 值进行操作。 • 当 ST2 = ACK: 如果所有数据帧发送完成,则处理将正常结束 [A]。 如果仍有数据帧未发送,该流程将从 <5> 重新顺序执行。 • 当 ST2 ≠ ACK: 异常终止 [D] 4.9.3 处理完成时状态 处理完成时状态 状态码 说明 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常完成验证。 异常终止 [B] 参数错误 05H 指定的起始/结束地址超出 flash 存储器范围。 校验和错误 07H 已发送命令帧或数据帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 − 超时错误 [C] 异常终止 [D] 78 验证错误 0FH (ST2) 未在指定时间内接收到状态帧。 验证失败或发生其他错误。 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.9.4 流程图 验 证 命令处 理 从上一帧接收等待 直到下次命令发送 t COM 命令帧传输处理 (验证) 已接收状态帧? 否 是 超时? 否 t WT 6 是 超时错误 ST1 = ACK? [C] 否 是 异常终止 从上一次帧接收等待 至下次命令发送 [B] t FD3 (UART ) 数据帧传输处理 (用户程序) 已接收状态帧? 否 是 否 超时? t WT 7 是 超时错误 ST1 = ACK? [C] 否 是 异常终 止 [B] ST2 = ACK? 否 是 异常终止 [D] 已传输所有 否 数据帧? 是 正常完成 [A] 应用笔记 U17739CA3V0AN 79 第4章 UART 通讯模式 4.9.5 示例程序 以下所示为验证命令处理的示例程序。 /****************************************************************/ /* /* 验证命令 */ /* */ */ /****************************************************************/ /* [i] u32 top ... 起始地址 */ /* [i] u32 bottom ... 结束地址 /* [r] u16 */ ... 错误代码 */ /****************************************************************/ u16 fl_ua_verify(u32 top, u32 bottom) { u16 rc; u32 send_head, send_size; bool is_end; /************************************************/ /* 设置参数 */ /************************************************/ set_range_prm(fl_cmd_prm, top, bottom); // 设置 SAH/SAM/SAL, EAH/EAM/EAL /************************************************/ /* 发送命令与检查状态 */ /************************************************/ fl_wait(tCOM); // 发送命令前等待 put_cmd_ua(FL_COM_VERIFY, 7, fl_cmd_prm); // 发送“验证”命令 rc = get_sfrm_ua(fl_ua_sfrm, tWT6_TO); // 获取状态帧 switch(rc) { case FLC_NO_ERR: break; // 继续 // FLC_DFTO_ERR: return rc; break; break; // case [B] case default: return rc; // case [C] } /************************************************/ /* 发送用户数据 */ /************************************************/ send_head = top; while(1){ // make send data frame if ((bottom - send_head) > 256){ 80 // 其他大小大于 256 ? 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 is_end = false; // “是”代表非结束帧 send_size = 256; // 传输大小 = 256 字节 } else{ is_end = true; send_size = bottom - send_head + 1; // 传输大小 = (bottom // - send_head)+1 字节 } memcpy(fl_txdata_frm, rom_buf+send_head, send_size); // 设置数据帧 // 净荷 send_head += send_size; fl_wait(tFD3_UA); put_dfrm_ua(send_size, fl_txdata_frm, is_end); // 发送用户数据 rc = get_sfrm_ua(fl_ua_sfrm, tWT7_TO); // 获取状态帧 switch(rc) { case FLC_NO_ERR: break; // 继续 // FLC_DFTO_ERR: return rc; break; break; // case [B] case default: return rc; // case [C] } if (fl_st2_ua != FLST_ACK){ rc = decode_status(fl_st2_ua); return // ST2 = ACK ? // 否 rc; } if (is_end) // case [D] // 已发送所有用户数据? // 是 break; //continue; } return FLC_NO_ERR; // case [A] } 应用笔记 U17739CA3V0AN 81 第4章 UART 通讯模式 4.10 块空白检查命令 4.10.1 处理流程图 块空白检查名称处理顺序 78K0/Kx2 编程器 从上一帧接收开始等待直到下次命令 发送 <1> 发送块空白检查命令帧 <2> 发生超时 tCOM 检查状态帧接收是否超时 <3> tWT8 × 块数目 在指 定时间内 接收到 状 态帧 状态帧接收 <4> 超时错误 [C] 接收状态 [ACK/非 ACK] 非 ACK ACK 异常终止 [B] 正常完成 [A] 82 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.10.2 处理顺序描述 <1> 从上一帧接收开始等待直到下次命令发送(等待时间 tCOM)。 <2> 块空白检查命令由命令帧发送处理过程进行发送。 <3> 超时检查从命令发送时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT8× 块数目)。 <4> 检查状态码。 当 ST1 = ACK: 正常完成 [A] 当 ST1 ≠ ACK: 异常终止 [B] 4.10.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且所有指定块为空白。 异常终止 [B] 参数错误 05H 块数目超出范围。 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 MRG11 错误 1BH Flash 存储器内指定的块不为空白。 超时错误 [C] − 状态帧接收发生超时错误。 应用笔记 U17739CA3V0AN 83 第4章 UART 通讯模式 4.10.4 流程图 块空白检查命令处理 从上一帧接收开始等待直到下次命令 发送 tCOM 命令帧发送处理 (块空白检查) 已接收状态帧? 否 是 超时? 是 tWT8 × 块数目 超时错误 [C] 状态 = ACK? 否 是 异常终止 [B] 正常完成 [A] 84 应用笔记 U17739CA3V0AN 否 第4章 UART 通讯模式 4.10.5 示例程序 以下所示为块空白检查命令处理的示例程序。 /****************************************************************/ /* /*块空白检查命令 */ /* */ */ /****************************************************************/ /* [i] u32 top ... 起始地址 */ /* [i] u32 bottom ... 结束地址 /* [r] u16 */ ... 错误代码 */ /****************************************************************/ u16 fl_ua_blk_blank_chk(u32 top, u32 bottom) { u16 rc; u16 block_num; set_range_prm(fl_cmd_prm, top, bottom); // 设置 SAH/SAM/SAL, EAH/EAM/EAL block_num = get_block_num(top, bottom); // 获取块数目 fl_wait(tCOM); // 发送命令前等待 put_cmd_ua(FL_COM_BLOCK_BLANK_CHK, 7, fl_cmd_prm); rc = get_sfrm_ua(fl_ua_sfrm, tWT8_MAX * block_num); // // 获取状态帧 switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // // default: return return rc; rc; break; // case [A] return rc; break; break; // case [B] // case [C] } return rc; } 应用笔记 U17739CA3V0AN 85 第4章 UART 通讯模式 4.11 硅签名命令 4.11.1 处理流程图 硅签名 命令处理流程 78K0/Kx2 编程器 <1> 发生超时 从上一 帧接收等待 至下次命令发送 tCOM <2> 硅签名 命令帧发送 <3> 检查状态帧接收是否超时 tWT11 在指定时间内 接收到状态帧 <4> 超时错误 [C] 状态帧接收 接收状态[ACK/非 ACK] 非 ACK ACK <5> 异常终止 [B] 发生超时 检查数据帧接收是否超时 在指定时间内 接收到数据帧 <6> 数据帧(硅签名)接收处理 超时错误 [C] 正常数据帧? [是/否] 否 数据帧错误 [D] 86 tFD2 是 正常完成 [A] 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.11.2 处理顺序描述 <1> 从上一帧接收开始等待直到下次命令发送(等待时间 tCOM)。 <2> 硅签名命令由命令帧发送处理过程进行发送。 <3> 超时检查从命令发送时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT11)。 <4> 检查状态码。 当 ST1 = ACK: 转至 <5>。 当 ST1 ≠ ACK: 异常终止 [B] <5> 执行超时检查,直至数据帧(硅签名数据)接收。 如果发生超时,则返回超时错误 [C](超时时间 tFD2)。 <6> 检查已接收数据帧(硅签名数据)。 如果数据帧正常: 正常完成 [A] 如果数据帧异常: 数据帧错误 [D] 4.11.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常获取硅签名。 异常终止 [B] 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 读取错误 20H 读取安全信息失败。 超时错误 [C] − 状态帧接收或数据帧接收发生超时错误。 数据帧错误 [D] − 接收到数据帧校验和,因为硅签名数据异常。 应用笔记 U17739CA3V0AN 87 第4章 UART 通讯模式 4.11.4 流程图 硅签名 命令处 理 从上一帧接收等待 至下次命令发送 tCOM 命令帧发送处理 (硅签 名 ) 已接收状态帧? 否 是 否 超时? tWT11 是 超时错误 [C] 否 状态 = ACK? 是 异常终止 [B] 已接收数据帧 (硅签名) 否 是 否 超时? 否 正常的数据帧? 是 数据帧错误 [D] 88 正常完成 [A] 应用笔记 U17739CA3V0AN 是 tFD2 超时错误 [C] 第4章 UART 通讯模式 4.11.5 示例程序 以下说明了硅签名命令处理的示例程序。 /****************************************************************/ /* /* 获取硅签名命令 */ */ /* */ /****************************************************************/ /* [i] u8 *sig ... 指向签名保存区域的指针 */ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_ua_getsig(u8 *sig) { u16 rc; // 发送命令前等待 fl_wait(tCOM); put_cmd_ua(FL_COM_GET_SIGNATURE, 1, fl_cmd_prm); // 发送“获取签名”命令 rc = get_sfrm_ua(fl_ua_sfrm, tWT11_TO); switch(rc) { case FLC_NO_ERR: // FLC_DFTO_ERR: case default: return rc; // 获取状态帧 break; // 继续 return rc; break; break; // case [B] // case [C] } rc = get_dfrm_ua(fl_rxdata_frm, tFD2_TO); // 获取状态帧 // 如果发生错误 if (rc){ return rc; // case [D] } memcpy(sig, fl_rxdata_frm+OFS_STA_PLD, fl_rxdata_frm[OFS_LEN]); // 复制签名数据 return rc; // case [A] } 应用笔记 U17739CA3V0AN 89 第4章 UART 通讯模式 4.12 版本获取命令 4.12.1 处理流程图 版本获取命令处理流程 78K0/Kx2 编程器 从上一帧接收等待 直到下次命令传输 <1> tCOM 版本获取命令帧发送 <2> 检查状态帧接收是否超时 tWT12 <3> 发生超时 在指定时间内 接收到状态帧 状态帧接收 <4> 超时错误 [C] 接收状态[ACK/非 ACK] 非 ACK ACK 异常终止 [B] 发生超时 <5> 检查状态帧接收是否超时 在指定时间内 接收到状态帧 <6> 数据帧(版本数据)接收 ) 超时错误 [C] 正常数据帧? [是/否] 否 是 数据帧错误 [D] 90 tFD2 正常完成 [A] 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.12.2 处理顺序描述 <1> 从上一帧接收开始等待直到下次命令发送(等待时间 tCOM)。 <2> 版本获取命令由命令帧发送处理过程进行发送。 <3> 超时检查从命令发送时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT12)。 <4> 检查状态码。 当 ST1 = ACK: 转至 <5>。 当 ST1 ≠ ACK: 异常终止 [B] <5> 执行超时检查,直至数据帧(版本数据)接收。 如果发生超时,则返回超时错误 [C](超时时间 tFD2)。 <6> 检查已接收数据帧(版本数据)。 如果数据帧正常: 正常完成 [A] 如果数据帧异常: 数据帧错误 [D] 4.12.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常获取版本数据。 异常终止 [B] 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 超时错误 [C] − 状态帧接收或数据帧接收发生超时错误。 数据帧错误 [D] − 接收到数据帧校验和,因为版本数据异常。 应用笔记 U17739CA3V0AN 91 第4章 UART 通讯模式 4.12.4 流程图 版本获取命令处理流程 从上一帧接收等待 直到下次命令发送 tCOM 命令帧发送处理 (版本获取) 已接收状态帧? 否 是 否 超时? tWT11 是 超时错误 [C] 否 状态 = ACK? 是 异常终止 [B] 已接收数据帧 (版本数据)? 否 是 否 超时? 否 正常的数据帧? 是 数据帧错误 [D] 92 正常完成 [A] 应用笔记 U17739CA3V0AN 是 tFD2 超时错误 [C] 第4章 UART 通讯模式 4.12.5 示例程序 以下所示为版本获取命令处理的示例程序。 /****************************************************************/ /* /* 获取设备/固件版本命令 */ /* */ */ /****************************************************************/ /* [i] u8 *buf ... 指向版本数据保存区域的指针 */ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_ua_getver(u8 *buf) { u16 rc; // 发送命令前等待 fl_wait(tCOM); put_cmd_ua(FL_COM_GET_VERSION, 1, fl_cmd_prm); // 发送“获取版本”命令 rc = get_sfrm_ua(fl_ua_sfrm, tWT12_TO); switch(rc) { case FLC_NO_ERR: // FLC_DFTO_ERR: case default: return rc; // 获取状态帧 break; // 继续 return rc; break; break; // case [B] // case [C] } rc = get_dfrm_ua(fl_rxdata_frm, tFD2_TO); // 获取数据帧 if (rc){ return rc; // case [D] } memcpy(buf, fl_rxdata_frm+OFS_STA_PLD, DFV_LEN);// 复制版本数据 return rc; // case [A] } 应用笔记 U17739CA3V0AN 93 第4章 UART 通讯模式 4.13 校验和命令 4.13.1 处理流程图 校验和命令处理流程 78K0/Kx2 编程器 从上一帧接收等待 直到下次命令发送 tCOM <1> 校验和命令帧发送 <2> 检查状态帧接收是否超时 t WT11 <3> 发生超时 在指定时间内 接收到状态帧 状态帧接收 <4> 超时错误 [C] 接收状态[ACK/非 ACK] 非 ACK ACK <5> 异常终止 [B] 发生超时 检查数据帧接收是否超时 在指定时间内 接收到数据帧 <6> 数据帧(校验和数据)接收 超时错误 [C] 正常数据帧? [ 是/ 否 ] 否 数据帧错误 [D] 94 tFD2 是 正常完成 [A] 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.13.2 处理顺序描述 <1> 2.从上一帧接收开始等待直到下次命令发送(等待时间 tCOM)。 <2> 校验和命令由命令帧发送处理过程进行发送。 <3> 超时检查从命令发送时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT16)。 <4> 检查状态码。 当 ST1 = ACK: 转至 <5>。 当 ST1 ≠ ACK: 异常终止 [B] <5> 执行超时检查,直至数据帧(校验和数据)接收。 如果发生超时,则返回超时错误 [C](超时时间 tFD1)。 <6> 检查已接收数据帧(校验和数据)。 如果数据帧正常: 正常完成 [A] 如果数据帧异常: 数据帧错误 [D] 4.13.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常获取校验和数据。 异常终止 [B] 参数错误 05H 指定的起始/结束地址超出 flash 存储器范围,或者指定的地址不 是 2 KB 单位内的固定地址。 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 超时错误 [C] − 状态帧接收或数据帧接收发生超时错误。 数据帧错误 [D] − 接收到数据帧校验和,因为版本数据异常。 应用笔记 U17739CA3V0AN 95 第4章 UART 通讯模式 4.13.4 流程图 校验和命令处理流程 从上一帧接收等待 至下次命令发送 tCOM 命令帧发送处理 (版本获取) 已接收状态帧? 否 是 否 超时? tWT11 是 超时错误[C] 否 状态= ACK? 是 异常终止[B] 已接收数据帧 (校验和数据)? 否 是 否 超时? 否 正常的数据帧? 是 数据帧错误[D] 96 正常完成[A] 应用笔记 U17739CA3V0AN 是 tFD2 超时错误[C] 第4章 UART 通讯模式 4.13.5 示例程序 以下所示为校验和命令处理的示例程序。 /****************************************************************/ /* */ /* 获取校验和命令 */ /* */ /****************************************************************/ /* [i] u16 *sum ... 指向校验和保存区域的指针 */ /* [i] u32 top ... 起始地址 */ /* [i] u32 bottom ... 结束地址 */ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_ua_getsum(u16 *sum, u32 top, u32 bottom) { u16 rc; /************************************************/ /* 设置参数 */ /************************************************/ // 设置参数 set_range_prm(fl_cmd_prm, top, bottom); // 设置 SAH/SAM/SAL, EAH/EAM/EAL /************************************************/ /* 发送命令 */ /************************************************/ // 发送命令前等待 fl_wait(tCOM); put_cmd_ua(FL_COM_GET_CHECK_SUM, 7, fl_cmd_prm); // 发送“获取版本”命令 rc = get_sfrm_ua(fl_ua_sfrm, tWT16_TO); switch(rc) { case // // 获取状态帧 FLC_NO_ERR: case FLC_DFTO_ERR: default: return rc; break; return break; // 继续 rc; break; // case [B] // case [C] } /************************************************/ /* 获取数据帧(校验和数据) */ /************************************************/ rc = get_dfrm_ua(fl_rxdata_frm, tFD1_TO); // 获取状态帧 if (rc){ return rc; // 如果没有错误, // case [D] } *sum = (fl_rxdata_frm[OFS_STA_PLD] << 8) + fl_rxdata_frm[OFS_STA_PLD+1]; // 设置 SUM 数据 return rc; // case [A] } 应用笔记 U17739CA3V0AN 97 第4章 UART 通讯模式 4.14 安全设置命令 4.14.1 处 理流程图 安全设置命令处理流程 编程器 78K 0 / Kx 2 从上一帧接收等待 直到下次命令发送 <1> 安全设置命令帧发送 <2> 检查状态帧接收是否超时 <3> 发生超时 t COM t WT 13 在指定时间内 接收到数据帧 超时错误 [C] 状态帧接收 <4> 接收状态[ACK/非 ACK] 非 ACK ACK 从上一帧接收等待 <5> 异常终止 [B] 至下次命令发送 数据帧(安全数据)发送 <6> <7> 发 生超时 t FD 3 (UART ) 检查状态帧接收是否超时 t WT 14 在指定时间内 接收到数据帧 超时错误 [C] 状态帧接收 <8> 接收状态[ACK/非 ACK] 非 ACK ACK 异常终止 [D] 发生超时 <9> 检查状态帧接收是否超时 在指定时间内 接收到数据帧 超时错误 [C] <10> 状态帧接收 接收状态[ACK/非 ACK] 非 ACK ACK 异常终止 [E] 98 正常完成 [A] 应用笔记 U17739CA3V0AN t WT 15 第4章 UART 通讯模式 4.14.2 处理顺序描述 <1> 从上一帧接收开始等待直到下次命令发送(等待时间 tCOM)。 <2> 安全设置命令由命令帧发送处理过程进行发送。 <3> 超时检查从命令发送时开始,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT13)。 <4> 检查状态码。 当 ST1 = ACK: 转至 <5>。 当 ST1 ≠ ACK: 异常终止 [B] <5> 从上一帧接收开始等待直到下次命令发送(等待时间 tCOM(UART))。 <6> 数据帧(安全设置数据)由数据帧发送处理过程进行发送。 <7> 执行超时检查,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT14)。 <8> 检查状态码。 当 ST1 = ACK: 转至 <9>。 当 ST1 ≠ ACK: 异常终止 [D] <9> 执行超时检查,直至状态帧接收。 如果发生超时,则返回超时错误 [C](超时时间 tWT15)。 <10> 检查状态码。 当 ST1 = ACK: 正常完成 [A] 当 ST1 ≠ ACK: 异常终止 [E] 4.14.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常执行安全设置。 异常终止 [B] 参数错误 05H 命令信息(参数)不是 00H。 校验和错误 07H 已发送命令帧或数据帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 − 超时错误 [C] 异常终止 [D] 异常终止 [E] 状态帧接收或数据帧接收发生超时错误。 FLMD 错误 18H 发生写入错误。 写入错误 1CH 发生写入错误(包括已经设置安全数据的情况)。 MRG11 错误 1BH 发生内部验证错误。 应用笔记 U17739CA3V0AN 99 第4章 UART 通讯模式 4.14.4 流程图 安全设置命令处理 从上一帧接收等待 直到下次命令发送 tCOM 命令帧发送 (安全设置) 已接收状态帧? 否 超时? 是 否 tWT13 是 超时错误[C] 状态=ACK? 否 是 异常终止[B] 从上一帧接收等待 直到下次命令发送 tFD3 数据帧发送处理 (安全数据) 已接收状态帧? 否 超时? 是 否 tWT14 是 超时错误 [C] 状态=ACK? 否 是 已接收状态帧? 异常终止[D] 否 超时? 是 否 tWT15 否 状态=ACK? 是 超时错误[C] 是 异常终止[E] 100 正常完成[A] 应用笔记 U17739CA3V0AN 第4章 UART 通讯模式 4.14.5 示例程序 以下所示为安全设置命令处理的示例程序。 /****************************************************************/ /* /* 设置安全旗标命令 */ /* */ */ /****************************************************************/ /* [i] u8 scf ... 安全旗标数据 */ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_ua_setscf(u8 scf) { u16 rc; /************************************************/ /* 设置参数 */ /************************************************/ fl_cmd_prm[0] = 0x00; // "BLK" (必须为 0x00) fl_cmd_prm[1] = 0x00; // "PAG" (必须为 0x00) fl_txdata_frm[0] = (scf |= 0b11101000); // "FLG" (位 7, 6, 5, 3 必须为“1” (务必)) fl_txdata_frm[1] = 0x03; // "BOT" (固定 0x03) /************************************************/ /* 发送命令 */ /************************************************/ fl_wait(tCOM); // 发送命令前等待 put_cmd_ua(FL_COM_SET_SECURITY, 3, fl_cmd_prm); rc = get_sfrm_ua(fl_ua_sfrm, tWT13_TO); switch(rc) { case FLC_NO_ERR: // FLC_DFTO_ERR: case default: return rc; // 获取状态帧 break; // 继续 return rc; break; break; // case [B] // case [C] } /************************************************/ /* 发送数据帧(安全设置数据) */ /************************************************/ fl_wait(tFD3_UA); 应用笔记 U17739CA3V0AN 101 第4章 UART 通讯模式 put_dfrm_ua(2, fl_txdata_frm, true); // 发送安全设置(旗标)与 BOT 数据 rc = get_sfrm_ua(fl_ua_sfrm, tWT14_MAX); // 获取状态帧 switch(rc) { case FLC_NO_ERR: // FLC_DFTO_ERR: case default: return rc; break; // 继续 return rc; break; break; // case [B] // case [C] } /************************************************/ /* 检查内部检验 */ /************************************************/ rc = get_sfrm_ua(fl_ua_sfrm, tWT15_MAX); // 获取状态帧 // switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // // default: return return rc; rc; break; // case [A] return rc; break; break; // case [B] } return rc; } 102 应用笔记 U17739CA3V0AN // case [C] 第 5 章 3 线串行 I/O 通讯模式 (CSI) 本章流程图中所示的每个符号(tXX 与 tWTXX)均为“第 6 章 FLASH 存储器编程参数特性”中项目的符号。 有关每个指定值的信息,请参阅“第 6 章 FLASH 存储器编程参数特性”。 应用笔记 U17739CA3V0AN 103 第5章 <R> 5.1 3 线串行 I/O 通讯模式 (CSI) 命令帧发送处理流程图 命令帧发送处理 命令帧头 (SOH = 01H) 发送 在数据接收间隔中等待 tDR (CSI) 数据长度 (LEN) 发送 在数据接收间隔中等待 tDR (CSI) 命令号 (COM) 发送 已发送 (LEN − 1) 字节? 是 否 在数据接收间隔中等待 tDR (CSI) 发送 1 字节 参数 在数据接收间隔中等待 tDR (CSI) 校验和数据 (SUM) 发送 在数据接收间隔中等待 tDR (CSI) 命令帧脚 (ETX = 03H) 发送 命令帧发送结束 104 应用笔记 U17739CA3V0AN 第5章 <R> 5.2 3 线串行 I/O 通讯模式 (CSI) 数据帧发送处理流程图 数据帧发送处理 数据帧头 (STX=02H) 发送 数据传输间隔等待 t DR ( CS ) 数据长度 (LEN) 发送 已发送 字节? 是 否 数据发送间隔等待 t DR ( CS ) 发送 1 字节数据 数据发送间隔等待 t DR (CSI ) 校验和数( SUM )发送 数据发送间隔等待 最后一个数据帧? t DR (CSI ) 否 是 最后一个数据帧脚 (ETX=03H) 发送 非最后一个数据帧脚 (ETB=17H) 发送 数据发送结束 应用笔记 U17739CA3V0AN 105 第5章 <R> 5.3 3 线串行 I/O 通讯模式 (CSI) 数据帧接收处理流程图 数据帧接收 处理 数据帧头 (STX = 02H) 接收 在数据接收间隔中等待 tDT (CSI) 数据长度 (LEN) 接收 在数据接收间隔中等待 tDT (CSI) 接收 1 字节数据 否 已接收 LEN 字节? 是 在数据接收间隔中等待 tDT (CSI) 校验和数据 (SUM) 接收 在数据接收间隔中等待 tDT (CSI) 接收最后一个数据帧脚 (ETX = 03H) 或非最后一 个数据帧脚 (ETB = 17H) 校验和错误? 是 否 数据帧接收结束 106 应用笔记 U17739CA3V0AN 校验和错误 第5章 5.4 3 线串行 I/O 通讯模式 (CSI) 状态命令 5.4.1 处理流程图 状态命令处理流程 注 根据执行命令的不同,应用程序参数亦有所不同。 78K0/Kx 2 编程器 状态命令帧发送 <1> <2> 从命令帧发送等待至状态帧获取 t SF 否 状态帧接收处理 <3> 接收状态 [ACK/BUSY/ 非 ACK, BUSY] BUSY 超时? t WTXX ( ma x . ) 注 ACK 非 , BUSY ACK 是 异常终止 [B] 超时错误 [C] 正常完成 [A] 应用笔记 U17739CA3V0AN 107 第5章 3 线串行 I/O 通讯模式 (CSI) 5.4.2 处理顺序描述 <1> 状态命令由命令帧发送处理进行发送。 <2> 从命令发送等待至状态帧接收(等待时间 tSF)。 <3> 检查状态码。 当 ST1 = ACK: 正常完成 [A] 当 ST1 = BUSY: 执行超时检查 (tWTXX(MAX.)注)。 如果处理操作未超时,流程将从 <1> 重新执行。 如果发生超时,则返回超时错误 [C]。 当 ST1 ≠ ACK, BUSY: 注 异常终止 [B] 根据执行命令的不同,应用程序参数亦有所不同。 5.4.3 处理完成时状态 处理完成时状态 状态码 说明 正常完成 [A] 正常应答 (ACK) 06H 已正常接收发送自 78K0/Kx2 的状态帧。 异常终止 [B] 命令错误 04H 接收到不支持的命令或异常的帧。 参数错误 05H 命令信息(参数)无效。 校验和错误 07H 发送自编程器的帧的数据发生异常。 验证错误 0FH 发送自编程器的帧的数据发生验证错误。 保护错误 10H 已尝试执行受安全设置命令保护的进程。 否定应答 (NACK) 15H 否定应答 读取错误 20H 读取安全信息失败。 MRG10 错误 1AH 发生擦除错误。 MRG11 错误 1BH 数据写入期间发生内部验证错误,或者发生空白检查错误。 写入错误 1CH 发生写入错误。 <R> 超时错误 [C] 108 − 命令发送后,指定时间已过但是仍返回 BUSY 响应。 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.4.4 流程图 状态命令处理 命令帧发送处理 (状态) t SF 从命令帧发送等待至状态帧接收 状态帧接收处理 状态 = B USY? 是 否 否 超时? t WTXX (ma x . ) 注 是 超时错误 [C] 否 状态 = A CK? 是 正常完成 [A] 注 异常终止 [B] 根据执行命令的不同,应用程序参数亦有所不同。 应用笔记 U17739CA3V0AN 109 第5章 3 线串行 I/O 通讯模式 (CSI) 5.4.5 示例程序 以下所示为状态命令处理的示例程序。 /****************************************************************/ /* /* 获取状态命令 (CSI) */ /* */ */ /****************************************************************/ /* [r] u16 ... 已解码状态或错误代码 */ /* /* (请参阅 fl.c 中 fl.h/fl-proto.h 与 */ */ decode_status() 的定义) /* */ /****************************************************************/ static u16 fl_csi_getstatus(u32 limit) { u16 rc; start_flto(limit); while(1){ put_cmd_csi(FL_COM_GET_STA, 1, fl_cmd_prm); // 发送“状态”命令 // 帧 // 等待 fl_wait(tSF); // 获取状态帧 rc = get_sfrm_csi(fl_rxdata_frm); switch(rc){ case FLC_BUSY: if (check_flto()) return // 超时? FLC_DFTO_ERR; // 是,超时 // case [C] // 否,重试 continue; // 校验和错误 default: return case rc; // 无错误 FLC_NO_ERR: break; } if (fl_st1 == FLST_BUSY){ // ST1 = BUSY if (check_flto()) // 超时? return continue; } break; FLC_DFTO_ERR; //否,重试 // ACK 或其他错误(除 BUSY 之外) } 110 //是,超时// case [C] 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) rc = decode_status(fl_st1); // 解码状态以返回代码 // switch(rc) { // // case // default: // FLC_NO_ERR: return return rc; break; rc; break; // case [B] // case [A] } return rc; } 应用笔记 U17739CA3V0AN 111 第5章 5.5 3 线串行 I/O 通讯模式 (CSI) 复位命令 5.5.1 处理流程图 复位命令处理流程图 7 8 K 0 /Kx 2 编程器 从上一帧接收等待 至下次命令发送 <1> 复位命令真发送 <2> 否 从命令帧发送 等待 至状态检查 <3> 状态检查处理结果 <5> 结果 [ 正常完成 / 异常终止 / 超时错误 ] 异常终止 注 超时错误 正常完成 是 异常终止 [B] 超时错误 [C] 正常完成 [A] 注 112 t WT 0 状态检查处理 <4> 超过重查次数? t COM 请勿超过复位命令发送的重查次数(最多 16 次)。 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.5.2 处理流程描述 <1> 从上一帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 复位命令由命令帧发送处理进行发送。 <3> 从命令发送等待至状态检查处理(等待时间 tWT0)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 正常完成 [A] 当处理异常结束时: 如果未超过重查次数,该流程从 <1> 开始重新执行。 如果超过重查次数,该处理异常结束 [B]。 当发生超时错误时: 返回超时错误 [C]。 5.5.3 处理完成时状态 处理完成时状态 状态码 说明 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已建立编程器与 78K0/Kx2 之间的同步。 异常终止 [B] 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 超时错误 [C] − 状态检查处理由于超时而终止。 应用笔记 U17739CA3V0AN 113 第5章 3 线串行 I/O 通讯模式 (CSI) 5.5.4 流程图 复位命令处理 从上一帧接收等待 至下次命令发送 t COM 命令帧发送处理 (复位) 从命令帧发送等待 至状态检查 t WT 0 状态检查处理 状态检查 处理结果 = 异常终止? 是 否 超过重查次数? 是 异常终止 [B] 状态检查 处理结果= 超时错误? 是 否 (正常完成) 正常完成 [A] 114 超时错误 [C] 应用笔记 U17739CA3V0AN 否 第5章 3 线串行 I/O 通讯模式 (CSI) 5.5.5 示例程序 以下所示为复位命令处理的示例程序。 /****************************************************************/ /* /* 复位命令 (CSI) */ /* */ */ /****************************************************************/ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_csi_reset(void) { u16 rc; u32 retry; for (retry = 0; retry < tRS; retry++){ // 发送命令帧前等待 fl_wait(tCOM); put_cmd_csi(FL_COM_RESET, 1, fl_cmd_prm); // 发送“复位”命令帧 fl_wait(tWT0); rc = fl_csi_getstatus(tWT0_TO); // 获取状态 if (rc == FLC_DFTO_ERR) // 超时错误? // 是 break; if (rc == FLC_ACK) break; // case [C] // Ack ? // 是 // case [A] //continue; // case [B](如果退出循环) } // switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // // default: return return rc; rc; break; // case [A] return rc; break; break; // case [B] // case [C] } return rc; } 应用笔记 U17739CA3V0AN 115 第5章 5.6 3 线串行 I/O 通讯模式 (CSI) 振荡频率设置命令 CSI 通讯期间,执行该命令并非必需的步骤(如果 CSI 通讯期间要求根据编程器规范执行该命令,请将频率设置为 8 MHz)。 5.6.1 处理流程图 振荡频率设置命令处理流程 7 8 K 0 /Kx 2 编程器 从上一帧接收等待 至下次命令发送 <1> 振荡频率设置命令帧发送 <2> 从命令帧发送等待 至状态检 <3> t WT 9 <4 > 状态检查处理 <5> 状态检查处理结果 结果 [ 正常完成 / 异常终止 / 超时错误 ] 超时错误 异常终止 正常完成 超时错误 [C] 异常终止 [B] 正常完成 [A] 116 t COM 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.6.2 处理流程描述 <1> 从上一帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 振荡频率设置命令由命令帧发送处理进行发送。 <3> 从命令发送等待至状态检查处理(等待时间 tWT9)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 正常完成 [A] 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 5.6.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已将操作频率正确置入 78K0/Kx2。 异常终止 [B] 参数错误 05H 振荡频率值超出范围。 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 超时错误 [C] − 未在指定时间内接收到状态帧。 应用笔记 U17739CA3V0AN 117 第5章 3 线串行 I/O 通讯模式 (CSI) 5.6.4 流程图 振荡频率设置命令发送 从上一帧接收等待 至下次命令发送 tCOM 命令帧发送处理 (振荡频率设置) 从命令帧发送等待 至状态检查 tWT9 状态检查处理 超时错误? 是 否 超时错误 [C] 正常完成? 否 是 正常完成 [A] 118 异常终止 [B] 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.6.5 示例程序 以下所示为振荡频率设置命令处理的示例程序。 /****************************************************************/ /* /* 设置 Flash 设备时钟值命令 (CSI) */ /* */ */ /****************************************************************/ /* [i] u8 clk[4] ... 频率数据 (D1-D4) */ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_csi_setclk(u8 clk[]) { u16 rc; fl_cmd_prm[0] = clk[0]; // "D01" fl_cmd_prm[1] = clk[1]; // "D02" fl_cmd_prm[2] = clk[2]; // "D03" fl_cmd_prm[3] = clk[3]; // "D04" // 发送命令帧前等待 fl_wait(tCOM); put_cmd_csi(FL_COM_SET_OSC_FREQ, 5, fl_cmd_prm); // 发送“振荡频率设置”命令 fl_wait(tWT9); rc = fl_csi_getstatus(tWT9_TO); // // 获取状态帧 switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // default: // return return rc; rc; break; // case [A] return rc; break; break; // case [B] // case [C] } return rc; } 应用笔记 U17739CA3V0AN 119 第5章 5.7 3 线串行 I/O 通讯模式 (CSI) 片擦除命令 5.7.1 处理流程图 片擦除命令处理流程 7 8 K 0 / Kx 2 编程器 从上一帧接收等待 <1> 至下次命令发送 片擦除命令帧发送 < 2> 从命令帧发送等待 至状态检 <3> 状态检查处理结果 < 5> 结果 [ 正常完成 / 异常终止 / 超时错误 ] 异常终止 正常完成 超时错误 [C] 异常终止 [B] 正常完成 [A] 120 t WT 9 状态检查处理 < 4> 超时错误 t COM 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.7.2 处理流程描述 <1> 从上一帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 片擦除命令由命令帧发送处理进行发送。 <3> 从命令发送等待至状态检查处理(等待时间 tWT1)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 正常完成 [A] 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 5.7.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常执行片擦除。 异常终止 [B] 校验和错误 07H 已发送命令帧的校验和发生异常。 保护错误 10H 片擦除受安全设置的保护。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 擦除错误 1AH 发生擦除错误。 超时错误 [C] − 未在指定时间内接收到状态帧。 应用笔记 U17739CA3V0AN 121 第5章 3 线串行 I/O 通讯模式 (CSI) 5.7.4 流程图 片擦除命令处理 从上一帧接收等待 至下次命令发送 tCOM 命令帧传输处理 (片擦除) 从命令帧传输等待 至状态检查 tWT9 状态检查处理 超时错误? 是 否 正常完成? 超时错误 [C] 否 是 正常完成 [A] 122 异常终止 [B] 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.7.5 示例程序 以下所示为片擦除命令处理的示例程序。 /****************************************************************/ /* /* 擦除所有(片)命令 (CSI) */ /* */ */ /****************************************************************/ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_csi_erase_all(void) { u16 rc; // 发送命令帧前等待 fl_wait(tCOM); put_cmd_csi(FL_COM_ERASE_CHIP, 1, fl_cmd_prm); // 发送“片擦除”命令 fl_wait(tWT1); // 获取状态帧 rc = fl_csi_getstatus(tWT1_MAX); // switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // default: // return return rc; rc; break; // case [A] return rc; break; break; // case [B] // case [C] } return rc; } 应用笔记 U17739CA3V0AN 123 第5章 5.8 3 线串行 I/O 通讯模式 (CSI) 块擦除命令 5.8.1 处理流程图 块擦除命令处理流程 7 8 K 0 / Kx 2 编程器 从上一帧接收等待 至下次命令发送 <1> 块擦除命令帧发送 <2> 从命令帧传输等待 至状态检 <3> 状态检查处理结果 <5> 结果 [ 正常完成 / 异常终止 /超时错误 ] 异常终止 正常完成 超时错误 [C] 异常终止 [B] 正常完成 [A] 124 t WT 9 状态检查处理 <4> 超时错误 t COM 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.8.2 处理流程描述 <1> 从上一帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 块擦除命令由命令帧发送处理进行发送。 <3> 等待至状态帧获取(等待时间 tWT2)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 正常完成 [A] 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 5.8.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常执行块擦除。 异常终止 [B] 参数错误 05H 块数目超出范围。 校验和错误 07H 已发送命令帧的校验和发生异常。 保护错误 10H 写入、块擦除或片擦除受安全设置的保护。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 擦除错误 1AH 发生擦除错误。 超时错误 [C] − 未在指定时间内接收到状态帧。 应用笔记 U17739CA3V0AN 125 第5章 3 线串行 I/O 通讯模式 (CSI) 5.8.4 流程图 块擦除命令处理 从上一帧接收等待至 下个命令发送 tCOM 命令帧 发送处理 (块擦除) 从命令帧发送等待至状态检查 tWT2 状态检查处理 超时错误? 是 否 超时错误 [C] 否 正常完成? 是 异常终止 [B] 正常完成 [A] 126 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.8.5 示例程序 以下所示为块擦除命令处理的示例程序。 /****************************************************************/ /* /* 擦除块命令 (CSI) */ /* */ */ /****************************************************************/ /* [i] u16 sblk ... 要擦除的起始块 (0...255) */ /* [i] u16 eblk ... 要擦除的结束块 (0...255) /* [r] u16 ... 错误代码 */ */ /****************************************************************/ u16 fl_csi_erase_blk(u16 sblk, u16 eblk) { u16 rc; u32 wt2, wt2_max; u32 top, bottom; top = get_top_addr(sblk); // 获取起始块的起始地址 bottom = get_bottom_addr(eblk); // 获取结束块的结束地址 set_range_prm(fl_cmd_prm, top, bottom); // 设置 SAH/SAM/SAL, EAH/EAM/EAL wt2 = make_wt2(sblk, eblk); wt2_max = make_wt2_max(sblk, eblk); // 发送命令帧前等待 fl_wait(tCOM); put_cmd_csi(FL_COM_ERASE_BLOCK, 7, fl_cmd_prm); // 发送“块擦除”命令 fl_wait(wt2); rc = fl_csi_getstatus(wt2_max); // // 获取状态帧 switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // default: // return return rc; rc; break; // case [A] return rc; break; break; // case [B] // case [C] } return rc; } 应用笔记 U17739CA3V0AN 127 第5章 5.9 3 线串行 I/O 通讯模式 (CSI) 编程命令 5.9.1 处理流程图 编程命令处理流程 78K0/Kx2 编程器 <1> 从上一帧接收等待至下个命令发送 编程命令帧发送 <2> <3> tCOM 从上一命令帧发送等待至状态检 查 tWT3 状态检查处理 <4> 状态检查处理结果 <5> 结果 [正常完成/ 异常终止/ 超时错误] 超时错误 异常终止 正常完成 n 超时错误 [C] <6> 从上一帧接收等待至下个命令发送 异常终止 [B] <7> <8> 数据帧(用户数据)发送 状态检查期间等待 接收状态 (ST1) [正常完成/ 异常终止/ 超时错误] 超时错误 tWT4 状态检查处理 <9> <10> tFD3 状态检查处理结果(ST1/ ST2) 异常终止 正常完成 超时错误 [C] 异常终止 [B] 接收状态 (ST2) [ACK/非 ACK] 非 ACK ACK 异常终止 [D] 已传输所有数据? [是/否] 否 转至 <6> 是 <11> 状态检查期间等待 (内部验证) 状态检查处理 <12> 状态检查处理结果 <13> 超时错误 超时错误 [C] 结果 [正常完成/ 异常终止/ 超时错误] 异常终止 正常完成 异常终止 [E] 正常完成 [A] 128 TWT5 × 块数目 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.9.2 处理流程描述 <1> 从上一帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 编程命令由命令帧发送处理进行发送。 <3> 从命令发送等待至状态检查处理(等待时间 tWT3)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 转至 <6>。 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 <6> 等待至下一个数据帧发送(等待时间 tFD3)。 <7> 要写入 78K0/Kx2 Flash 存储器的用户数据由数据帧发送处理进行发送。 <8> 从数据帧(用户数据)发送等待至状态检查处理(等待时间 tWT4)。 <9> 状态帧由状态检查处理进行获取。 <10> 根据状态检查处理(状态码 (ST1/ST2))的结果执行以下处理(也可参阅处理流程图)。 当 ST1 = 异常终止: 异常终止 [B] 当 ST1 = 超时错误: 返回超时错误 [C]。 当 ST1 = 正常完成: 以下处理将按照 ST2 值进行操作。 • 当 ST2 ≠ ACK: 异常终止 [D] • 当 ST2 = ACK: 所有用户数据发送完成后,转至 <11>。 如果仍有用户数据未发送,该流程将从 <6> 重新执行该顺序。 <11> 等待至状态检查处理(超时时间 tWT5 × 块数目)。 <12> 状态帧由状态检查处理进行获取。 <13> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 正常完成 [A] (指明写入完成后已正常执行内部验证检查) 当处理异常结束时: 异常终止 [E] (指明写入完成后未正常执行内部验证检查) 当发生超时错误时: 返回超时错误 [C]。 应用笔记 U17739CA3V0AN 129 第5章 3 线串行 I/O 通讯模式 (CSI) 5.9.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常写入用户数据。 异常终止 [B] 参数错误 05H 指定的起始/结束地址超出 flash 存储器范围,或者不是 8 的倍 数。 校验和错误 07H 已发送命令帧的校验和发生异常。 保护错误 10H 写入操作受安全设置的保护。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 − 超时错误 [C] 异常终止 [D] 写入错误 异常终止 [E] MRG11 错误 130 1CH (ST2) 1BH 未在指定时间内接收到状态帧。 发生写入错误。 发生内部验证错误。 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.9.4 流程图 编程命令处理 从上一帧接收等待至下次命令发送 tCOM 命令帧发送 处理 (编程) 从命令帧发送等待至转该检查 tWT3 状态检查处理 超时? 是 超时错误 [C] 否 正常完成? 否 是 异常终止 [B] 从上一帧接收等待至下次命令发送 tFD3 数据帧 发送处理 (用户程序) 从数据帧传输等待至状态检查 tWT4 状态检查 处理 超时错误? 是 否 正常完成? 超时错误 [C] 否 是 异常终止 [B] ST2 = ACK? 否 是 异常终止 [D] 否 已发送所有数据帧? 是 tWT5 × 块数目 状态检查期间等待 (内部验证) 状态检查 处理 超时错误? 是 是 超时错误 [C] 否 正常完成? 是 异常终止 [E] 正常完成 [A] 应用笔记 U17739CA3V0AN 131 第5章 3 线串行 I/O 通讯模式 (CSI) 5.9.5 示例程序 以下所示为编程命令处理的示例程序。 /****************************************************************/ /* /* 写入命令 (CSI) */ /* */ */ /****************************************************************/ /* [i] u32 top ... 起始地址 */ /* [i] u32 bottom ... 结束地址 /* [r] u16 */ ... 错误代码 */ /****************************************************************/ u16 fl_csi_write(u32 top, u32 bottom) { u16 rc; u32 send_head, send_size; bool is_end; u16 block_num; // set params set_range_prm(fl_cmd_prm, top, bottom); // 设置 SAH/SAM/SAL, EAH/EAM/EAL block_num = get_block_num(top, bottom); // 获取块数目 /************************************************/ /* 发送命令与检查状态 */ /************************************************/ fl_wait(tCOM); put_cmd_csi(FL_COM_WRITE, 7, fl_cmd_prm); // 发送“编程”命令 fl_wait(tWT3); rc = fl_csi_getstatus(tWT3_TO); // 获取状态帧 switch(rc) { case FLC_NO_ERR: break; // 继续 // FLC_DFTO_ERR: return rc; break; break; // case [B] case default: return rc; } /************************************************/ /* 发送用户数据 */ /************************************************/ send_head = top; while(1){ if ((bottom - send_head) > 256){ is_end = false; 132 // 其余大小 > 256 ? // 是,非结束帧 应用笔记 U17739CA3V0AN // case [C] 第5章 3 线串行 I/O 通讯模式 (CSI) // 发送大小 = 256 字节 send_size = 256; } else{ is_end = true; send_size = bottom - send_head + 1; // 发送大小 = (bottom - send_head)+1 字节 } memcpy(fl_txdata_frm, rom_buf+send_head, send_size); // 设置有效数据帧 send_head += send_size; fl_wait(tFD3_CSI); // 发送数据帧前等待 put_dfrm_csi(send_size, fl_txdata_frm, is_end); // 发送数据帧(用户数据) fl_wait(tWT4); // 等待 rc = fl_csi_getstatus(tWT4_MAX); // 获取状态帧 switch(rc) { case FLC_NO_ERR: // FLC_DFTO_ERR: case default: return rc; break; // 继续 return rc; break; break; // case [B] // case [C] } if (fl_st2 != FLST_ACK){ rc = decode_status(fl_st2); // 否 return // ST2 = ACK ? rc; // case [D] } // 已发送所有用户数据? if (is_end) // 是 break; //continue; } /************************************************/ /* 检查内部验证 */ /************************************************/ // 等待 fl_wait(tWT5 * block_num); rc = fl_csi_getstatus(tWT5_MAX * block_num); // switch(rc) { // case FLC_NO_ERR: // case FLC_DFTO_ERR: // default: // // 获取状态帧 return return rc; rc; break; // case [A] return rc; break; break; // case [E] // case [C] } return rc; } 应用笔记 U17739CA3V0AN 133 第5章 3 线串行 I/O 通讯模式 (CSI) 5.10 验证命令 5.10.1 处理流程图 验证命令处理流程 78K0/Kx2 编程器 从上个帧接收等待 至下次命令发送 <1> t COM 验证命令帧传输 <2 > 从命令帧发送等待 至状态检查 <3> t WT 6 <4> 状态检查处理 <5 > 状态检查处理结果 结果 [正常完成 / 异常终止 /超时错误 ] 异常终止 超时错误 正常完成 <6> 从上一帧接收等待 至下次命令发送 <7 > 数据帧(要验证的用户数据)发送 异常终止 [B] 超时错误 [C ] <8> 状态检查(内部验证) 期间等待 (CSI) WT 7 状态检查处理结果 (ST1/ST2) 接收状态 (ST1)[ 正常完成 / 异常终止 /超时错误 ] 异常终止 t FD 3 状态检查处理 <9> <10> t 超时错误 正常完成 异常终止 [B] 超时错误 [C] 接收状态 (ST2) [ACK/ 非 ACK] 超时错误 [C] 非 AC K ACK 异常终止 [D] 已发送所有数据? [是/否] No YES 转至 <6> 正常完成 [A] 134 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.10.2 处理流程描述 <1> 从上一帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 验证命令由命令帧发送处理进行发送。 <3> 从命令发送等待至状态检查处理(等待时间 tWT6)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 转至 <6>。 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 <6> 从上一帧接收等待至下次数据帧发送(等待时间 tFD3)。 <7> 要验证的用户数据由数据帧发送处理进行发送。 <8> 从数据帧发送等待至状态检查处理(等待时间 tWT7)。 <9> 状态帧由状态检查处理进行获取。 <10> 根据状态检查处理(状态码 (ST1/ST2))的结果执行以下处理(也可参阅处理流程图)。 当 ST1 = 异常终止: 异常终止 [B] 当 ST1 = 超时错误: 返回超时错误 [C]。 当 ST1 = 正常完成: 以下处理将按照 ST2 值进行操作。 • 当 ST2 ≠ ACK: 异常终止 [D] • 当 ST2 = ACK: 如果所有数据帧发送完成,则处理将正常结束 [A]。 如果仍有数据帧未发送,该流程将从 <6> 重新执行该顺序。 5.10.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常完成验证。 异常终止 [B] 参数错误 05H 指定的起始/结束地址超出 flash 存储器范围,或者指定的地址不 是 2 KB 单位内的固定地址。 校验和错误 07H 已发送命令帧或数据帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 − 超时错误 [C] 异常终止 [D] 验证错误 0FH (ST2) 未在指定时间内接收到状态帧。 验证失败或发生其他错误。 应用笔记 U17739CA3V0AN 135 第5章 3 线串行 I/O 通讯模式 (CSI) 5.10.4 流程图 验 证 命令处 理 从上一帧接收等待 至下次命令发送 t COM 命令帧发送处理 (验证) 从命令帧传输等待 至状态检查 t WT 6 状态检查处理 超时? 是 超时错误 [C] 否 正常完成? 否 异常终止 [B] 是 从上次帧 接收等待 至下次数据帧 传 输 t FD 3 ( CSI ) 数据帧传输处理 (用户程序) 从数据帧 传 输 等待 至状态 检 查 t WT 7 状态 检 查 处 理 超时 ? 是 否 正常完成? 超时 错 误 [C] 否 是 ST2 = ACK? 异常终 止 [B] 否 是 否 已传 输 所有数据? 是 正常完成 [A] 136 应用笔记 U17739CA3V0AN 异常终 止 [D] 第5章 3 线串行 I/O 通讯模式 (CSI) 5.10.5 示例程序 以下所示为验证命令处理的示例程序。 /****************************************************************/ /* /* 验证命令 (CSI) */ /* */ */ /****************************************************************/ /* [i] u32 top ... 起始地址 */ /* [i] u32 bottom ... 结束地址 /* [r] u16 */ ... 错误代码 */ /****************************************************************/ u16 fl_csi_verify(u32 top, u32 bottom) { u16 rc; u32 send_head, send_size; bool is_end; // set params set_range_prm(fl_cmd_prm, top, bottom); // 设置 SAH/SAM/SAL, EAH/EAM/EAL /************************************************/ /* 发送命令与检查状态 */ /************************************************/ fl_wait(tCOM); put_cmd_csi(FL_COM_VERIFY, 7, fl_cmd_prm); // 发送“验证”命令 fl_wait(tWT6); rc = fl_csi_getstatus(tWT6_TO); // 获取状态帧 switch(rc) { case FLC_NO_ERR: break; // 继续 // FLC_DFTO_ERR: return rc; break; break; // case [B] case default: return rc; // case [C] } /************************************************/ /* 发送用户数据 */ /************************************************/ send_head = top; while(1){ if ((bottom - send_head) > 256){ // 其余大小 > 256 ? is_end = false; // 是,非结束帧 send_size = 256; // 发送大小 = 256 字节 } 应用笔记 U17739CA3V0AN 137 第5章 3 线串行 I/O 通讯模式 (CSI) else{ is_end = true; send_size = bottom - send_head + 1; // 发送大小 = (bottom - send_head)+1 字节 } memcpy(fl_txdata_frm, rom_buf+send_head, send_size); // 设置数据 // 帧净荷 send_head += send_size; fl_wait(tFD3_CSI); // 发送数据帧前等待 put_dfrm_csi(send_size, fl_txdata_frm, is_end); // 发送数据帧 fl_wait(tWT7); // 等待 rc = fl_csi_getstatus(tWT7_MAX); // 获取状态帧 switch(rc) { case FLC_NO_ERR: // FLC_DFTO_ERR: case default: return rc; break; // 继续 return rc; break; break; // case [B] } if (fl_st2 != FLST_ACK){ // ST2 = ACK ? rc = decode_status(fl_st2); // 否 return rc; // case [D] } // 已发送所有用户数据? if (is_end) // 是 break; //continue; } return FLC_NO_ERR; // case [A] } 138 应用笔记 U17739CA3V0AN // case [C] 第5章 3 线串行 I/O 通讯模式 (CSI) 5.11 块空白检查命令 5.11.1 处理流程图 块空白检查命令处理流程图 78K0/Kx2 编程器 <1> <2> <3> <4> <5> 异常终止 异常终止 [B] 结果 [正常完成/ 异常终止/ 超时错误] 从上次帧接收等待至下个命令发送 tCOM 块空白检查命令帧发送 从命令帧发送等待至状态检查 tWT8 × 块数目 状态检查处理 状态检查处理结果 超时错误 超时错误[C] 正常完成 正常完成 [A] 应用笔记 U17739CA3V0AN 139 第5章 3 线串行 I/O 通讯模式 (CSI) 5.11.2 处理流程描述 <1> 从上一帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 块空白检查命令由命令帧发送处理进行发送。 <3> 从命令发送等待至状态检查处理(等待时间 tWT8 × 块数目)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当发生超时错误时: 返回超时错误 [C]。 当处理异常结束时: 异常终止 [B] 当处理正常结束时: 正常完成 [A] 5.11.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且所有指定块为空白。 异常终止 [B] 参数错误 05H 块数目超出范围。 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 MRG11 错误 1BH Flash 存储器内指定的块不为空白。 超时错误 [C] 140 − 未在指定时间内接收到状态帧。 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.11.4 流程图 块空白检查命令处理 从上个帧接收等待至 下个命令发送 tCOM 命令帧 发送 处理 (块空白检查) 从命令帧发送等待至状态检查 tWT8 × 块数目 状态检查 处理 是 超时? 否 超时错误 [C] 否 超时? 是 异常终止 [B] 正常完成 [A] 应用笔记 U17739CA3V0AN 141 第5章 3 线串行 I/O 通讯模式 (CSI) 5.11.5 示例程序 以下所示为块空白检查命令处理的示例程序。 /****************************************************************/ /* /* 块空白检查命令 (CSI) */ /* */ */ /****************************************************************/ /* [i] u32 top ... 起始地址 */ /* [i] u32 bottom ... 结束地址 /* [r] u16 */ ... 错误代码 */ /****************************************************************/ u16 fl_csi_blk_blank_chk(u32 top, u32 bottom) { u16 rc; u16 block_num; set_range_prm(fl_cmd_prm, top, bottom); // 设置 SAH/SAM/SAL, EAH/EAM/EAL block_num = get_block_num(top, bottom); // 获取块数目 fl_wait(tCOM); // 发送命令帧前等待 put_cmd_csi(FL_COM_BLOCK_BLANK_CHK, 7, fl_cmd_prm); // 发送“块空白检查”命令 fl_wait(tWT8 * block_num); rc = fl_csi_getstatus(tWT8_MAX * block_num); // // 获取状态帧 switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // // default: return return rc; rc; break; // case [A] return rc; break; break; // case [B] } return rc; } 142 应用笔记 U17739CA3V0AN // case [C] 第5章 3 线串行 I/O 通讯模式 (CSI) 5.12 硅签名命令 5.12.1 处理流程图 硅签名命令处理流程 78K0/Kx2 编程器 <1> 从上次帧接收等待 至下次命令传输 tCOM <2> 硅签名命令帧传输 <3> 从命令帧传输等待 tWT11 至状态检查 <4> <5> 状态检查处理 状态检查处理结果 结果[正常完成/ 异常终止/超时错误] 超时错误 异常终止 正常完成 超时错误[C] <6> <7> 从上个帧接收等待 至下个数据帧传输 tFD2 数据帧(硅签名 )接收处理 异常终止[B] 正常数据帧?[是/否] 否 是 数据帧错误[D] 正常完成[A] 应用笔记 U17739CA3V0AN 143 第5章 3 线串行 I/O 通讯模式 (CSI) 5.12.2 处理流程描述 <1> 从上一次帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 硅签名命令由命令帧发送处理进行发送。 <3> 从命令发送等待至状态检查处理(等待时间 tWT11)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 转至 <6>。 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 <6> 从上一帧接收等待至下次命令发送(等待时间 tFD2)。 <7> 检查已接收数据帧(硅签名数据)。 如果数据帧正常: 正常完成 [A] 如果数据帧异常: 数据帧错误 [D] 5.12.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常获取硅签名。 异常终止 [B] 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 读取错误 20H 读取安全信息失败。 超时错误 [C] − 未在指定时间内接收到状态帧。 数据帧错误 [D] − 接收到数据帧校验和,因为硅签名数据异常。 144 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.12.4 流程图 硅签名 命令处理 从上次帧接收等待 至下次命令传输 tCOM 命令帧传输处理 (硅签名) 从命令帧传输等待 至状态检查 tWT11 状态检查处理 超时错误? 是 否 否 异常终止 [B] 超时错误[C] 正常完成? 是 从上个帧接收等待 至下个数据帧接收 tFD2 数据帧接收处理 正常的数据帧? 否 是 正常完成[A] 应用笔记 U17739CA3V0AN 数据帧错误[D] 145 第5章 3 线串行 I/O 通讯模式 (CSI) 5.12.5 示例程序 以下所示为硅签名命令处理的示例程序。 /****************************************************************/ /* /* 获取硅签名命令 (CSI) */ /* */ */ /****************************************************************/ /* [i] u8 *sig ... 指向签名保存数据的指针 */ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_csi_getsig(u8 *sig) { u16 rc; // 发送命令帧前等待 fl_wait(tCOM); put_cmd_csi(FL_COM_GET_SIGNATURE, 1, fl_cmd_prm); // 发送“硅签名”命令 fl_wait(tWT11); // 获取状态帧 rc = fl_csi_getstatus(tWT11_TO); switch(rc) { // case FLC_NO_ERR: case FLC_DFTO_ERR: default: return rc; break; // continue return rc; break; break; // case [B] // case [C] } fl_wait(tFD2_SIG); rc = get_dfrm_csi(fl_rxdata_frm); // 获取数据帧前等待 // 获取数据帧(签名数据) // 如果没有错误, if (rc){ return rc; // case [D] } memcpy(sig, fl_rxdata_frm+OFS_STA_PLD, fl_rxdata_frm[OFS_LEN]); // 复制签名数据 return rc; // case [A] } 146 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.13 版本获取命令 5.13.1 处理流程图 版本获取命令处理流程图 78K0/Kx2 编程器 从上个帧接收等待 至下个命令传输 <1> 版本获取命令帧传输 <2> <3> tCOM 检查状态帧接收是否超时 tWT12 <4> 状态检查处理 <5> 状态检查处理结果 结果[正常完成/ 异常终止/超时错误] 超时错误 异常终止 正常完成 超时错误[C] <6> 异常终止[B] <7> 从上个帧接收等待 至下个数据帧接收 tFD2 状态帧(版本数据)接收处理 正常的数据帧? [是/否] No Yes 数据帧错误[D] 正常完成[A] 应用笔记 U17739CA3V0AN 147 第5章 3 线串行 I/O 通讯模式 (CSI) 5.13.2 处理流程描述 <1> 从上一帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 版本获取命令由命令帧发送处理进行发送。 <3> 从命令发送等待至状态检查处理(等待时间 tWT12)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 转至 <6>。 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 <6> 从上一帧接收等待至下次命令发送(等待时间 tFD2)。 <7> 检查已接收数据帧(版本数据)。 如果数据帧正常: 正常完成 [A] 如果数据帧异常: 数据帧错误 [D] 5.13.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常获取版本数据。 异常终止 [B] 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 超时错误 [C] − 未在指定时间内接收到状态帧。 数据帧错误 [D] − 接收到数据帧校验和,因为版本数据异常。 148 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.13.4 流程图 版本获取命令处理 从上次帧接收等待 至下次命令传输 tCOM 命令帧传输处理 (版本获取) 从命令帧传输等待 至状态检查 tWT11 状态检查处理 超时错误? 是 否 否 异常终止 [B] 超时错误[C] 正常完成? 是 从上个帧接收等待 至下个数据帧接收 tFD2 数据帧接收处理 正常的数据帧? 否 是 正常完成[A] 应用笔记 U17739CA3V0AN 数据帧错误[D] 149 第5章 3 线串行 I/O 通讯模式 (CSI) 5.13.5 示例程序 以下所示为版本获取命令处理的示例程序。 /****************************************************************/ /* /* 获取设备/固件版本命令 (CSI) */ /* */ */ /****************************************************************/ /* [i] u8 *buf ... 指向版本数据保存区域的指针 */ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_csi_getver(u8 *buf) { u16 rc; // 发送命令帧前等待 fl_wait(tCOM); put_cmd_csi(FL_COM_GET_VERSION, 1, fl_cmd_prm); // 发送“版本获取”命令 fl_wait(tWT12); // 获取状态帧 rc = fl_csi_getstatus(tWT12_TO); switch(rc) { // case FLC_NO_ERR: case FLC_DFTO_ERR: default: return rc; break; // continue return rc; break; break; // case [B] // case [C] } fl_wait(tFD2_VG); // 获取数据帧前等待 rc = get_dfrm_csi(fl_rxdata_frm); // 获取版本数据 // 如果没有错误, if (rc){ return rc; // case [D] } memcpy(buf, fl_rxdata_frm+OFS_STA_PLD, DFV_LEN);// 复制版本数据 return rc; // case [A] } 150 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.14 校验和命令 5.14.1 处理流程图 校验和命令处理流程 78K0/Kx2 编程器 从上个帧接收等待 至下个命令传输 <1> tCOM <2> 校验和命令帧传输 <3> 检查状态帧接收是否超时 tWT 12 <4> 状态检查处理 <5> 状态检查处理结果 结果[正常完成/ 异常终止/超时错误] 超时错误 异常终止 正常完成 超时错误[C] <6> 异常终止[B] <7> 从上个帧接收等待 至下个数据帧接收 tFD2 数据帧(校验和数据)接收处理 正常的数据帧? [是/否] No Yes 数据帧错误[D] 正常完成[A] 应用笔记 U17739CA3V0AN 151 第5章 3 线串行 I/O 通讯模式 (CSI) 5.14.2 处理流程描述 <1> 从上一帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 校验和命令由命令帧发送处理进行发送。 <3> 从命令发送等待至状态检查处理(等待时间 tWT16)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 转至 <6>。 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 <6> 从上一帧接收等待至下次命令发送(等待时间 tFD1)。 <7> 检查已接收数据帧(校验和数据)。 如果数据帧正常: 正常完成 [A] 如果数据帧异常: 数据帧错误 [D] 5.14.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常获取校验和数据。 异常终止 [B] 参数错误 05H 指定的起始/结束地址超出 flash 存储器范围,或者指定的地址不 是 2 KB 单位内的固定地址。 校验和错误 07H 已发送命令帧的校验和发生异常。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 超时错误 [C] − 未在指定时间内接收到状态帧。 数据帧错误 [D] − 接收到数据帧校验和,因为版本数据异常。 152 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.14.4 流程图 校验和命令处理 从上次帧接收等待 至下次命令传输 tCOM 命令帧传输处理 (校验和) 从命令帧传输等待 至状态检查 tWT11 状态检查处理 超时错误? 是 否 否 异常终止 [B] 超时错误[C] 正常完成? 是 从上个帧接收等待 至下个数据帧接收 tFD2 数据帧接收处理 正常的数据帧? 否 是 正常完成[A] 应用笔记 U17739CA3V0AN 数据帧错误[D] 153 第5章 3 线串行 I/O 通讯模式 (CSI) 5.14.5 示例程序 以下所示为校验和命令处理的示例程序。 /****************************************************************/ /* /* 获取校验和命令 (CSI) */ /* */ */ /****************************************************************/ /* [i] u16 *sum ... 指向校验和保存区域的指针 */ /* [i] u32 top ... 起始地址 */ /* [i] u32 bottom ... 结束地址 /* [r] u16 */ ... 错误代码 */ /****************************************************************/ u16 fl_csi_getsum(u16 *sum, u32 top, u32 bottom) { u16 rc; u16 block_num; /************************************************/ /* 设置参数 */ /************************************************/ // 设置参数 set_range_prm(fl_cmd_prm, top, bottom); // 设置 SAH/SAM/SAL, EAH/EAM/EAL block_num = get_block_num(top, bottom); // 获取块数目 /************************************************/ /* 发送命令 */ /************************************************/ fl_wait(tCOM); // 发送命令帧前等待 put_cmd_csi(FL_COM_GET_CHECK_SUM, 7, fl_cmd_prm); // 发送“校验和”命令 fl_wait(tWT16); // 获取状态帧 rc = fl_csi_getstatus(tWT16_TO); switch(rc) { // case FLC_NO_ERR: case FLC_DFTO_ERR: default: return rc; break; // continue return rc; break; break; // case [B] } /************************************************/ /* 获取数据帧(校验和数据) */ /************************************************/ fl_wait(tFD1 * block_num); // 获取数据帧前等待 154 应用笔记 U17739CA3V0AN // case [C] 第5章 3 线串行 I/O 通讯模式 (CSI) rc = get_dfrm_csi(fl_rxdata_frm); // 获取数据帧(版本数据) if (rc){ // 如果存在错误, return rc; // case [D] } *sum = (fl_rxdata_frm[OFS_STA_PLD] << 8) + fl_rxdata_frm[OFS_STA_PLD+1]; // 设置 SUM 数据 return rc; // case [A] } 应用笔记 U17739CA3V0AN 155 第5章 3 线串行 I/O 通讯模式 (CSI) 5.15 安全设置命令 5.15.1 处理流程图 安全设置命令处理流程图 78K0/Kx2 编程器 <1> <2> 从上个帧接收等待 tCOM 至下个命令传输 安全设置命令帧传输 <3> 从命令帧传输等待tWT13 至状态检查 <4> 状态检查处理 <5> 状态检查处理结果 结果[正常完成/ 异常终止/超时错误] 超时错误 正常完成 <6> 异常终止 从上个帧接收等待 tFD3 (CSI) 至下个数据传输 超时错误[C] <7> 数据帧(安全数据)传输 <8> 从数据帧传输等待 tWT14 至状态检查 <9> 状态检查处理 <10> 状态检查处理结果 异常终止[B] 结果[正常完成/ 异常终止/超时错误] 超时错误 异常终止 正常完成 超时错误[C] 异常终止[B] <11> 状态检查期间等待 tWT15 (内部验证) <12> 状态检查处理 <13> 结果[正常完成/ 异常终止/超时错误] 超时错误 超时错误[C] 状态检查处理结果 异常终止 正常完成 异常终止[B] 156 正常完成[A] 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.15.2 处理流程描述 <1> 从上一帧接收等待至下次命令发送(等待时间 tCOM)。 <2> 安全设置命令由命令帧发送处理进行发送。 <3> 从命令发送等待至状态检查处理(等待时间 tWT13)。 <4> 状态帧由状态检查处理进行获取。 <5> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 转至 <6>。 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 <6> 从上一帧接收等待至下次命令发送(等待时间 tFD3(CSI))。 <7> 数据帧(安全设置数据)由数据帧发送处理进行发送。 <8> 从数据帧发送等待至状态检查处理(等待时间 tWT14)。 <9> 状态帧由状态检查处理进行获取。 <10> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 转至 <11>。 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 <11> 等待至状态获取(内部验证完成)(等待时间 tWT15)。 <12> 状态帧由状态检查处理进行获取。 <13> 根据状态检查处理的结果执行以下处理。 当处理正常结束时: 正常完成 [A] 当处理异常结束时: 异常终止 [B] 当发生超时错误时: 返回超时错误 [C]。 5.15.3 处理完成时状态 处理完成时状态 状态码 描述 正常完成 [A] 正常应答 (ACK) 06H 已正常执行命令,并且已正常执行安全设置。 异常终止 [B] 参数错误 05H 命令信息(参数)不是 00H。 校验和错误 07H 已发送命令帧或数据帧的校验和发生异常。 写入错误 1CH 已设置安全数据,或发生写入错误。 否定应答 (NACK) 15H 命令帧数据发生异常(例如数据长度 (LEN) 无效或无 ETX)。 超时错误 [C] − 未在指定时间内接收到状态帧。 应用笔记 U17739CA3V0AN 157 第5章 3 线串行 I/O 通讯模式 (CSI) 5.15.4 流程图 安全设置命令处理 从上次帧接收等待 至下次命令传输 t COM 命令帧传输处理 (安全设置) 从命令帧传输等待 至状态检查 t WT13 状态检查处理 超时? 是 否 正常完成? 超时错误[C] 否 异常终止 [B] 是 从上个帧接收等待 至下个帧传输 t FD3 数据帧传输处理 (内部验证) 从数据帧传输等待 至状态检查 t WT14 状态检查处理 超时? 是 否 超时错误[C] 正常完成? 否 是 异常终止 [B] 状态检查(内部验证) 期间等待 t WT15 状态检查处理 超时? 是 否 正常完成? 超时错误[C] 否 是 正常完成[A] 158 异常终止 [B] 应用笔记 U17739CA3V0AN 第5章 3 线串行 I/O 通讯模式 (CSI) 5.15.5 示例程序 以下所示为安全设置命令处理的示例程序。 /****************************************************************/ /* /* 设置安全旗标命令 (CSI) */ /* */ */ /****************************************************************/ /* [i] u8 scf ... 安全旗标数据 */ /* [r] u16 ... 错误代码 */ /****************************************************************/ u16 fl_csi_setscf(u8 scf) { u16 rc; /********************************************************/ /* 设置参数 */ /********************************************************/ fl_cmd_prm[0] = 0x00; // "BLK" (必须是 0x00) fl_cmd_prm[1] = 0x00; // "PAG" (必须是 0x00) fl_txdata_frm[0] = (scf |= 0b11101000); // "FLG" (上 5 位必须为“1”(务必)) fl_txdata_frm[1] = 0x03; // "BOT" (固定 0x03) /************************************************/ /* 发送命令 */ /************************************************/ fl_wait(tCOM); // 发送命令帧前等待 put_cmd_csi(FL_COM_SET_SECURITY, 3, fl_cmd_prm); // 发送“安全设置”命令 // 等待 fl_wait(tWT13); // 获取状态帧 rc = fl_csi_getstatus(tWT13_TO); switch(rc) { // case FLC_NO_ERR: case FLC_DFTO_ERR: default: return rc; break; // continue return rc; break; break; // case [B] // case [C] } /************************************************/ /* 发送数据帧(安全设置数据) */ /************************************************/ fl_wait(tFD3_CSI); // 获取数据帧前等待 应用笔记 U17739CA3V0AN 159 第5章 3 线串行 I/O 通讯模式 (CSI) put_dfrm_csi(2, fl_txdata_frm, true); // 发送数据帧(安全数据) fl_wait(tWT14); // 获取状态帧 rc = fl_csi_getstatus(tWT14_MAX); switch(rc) { // case FLC_NO_ERR: case FLC_DFTO_ERR: default: return rc; break; // continue return rc; break; break; // case [B] // case [C] } /************************************************/ /* 检查内部验证 */ /************************************************/ fl_wait(tWT15); // 获取状态帧 rc = fl_csi_getstatus(tWT15_MAX); // switch(rc) { // // case FLC_NO_ERR: // case FLC_DFTO_ERR: // default: // return return rc; rc; break; // case [A] return rc; break; break; // case [B] } return rc; } 160 应用笔记 U17739CA3V0AN // case [C] 第 6 章 FLASH 存储器编程参数特性 本章介绍在 Flash 存储器编程模式下编程器与 78K0/Kx2 之间的参数特性。 设计编程器时请务必参阅 78K0/Kx2 用户手册以了解相关电气技术规范。 <R> 6.1 扩展规范产品 (μPD78F05xxA) 的 Flash 存储器编程参数特性 6.1.1 基本特性 参数 状态 Flash 存储器编程模式下 78K0/Kx2 符号 MIN. TYP. MAX. 单位 内部高速振荡时钟 fRH 7.6 8 8.4 MHz UART 通讯期间 fX 2 20 fEXCLK 2 20 操作时钟 X1 时钟 外部主系统时钟 6.1.2 Flash 存储器编程模式设置时间 参数 VDD↑ 至 FLMD0↑ FLMD0↑ 至 RESET↑ 符号 MIN. tDP 1 ms tPR 2 ms 59,327/fRH 从 RESET↑ 至 FLMD0 注 1 计数开始时间 tRP 从 RESET↑ 至 FLMD0 注 1 计数完成时间 tRPE FLMD0 计数器高电平/低电平宽度 等待“复位”命令 (CSI) 注 1 等待低电平数据 1 (UART) 注 1 X1 时钟 TYP. MAX. 238,414/fRH tPW 10 μs tRC 444,463/fRH tR1 444,463/fRH + 100 μs 16 2 /fX 外部主系统时钟 444,463/fRH 等待低电平数据 2 (UART) t12 15,000/fRH 等待“读取”命令 (UART) t2C 15,000/fRH 低电平数据 1/2 注 2 的宽度 1 μs − FLMD0 计数器上升/下降时间 复位低电平宽度(RESET↑ 至 RESET↓) 注2 tL1、tL2 注 3 tRST 1,950 ms 注 1. 建议将 (59,327/fRH + 238,414/fRH)/2 作为 FLMD0 脉冲输入计时的标准值。 2. 低电平宽度与 00H 数据宽度相同,为 9,600 bps。 3. 单片机上电(复位释放)后,当模式从正常操作模式切换为 Flash 存储器编程模式时,请确保在加电(复 位释放)后系统复位前等待该参数模式切换时所需的最小时间。 (下页所示备注。) 应用笔记 U17739CA3V0AN 161 第 6 章 FLASH 存储器编程参数特性 备注 1. 计算参数(假设 fRH = 8 MHz)。 2. 等待时间定义如下。 <tR1 (MIN.)> UART 的波特率由外部时钟生成。 按照技术规范和所使用的外部晶振振荡稳定时间设置所用的输入脉冲。 6.1.3 编程特性 等待 数据帧发送/接收之间 状态 数据帧接收 数据帧发送 符号 串行 I/F MIN. tDR CSI 64/fRH UART 74/fRH CSI 88/fRH tDT UART − 从状态命令帧接收到状态帧发送 − 从状态帧发送到数据帧发送 (1) tSF tFD1 注2 硅签名数据 tFD2 215/fRH CSI 54,368/fRH CSI 版本数据 − − 从状态帧发送到命令帧接收 0 UART tFD3 321/fRH tCOM 0 163/fRH UART 101/fRH CSI 106/fRH 106/fRH 注 1. 当编程器启用连续接收时适用 2. 发送一个块所需时间 1. 计算参数(假设 fRH = 8 MHz)。 2. 等待时间定义如下。 <tDR, tFD3, tCOM> 前次通讯完成并且经过最小 (MIN.) 时间后,78K0/Kx2 准备好下次通讯。 前次通讯完成并且经过最小 (MIN.) 时间后,编程器可以发送下个数据。 最大 (MAX.) 时间未指定,在在大约 3 秒内发送下个数据。 <tDT, tSF, tFD1, tFD2> 前次通讯完成并且经过最小 (MIN.) 时间后,78K0/Kx2 准备好下次通讯。 前次通讯完成后并且经过最小 (MIN.) 时间前,编程器必须准备接收下个数据。 最大 (MAX.) 时间未指定,继续接收大约 3 秒钟,直到接收数据完成。 162 应用笔记 U17739CA3V0AN 注1 CSI UART 备注 注1 206/fRH − 从状态帧发送到数据帧接收 注1 CSI UART 从状态帧发送到数据帧发送 (2) 0 MAX. 注1 第 6 章 FLASH 存储器编程参数特性 命令 复位 片擦除 符号 串行 I/F MIN. tWT0 CSI 172/fRH UART 注1 − 857,883/fRH + 44,160 × 块总数目/fRH tWT1 块擦除 tWT2 注 2 MAX. 186,444,400/fRH + 11,304,960 × 块总数目/fRH 214,714/fRH × 同时选择与擦除的执 54,582,372/fRH × 同时选择与擦除的 − 行计数 + 44,160/fRH × 要擦除的块数 执行计数 + 11,304,960/fRH × 要擦除 目 编程 tWT3 tWT4 注 3 tWT5 注 4 CSI 1,506/fRH UART 注1 − 72,412/fRH 893,355/fRH 块0 100,407/fRH 132,144,427/fRH 块 1 至 127 100,407/fRH 102,178/fRH 块0 注1 132,144,427/fRH 块 1 至 127 注1 102,178/fRH CSI UART 校验 tWT6 块空白检查 振荡频率设置 硅签名 版本获取 安全设置 校验和 tWT7 注 3 tWT8 注 4 的块数目 CSI 686/fRH UART 注1 CSI 12,827/fRH UART 注1 CSI 45,870/fRH 55,044/fRH UART 注1 55,044/fRH CSI 1,238/fRH UART 注1 CSI 1,233/fRH UART 注1 tWT9 tWT11 CSI 252/fRH UART 注1 CSI 975/fRH UART 注1 tWT14 − 275,518/fRH 66,005,812/fRH tWT15 CSI 368,277/fRH 66,018,156/fRH UART 注1 66,018,156/fRH CSI 583/fRH UART 注1 tWT12 tWT13 tWT16 注 1. 命令发送前编程器必须启用接收。 2. 请参阅 6.3 “块擦除”命令执行的同时选择与擦除以了解有关同时选择与擦除的执行计数的计算方法。 3. 发送 256 字节数据所需时间 4. 发送一个块所需时间 备注 1. 计算参数(假设 fRH = 8 MHz)。 2. 等待时间定义如下。 <tWT0 至 tWT16> 78K0/Kx2 完成命令处理所需的时间位于 MAX 和 MIN 之间,。 编程器必须以最大 (MAX.) 时间重复检查状态(如果未定义最大时间,则大约 3 秒钟)。 应用笔记 U17739CA3V0AN 163 第 6 章 FLASH 存储器编程参数特性 6.2 常规产品 (μPD78F05xx) 的 Flash 存储器编程参数特性 6.2.1 基本特性 参数 状态 Flash 存储器编程模式下 78K0/Kx2 符号 MIN. TYP. MAX. 单位 内部高速振荡时钟 fRH 7.6 8 8.4 MHz UART 通讯期间 fX 2 20 fEXCLK 2 20 操作时钟 X1 时钟 外部主系统时钟 <R> 6.2.2 Flash 存储器编程模式设置时间 参数 VDD↑ 至 FLMD0↑ FLMD0↑ 至 RESET↑ 符号 MIN. tDP 1 ms tPR 2 ms 从 RESET↑ 至 FLMD0 计数开始时间 注 1 tRP 59,327/fRH 从 RESET↑ 至 FLMD0 计数完成时间 注 1 tRPE tPW 10 μs 等待“复位”命令 (CSI) tRC 444,463/fRH tR1 444,463/fRH + X1 时钟 MAX. 238,414/fRH FLMD0 计数器高电平/低电平宽度 等待低电平数据 1 (UART) TYP. 100 μs 16 2 /fX 外部主系统时钟 444,463/fRH 等待低电平数据 2 (UART) t12 15,000/fRH 等待“读取”命令 (UART) t2C 15,000/fRH 低电平数据 1/2 注 2 的宽度 1 μs − FLMD0 计数器上升/下降时间 复位低电平宽度(RESET↑ 至 RESET↓) 注2 tL1、tL2 注 3 tRST 1,950 ms 注 1. 建议将 (59,327/fRH + 238,414/fRH)/2 作为 FLMD0 脉冲输入计时的标准值。 2. 低电平宽度与 9,600 bps 波特率下的 00H 数据宽度相同,此处描述的值为数据宽度的一半。 3. 单片机上电(复位释放)后,当模式从正常操作模式切换为 Flash 存储器编程模式时,请确保在加电(复 位释放)后系统复位前等待该参数模式切换时所需的最小时间。 备注 1. 计算参数(假设 fRH = 8 MHz)。 2. 等待时间定义如下。 <tR1 (MIN.)> UART 的波特率由外部时钟生成。 按照技术规范和所使用的外部晶振振荡稳定时间设置所用的输入脉冲。 164 应用笔记 U17739CA3V0AN 第 6 章 FLASH 存储器编程参数特性 <R> 6.2.3 编程特性 等待 数据帧发送/接收之间 状态 数据帧接收 数据帧发送 符号 串行 I/F MIN. tDR CSI 64/fRH UART 74/fRH CSI 88/fRH tDT UART − 从状态命令帧接收到状态帧发送 − 从状态帧发送到数据帧发送 (1) tSF tFD1 注2 Silicon Signature 数据 tFD2 166/fRH CSI 54,368/fRH CSI 版本数据 − − 从状态帧发送到命令帧接收 0 注1 321/fRH 136/fRH − 从状态帧发送到数据帧接收 注1 CSI UART 从状态帧发送到数据帧发送 (2) 0 MAX. UART tFD3 tCOM 0 注1 CSI 163/fRH UART 101/fRH CSI 64/fRH UART 71/fRH 注 1. 当编程器启用连续接收时适用 2. 发送一个块所需时间 备注 1. 计算参数(假设 fRH = 8 MHz)。 2. 等待时间定义如下。 <tDR, tFD3, tCOM> 前次通讯完成并且经过最小 (MIN.) 时间后,78K0/Kx2 准备好下次通讯。 前次通讯完成并且经过最小 (MIN.) 时间后,编程器可以发送下个数据 最大 (MAX.) 时间未指定,在大约 3 秒内发送下个数据。 <tDT, tSF, tFD1, tFD2> 前次通讯完成并且经过最小 (MIN.) 时间后,78K0/Kx2 准备好下次通讯。 前次通讯完成后并且经过最小 (MIN.) 时间前,编程器必须准备接收下个数据。 最大 (MAX.) 时间未指定,继续接收大约 3 秒钟,直到接收数据完成。 应用笔记 U17739CA3V0AN 165 第 6 章 FLASH 存储器编程参数特性 命令 复位 片擦除 符号 串行 I/F MIN. tWT0 CSI 172/fRH UART 注1 − 857,883/fRH + 44,160 × 块总数目/fRH tWT1 块擦除 tWT2 注 2 MAX. 186,444,400/fRH + 11,304,960 × 块总数目/fRH 214,714/fRH × 同时选择与擦除的执 54,582,372/fRH × 同时选择与擦除的 − 行计数 + 44,160/fRH × 要擦除的块数 执行计数 + 11,304,960/fRH × 要擦除 目 编程 tWT3 tWT4 注 3 tWT5 注 4 CSI 1,348/fRH UART 注1 − 68,118/fRH 397,587/fRH 块0 100,407/fRH 132,144,427/fRH 块 1 至 127 100,407/fRH 102,178/fRH 块0 注1 132,144,427/fRH 块 1 至 127 注1 102,178/fRH CSI UART 校验 tWT6 块空白检查 振荡频率设置 安全设置 校验和 3 tWT8 注 4 CSI 686/fRH UART 注1 CSI 12,827/fRH UART 注1 CSI 45,835/fRH 55,044/fRH UART 注1 55,044/fRH CSI 1,127/fRH UART 注1 CSI 1,233/fRH UART 注1 tWT9 Silicon Signature 版本获取 tWT7 注 的块数目 tWT11 CSI 242/fRH UART 注1 CSI 923/fRH UART 注1 tWT14 − 275,518/fRH 66,005,812/fRH tWT15 CSI 368,277/fRH 66,018,156/fRH UART 注1 66,018,156/fRH CSI 583/fRH UART 注1 tWT12 tWT13 tWT16 注 1. 命令发送前编程器必须启用接收。 2. 请参阅 6.3 由“块擦除”命令执行的同时选择与擦除以了解有关同时选择与擦除的执行计数的计算方法。 3. 发送 256 字节数据所需时间 4. 发送一个块所需时间 备注 1. 计算参数(假设 fRH = 8 MHz)。 2. 等待时间定义如下。 <tWT0 至 tWT16> 78K0/Kx2 完成命令处理所需的时间位于 MAX 和 MIN 之间。 编程器必须以最大 (MAX.) 时间重复检查状态(如果未定义最大时间,则大约 3 秒钟)。 166 应用笔记 U17739CA3V0AN 第 6 章 FLASH 存储器编程参数特性 6.3 由块擦除命令执行的同时选择与擦除 78K0/Kx2 的块擦除命令通过重复“同时选择与擦除”方式执行,这种方式可以同时擦除多个块。 因此在“块擦除”命令执行期间插入的等待时间等于“同时选择与擦除”的总执行时间。 要计算“同时选择与擦除的总执行时间”,必须首先计算“同时选择与擦除”的执行计数 (M)。 “M”由要同时擦除的块数计算得出,此处的块数也指同时选择和擦除的块数。 以下介绍计算同时选择和擦除的块数和执行计数 (M) 的方法。 (1) 计算同时选择和擦除的块数 同时选择和擦除的块数应为 1、2、4、8、16、32、64, 或 128,这取决于以下条件的满足程度。 [条件 1] (要擦除块数目)≥(同时选择和擦除的块数目) [条件 2] (开始块数目)÷(同时选择和擦除的块数目)= 余数为 0。 [条件 3] 满足条件 1 和 2 的所有值中最大值 应用笔记 U17739CA3V0AN 167 第 6 章 FLASH 存储器编程参数特性 (2) 同时选择与擦除的执行计数 (M) 计算 执行计数 (M) 如下方流程图中所示。 开始 ER_BKNUM ← END_BKNO − ST_BKNO + 1 M←0 ST_BKNO: 开始块数目 END_BKNO: 结束块数目 ER_BKNUM: 要擦除的块数目 SSER_BKNUM: 同时选择和擦除的块数目 SSER_BKNUM ← 128 注 同时选择与擦除的执行计数 M: SSER_BKNUM ← SSER_BKNUM ÷ 2 注 [条件 1] 否 ER_BKNUM ≥ SSER_BKNUM? 是 [条件 2] 否 ST_BKNO ÷ SSER_BKNUM = 余数为 0? 是 M←M+1 ER_BKNUM ← ER_ BKNUM − SSER_BKNUM 是 ER_ BKNUM = 0? 否 结束 ST_BKNO ← ST_BKNO + SSER_BKNUM 注 根据 SSER_BKNUM (128) 的最大值,执行 SSER_BKNUM ÷ 2,获得满足条件 1 和 2 的值;之后条件 3 获 得满足。 168 应用笔记 U17739CA3V0AN 第 6 章 FLASH 存储器编程参数特性 示例 1 擦除块 1 至 127(N(要擦除的块数目)= 127) <1> 第一个起始块编号为 1,要擦除的块数目为 127;因此满足条件 1 的值为 1、2、4、8、16、32 和 64。 此外,满足条件 2 的值为 1,满足条件 3 的值为 1,因此同时选择与擦除的块数目为 1;只有块 1 被擦除。 <2> 擦除块 1 后下一个开始的块编号为 2 并且要擦除的块数目为 126;因此满足条件 1 的值为 1、 2、4、8、16、32 和 64。 此外,满足条件 2 的值为 1 和 2,满足条件 3 的值为 2,因此同时选择与擦除的块数目为 2;块 2 和 3 被擦除。 <3> 擦除块 2 和块 3 后下一个开始的块编号为 4 并且要擦除的块数目为 124;因此满足条件 1 的值 为 1、2、4、8、16、32 和 64。 此外,满足条件 2 的值为 1、2 和 4,满足条件 3 的值为 4,因此同时选择与擦除的块数目为 4;块 4 至 7 被擦除。 <4> 擦除块 4 至块 7 后下一个开始的块编号为 8 并且要擦除的块数目为 120;因此满足条件 1 的值 为 1、2、4、8、16、32 和 64。 此外,满足条件 2 的值为 1、2、4 和 8,满足条件 3 的值为 8,因此同时选择与擦除的块数目为 8;块 8 至 15 被擦除。 <5> 擦除块 8 至块 15 后下一个开始的块编号为 16 并且要擦除的块数目为 112;因此满足条件 1 的 值为 1、2、4、8、16、32 和 64。 此外,满足条件 2 的值为 1、2、4、8 和 16,满足条件 3 的值为 16,因此同时选择与擦除的块 数目为 16;块 16 至 31 被擦除。 擦除块 16 至块 31 后下一个开始的块编号为 32 并且要擦除的块数目为 96;因此满足条件 1 的 值为 1、2、4、8、16、32 和 64。 此外,满足条件 2 的值为 1、2、4、8、16 和 32,满足条件 3 的值为 32,因此同时选择与擦除 的块数目为 32;块 32 至 63 被擦除。 <6> 擦除块 32 至块 63 后下一个开始的块编号为 64 并且要擦除的块数目为 64;因此满足条件 1 的 值为 1、2、4、8、16、32 和 64。 此外,满足条件 2 的值为 1、2、4、8、16、32 和 64,满足条件 3 的值为 64,因此同时选择与 擦除的块数目为 64;块 64 至 127 被擦除。 因此同时选择和擦除执行了七次(1,2 和 3,4 至 7,8 至 15,16 至 31,32 至 63 和 64 至 127), 要擦除块 1 至 127,因此获得 M = 7。 应用笔记 U17739CA3V0AN 169 第 6 章 FLASH 存储器编程参数特性 执行同时选择与擦除时块配置(擦除块 1 至 127 时) <块编号> 127 64 63 用户区域 (128 KB) 32 31 16 15 8 7 4 3 2 1 0 1 KB 2 KB 4 KB 8 KB 16 KB 32 KB <可以同时选择和擦除的块的范围> 170 应用笔记 U17739CA3V0AN 64 KB 128 KB 第 6 章 FLASH 存储器编程参数特性 示例 2 擦除块 5 至 10(N(要擦除的块数目)= 6) <1> 第一个起始块编号为 5,要擦除的块数目为 6;因此满足条件 1 的值为 1、2 和 4。 此外,满足条件 2 的值为 1,满足条件 3 的值为 1,因此同时选择与擦除的块数目为 1;只有块 5 被擦除。 <2> 擦除块 5 后下一个开始的块编号为 6 并且要擦除的块数目为 5;因此满足条件 1 的值为 1、2 和 4。 此外,满足条件 2 的为 1 和 2,满足条件 3 的值为 2,因此同时选择与擦除的块数目为 2;块 6 和 7 被擦除。 <3> 擦除块 6 和块 7 后下一个开始的块编号为 8 并且要擦除的块数目为 3;因此满足条件 1 的值为 1 和 2。 此外,满足条件 2 的为 1 和 2,满足条件 3 的值为 2,因此同时选择与擦除的块数目为 2;块 8 和 9 被擦除。 <4> 擦除块 8 和块 9 后下一个开始的块编号为 10,并且要擦除的块数目为 1;因此满足条件 1 的值 为 1。这同时也满足条件 2 和 3,因此要同时选择和擦除的块数目为 1;块 10 被擦除。 因此同时选择和擦除执行了四次(5,6 和 7,8 和 9,10),要擦除块 5 至 10,因此获得 M = 4。 应用笔记 U17739CA3V0AN 171 第 6 章 FLASH 存储器编程参数特性 执行同时选择与擦除时块配置(擦除块 5 至 10 时) <块编号> 127 用户区域 (128 KB) 11 10 9 8 7 6 5 4 0 1 KB 2 KB 2 KB 1 KB <可以同时选择和擦除的块的范围> 172 应用笔记 U17739CA3V0AN 第 6 章 FLASH 存储器编程参数特性 示例 3 擦除块 25 至 73(N(要擦除的块数目)= 49) <1> 第一个起始块编号为 25,要擦除的块数目为 49;因此满足条件 1 的值为 1、2、4、8、16 和 32。 此外,满足条件 2 的值为 1,满足条件 3 的值为 1,因此同时选择与擦除的块数目为 1;只有块 25 被擦除。 <2> 擦除块 25 后下一个开始的块编号为 26 并且要擦除的块数目为 48;因此满足条件 1 的值为 1、 2、4、8、16 和 32。 此外,满足条件 2 的值为 1 和 2,满足条件 3 的值为 2,因此同时选择与擦除的块数目为 2;块 26 和 27 被擦除。 <3> 擦除块 26 和块 27 后下一个开始的块编号为 28 并且要擦除的块数目为 46;因此满足条件 1 的 值为 1、2、4、8、16 和 32。 此外,满足条件 2 的值为 1、2 和 4,满足条件 3 的值为 4,因此同时选择与擦除的块数目为 4;块 28 至 31 被擦除。 <4> 擦除块 28 至块 31 后下一个开始的块编号为 32 并且要擦除的块数目为 42;因此满足条件 1 的 值为 1、2、4、8、16 和 32。 此外,满足条件 2 的值为 1、2、4、8 和 32,满足条件 3 的值为 32,因此同时选择与擦除的块 数目为 32;块 32 至 63 被擦除。 <5> 擦除块 32 至块 63 后下一个开始的块编号为 64 并且要擦除的块数目为 10;因此满足条件 1 的 值为 1、2、4 和 8。 此外,满足条件 2 的值为 1、2、4 和 8,满足条件 3 的值为 8,因此同时选择与擦除的块数目为 8;块 64 至 71 被擦除。 <6> 擦除块 64 至块 71 后下一个开始的块编号为 72 并且要擦除的块数目为 2;因此满足条件 1 的值 为 1 和 2。 此外,满足条件 2 的值为 1 和 2,满足条件 3 的值为 2,因此同时选择与擦除的块数目为 2;块 72 和 73 被擦除。 因此同时选择和擦除执行了六次(25,26 和 27,28 至 31,32 至 63,64 至 71,72,73),要擦除 块 25 至 73,因此获得 M = 6。 应用笔记 U17739CA3V0AN 173 第 6 章 FLASH 存储器编程参数特性 执行同时选择与擦除时块配置(擦除块 25 至 73 时) <块编号> 127 74 73 72 71 用户区域 (128 KB) 64 63 32 31 28 27 26 25 24 0 1 KB 2 KB 4 KB 32 KB 8 KB <可以同时选择和擦除的块的范围> 174 应用笔记 U17739CA3V0AN 2 KB 第 6 章 FLASH 存储器编程参数特性 6.4 UART 通讯模式 (a) 数据帧 (b) 编程模式设置(加电时) 或 复位 <R> (c) 编程模式设置(加电后) 或 复位 (d) 复位命令 复位 备注 TXD:TXD6 RXD:RXD6 应用笔记 U17739CA3V0AN 175 第 6 章 FLASH 存储器编程参数特性 (e) 片擦除命令/块擦除命令/块空白检查命令/振荡设置命令 (f) 硅签名命令/版本获取命令 (g) 校验和命令 (h) 编程命令 备注 TXD:TXD6 RXD:RXD6 176 应用笔记 U17739CA3V0AN 第 6 章 FLASH 存储器编程参数特性 (i) 校验命令 (j) 安全设置命令 (k) 命令帧发送前等待 备注 TXD:TXD6 RXD:RXD6 应用笔记 U17739CA3V0AN 177 第 6 章 FLASH 存储器编程参数特性 6.5 3 线串行 I/O 通讯模式 (a) 数据帧 (b) 编程模式设置(加电时) 复位 <R> (c) 编程模式设置(加电后) 复位 (d) 复位命令 复位 <R> <R> 备注 SCK:SCK10 SC:SO10 SI:SI10 178 应用笔记 U17739CA3V0AN 第 6 章 FLASH 存储器编程参数特性 (e) 片擦除命令/块擦除命令/块空白检查命令/振荡设置命令 (f) 硅签名命令/版本获取命令 (g) 校验和命令 (h) 编程命令 备注 SCK:SCK10 SC:SO10 SI:SI10 应用笔记 U17739CA3V0AN 179 第 6 章 FLASH 存储器编程参数特性 (i) 校验命令 (j) 安全设置命令 (k) 命令帧发送前等待 备注 SCK:SCK10 SC:SO10 SI:SI10 180 应用笔记 U17739CA3V0AN 附录 A 电路图 (参考) 图 A-1 至 A-3 是 78K0/Kx2 编程器的参考电路图。 应用笔记 U17739CA3V0AN 181 附录 A 电路图 (参考) [备注] 182 应用笔记 U17739CA3V0AN 附录 A 电路图 (参考) 图 A-1. 78K0/Kx2 编程器参考电路图 (UART 通信时: 使用 X1 时钟) 应用笔记 U17739CA3V0AN 183 附录 A 电路图 (参考) 图 A-2. 78K0/Kx2 编程器参考电路图 (UART 通信时: 使用外部时钟) 应用笔记 U17739CA3V0AN 185 附录 A 电路图 (参考) 图 A-3. 78K0/Kx2 编程器参考电路图 (CSI 通信时) 应用笔记 U17739CA3V0AN 187 附录B 修订历史 0B B.1 本版本主要修订内容 1B 页码 整篇 说明 增加扩展规格产品 μPD78F0500A, 78F0501A, 78F0502A, 78F0503A, 78F0503DA, 78F0511A, 78F0512A, 78F0513A, 78F0514A, 78F0515A, 78F0513DA, 78F0515DA, 78F0521A, 78F0522A, 78F0523A, 78F0524A, 78F0525A, 78F0526A,78F0527A, 78F0527DA, 78F0531A, 78F0532A, 78F0533A, 78F0534A, 78F0535A, 78F0536A, 78F0537A, 78F0537DA, 78F0544A, 78F0545A, 78F0546A, 78F0547A, 78F0547DA 删除 2.1 编程器控制引脚 and 2.2 控制引脚详细资料 移动 9 个部分(从 2.3 基本流程图 到 2.11 状态列表) 到 第 1 章 FLASH 存储器编程器 p.32 修订 3.5 芯片擦除命令的描述 p.39 修订 表 3-1. 硅信号数据的举例 (在 μPD78F0522 (78K0/KD2)情况下) pp.41 to 45 修订 3.10.4 78K0/Kx2 硅信号列表 pp.52 to 54 • 修订流程图中(从 4.1 命令帧发送处理流程图 到 4.3 数据帧接收处理流程图)的符号 pp.104 to 106 •修订流程图中(从 5.1 命令帧发送处理流程图到 5.3 数据帧接收处理流程图)的符号 p.108 修订 5.4.3 处理完成的状态 pp.161 to 164 增加 6.1 扩展规格产品的 Flash 存储器编程器参数特性(μPD78F05xxA) p.164 修订 6.2.2 Flash 存储器编程器模式设置时间 pp.165 to 167 修订 6.2.3 编程器特性 p.175 增加 6.4 (c) 编程器模式设置 (上电后) p.178 修订 6.5 3 线串行 I/O 通讯模式 p.190 增加 B.2 修订历史的以前版本 应用笔记 U17739CA3V0AN 189 <R> B.2 旧版本的再版修订记录 2B 以下表格所示为旧版本再版修订记录。应用范围表示每个版本修订的内容所在的章节。 (1/2) 先前版本主要修订内容 版本 第二版 修订 图 2-5. Flash 存储器重写处理基本流程图 应用范围: 第 2 章 编程器操作环境 增加 2.4.1 模式设置流程图 增加 2.4.2 样例程序 6.8.3 处理完成状态 第 6 章 UART 通信模式 • 删除在异常终止[D]时 FLMD 错误 6.9.3 处理完成状态 • 删除在异常终止[B]时参数错误的描述 6.11.3 处理完成状态 • 增加在异常终止[B]时读取错误 修订 6.14.5 样例程序 增加 7.4.1 处理顺序表的注 第 7 章 3 线串行 I/O 通讯模式 (CSI) 修订 7.4.2 处理顺序说明 的说明和 增加 注 增加 7.4.4 流程图 注 修订 7.4.5 样例程序 修订 7.5.5 样例程序 修订 7.6.5 样例程序 修订 7.7.5 样例程序 修订 7.8.5 样例程序 7.9.3 处理完成状态 • 删除在异常终止[D]时 FLMD 错误 修订 7.9.5 样例程序 修订 7.10.5 样例程序 修订 7.11.5 样例程序 7.12.3 处理完成状态 • 增加在异常终止[B]时读取错误 修订 7.12.5 样例程序 修订 7.13.5 样例程序 修订 7.14.5 样例程序 修订 7.15.5 样例程序 修订 8.2 Flash 存储器编程器模式设置时间等待低电平数据 1 (UART) 第 8 章 FLASH 存储器编程器参数特性 删除第 9 章电气特性 (参考) 旧版本 第 9 章电气特性 (参考) 190 应用笔记 U17739CA3V0AN 附录 B 修订历史 (2/2) 先前版本主要修订内容 版本 第二版 修订 图 A-1. 78K0/Kx2 编程器参考电路图 (UART 通信时: 使用 X1 时钟) 到 应用范围: 附录 A 电路图 (参考) 图 A-3. 78K0/Kx2 编程器参考电路图 (CSI 通信时) 增加 附录 B 修订历史 附录 B 修订历史 应用笔记 U17739CA3V0AN 191 详细信息请联系: 中国区 MCU 技术支持热线: 电话:+86-400-700-0606 (普通话) 服务时间:9:00-12:00,13:00-17:00 (不含法定节假日) 网址: http://www.cn.necel.com/ (中文) http://www.necel.com/ (英文) [北京] [深圳] 日电电子(中国)有限公司 日电电子(中国)有限公司深圳分公司 中国北京市海淀区知春路 27 号 深圳市福田区益田路卓越时代广场大厦 39 楼 量子芯座 7,8,9,15 层 3901,3902,3909 室 电话:(+86)10-8235-1155 电话:(+86)755-8282-9800 传真:(+86)10-8235-7679 传真:(+86)755-8282-9899 [上海] [香港] 日电电子(中国)有限公司上海分公司 香港日电电子有限公司 中国上海市浦东新区银城中路 200 号 香港九龙旺角太子道西 193 号新世纪广场 中银大厦 2409-2412 和 2509-2510 室 第 2 座 16 楼 1601-1613 室 电话:(+86)21-5888-5400 电话: (+852)2886-9318 传真:(+86)21-5888-5230 传真: (+852)2886-9022 2886-9044 上海恩益禧电子国际贸易有限公司 [成都] 中国上海市浦东新区银城中路 200 号 中银大厦 2511-2512 室 日电电子(中国)有限公司成都分公司 电话:(+86)21-5888-5400 成都市二环路南三段 15 号天华大厦 7 楼 703 室 传真:(+86)21-5888-5230 电话:(+86)28-8512-5224 传真:(+86)28-8512-5334 [长春] 日电电子(中国)有限公司长春分公司子(中 吉林省长春市朝阳区 西安大路 727 号中银大厦 A 座 1609 室 电话:(+86)431-8859-7533 / 8859-8533 传真:(+86)431-8680-2944 公司长春分公司 [大连] 日电电子(中国)有限公司长春分公司 大连市中山路 88 号天安国际大厦 2701 室 电话:(+86)411-8230-8815 / 8230-8825 传真:(+86)411-8230-8835