您好,欢迎光临本网站![请登录][注册会员]  
文件名称: AN4221_STM32自举程序中使用的I2C协议.PDF
  所属分类: 其它
  开发工具:
  文件大小: 706kb
  下载次数: 0
  上传时间: 2019-09-14
  提 供 者: weixin_********
 详细说明:AN4221_STM32自举程序中使用的I2C协议AN4221 表格索引 表格索引 适用产品 表2. l2C自举程序指令 6 表3 自举程序协议以版本.. 表4 文档修订历史 .,48 DoclD024055 ReV 2 3/49 图片索引 AN422 图片索引 图1 使用12C的STM32自举程序. 5 图2. Get指令:主机端 8 图3 Get指令:器件端 图4 Get version:主机端 .,10 图5 Get version:器件端 图6 Get|D指令:主机端 12 图7 Get ID指令:器件 图8 Read memory指令:主机端 14 图9 Read memory指令:器件端 图10 Go指令:主机端. 图11. Go指令:器件端 18 图12 Write memory指令:主机端 20 图13 Write memory指令:器件端 2 图14 Erase memory指令:主机端 图15 Erase memory指令:器件端. 24 图16 Write protect指令:主机端 25 图17. Write protect指令:器件端 图18 Write unprotect指令:主机端 .27 图19 Write unprotect指令:器件端 28 图20 Readout protect指令:主机端 ,,,,,,,,,,.,,29 图2 Readout protect指令:器件端 图22 Readout unprotect指令:主机端 30 图23 Readout unprotect指令:器件端 图24 No-Stretch Write memory指令:主机端. ,,,,,..33 图25 No-Stretch Write memory指令:器件端 34 图26 No-Stretch Erase memory指令:主机端 36 图27 No- Stretch Erase memory指令:器件端 37 图28 No- Stretch Write protect指令:主机端 39 图29 No- Stretch Write protect指令:器件端 40 图30 No- Stretch Write unprotect指令:主机端 4 图31 No- Stretch Write unprotect指令:器件端 42 图32 NoStretch Readout protec指令:主机端 43 图33 No- Stretch Readout protect指令:器件端. 44 图34 No-Stretch Readout unprotect指令:主机端 .45 图35 No- Stretch Readout unprotect指令:器件端 46 4/49 DocID024055 ReV 2 AN4221 2C自举程序代码序列 2c自举程序代码序列 图1.使用2c的STM32自举程序 检测到地址 从器件地址 等待指令 Ge指令 收到指令 Go指令 Get指令 RD指令 指令 G0指令 程序 程序 程序 程序 jP to address MSV31517V1 在AN2606中规定了每个产品自举程序的12C从地址 进入系统存储器自举模式后,并且此时STM32微控制器已配置好(若需更详细信息,请参 考您的STM32系统存储器自举模式应用笔记),自举程序代码开始扫描2C_SDA线引脚」 等待检测它自身在总线上的地址。检测到之后,12c自举程序固件开始接收主机指令。 DoclD024055 ReV 2 5/49 自举程序指令集 AN422 自举程序指令集 从Ⅵ1.1协议版本开始支持" No Stretch"指令,当自举程序完成操作之前主机必须长时间等 待时,它可以支持更好的进行指令管理 只要可能,强烈建议使用" No stretch"指令而不使用相应的普通指令。 支持的指令列于表2中 表22c自举程序指令 指令(1) 指令代码 指令说明 Get(2) 0x00 获取自举程序当前版本所支持的版本和允许的指令 Get version 0x01 获取自举程序版本 Get id(2) 0x02 获取芯片|D Read Memory(2) 0x11 从存储器读取最多256字节,由应用指定起始地址 Go③3) 0x21 跳转到内部 Flash中的用户应用代码 Write Memory/(3) 0x31 向存储器写入最多256字节,由应用指定起始地址 No-Stretch Write Memory(3)/(4) 0x32 向存储器写入最多256字节,由应用指定起始地址。当操作 正在进行时返回忙状态 E rase 0×44 使用双字节寻址模式擦除一个到所有的Fash页面或扇区 No-Stretch Erase(3 )(4) 0x45 使用双字节寻址模式擦除一个到所有的Fash页面或扇区, 当操作正在进行时返回忙状态 Write protect 0x63 对一些扇区使能写保护 No-Stretch Write Protect(4) 对一些扇区使能写保护,当操作正在进行时返回忙状态 Write Unprotect 0x73 对所有Fash扇区禁用写保护 No-Stretch Write Unprotect(4) 0x74 对所有Fash扇区禁用写保护,当操作正在进行时返回忙状 Readout protect 0×82 使能读保护 No-Stretch Readout Protect(4) 0x83 使能读保护,当操作正在进行时返回忙状态 Readout Unprotect(2) 0x92 禁用读保护 No-Stretch Readout Unprotect(2)(4) 0x93 禁用读保护,当操作正在进行时返回忙状态 1.若收到了拒绝指令,或指令执行期间发生了错误,则自举程序会发送NACK字节,然后返回到检查指令状态。 2.读保护-当RDP(读保护)选项激活时,仅能使用此有限子集的指令。所有其它指令都会被NACK,对器件没有作用。取 消RDP之后,其它指令变为激活。 3.若需了解哪些存储器空间可执行这些指令,请参考STM32产品数据手册和AN2606:STM32微控制器系统存储器自举模 仅V1.1的|2C协议才支持No- Stretch指令。 6/49 DocID024055 ReV 2 AN4221 自举程序指令集 No-Stretch指令 当自举程序执行操作时,No- Stretch指令可执行 Write、 Erase、 Write protect、 Write Unprotect、 Read protect、 Read Unprotect操作而不延长2C线。当自举程序执行的操作 需要等待时间时,这些指令允许与总线上的其它器件通信。 这些指令与标准指令的不同之处在于指令结束:当主机在指令结束要求 ACK/NACK时,自 举程序不会延长2C线,而是使用第三种状态—BUsy(0×76)来响应。当主机收到 Busy状态时,它会再对状态轮询,读取一个字节,直到收到ACK或NACK响应 通信安全 从编程主机到器件的所有通信都经过校验和验证。接收的数据字节块都经过异或计算。所有 字节异或计算后算出一个字节,加到每次通信的末尾(校验和字节)。对所有收到的字节 数据+校验和——一做异或计算,最后结果必须为0×00 对每个指令,主机会发送一个字节及其补码(异或=0×00) 每个包或接受(ACK应答)或丢弃(NACK应答) ACK= 0x79 NACK OX1F 对于No- Stretch指令,当操作正在进行时,会发送Busy状态而不是ACK或NACK BUSy= 0X76 主机的恢可为下列之 发送指令帧:主机作为主发送端发起通信,向器件发送两字:命令代码+XOR。 竽待 ACK/NACK做:主机作为主接收端发起12C通信,从器件接收一个字节:ACK或 NACK或BUSY 接收数据帧:主机作为主接收端发起12C通信,从器件收到购应。收到的宇芳数取决F 指令 发送数据帧:主机作为主发送端发起12C通信,向器件发送需要的字节。发送的字艿数 耿决于指令。 2C通信实现了超时机制,这是自举程序指令正确执行所必需要考虑的。此超时在同一指令的 两个|2C帧间实现。例如,对于 Write memory指令,在指令发送帧和地址存储器发送帧之间 有超时机制。此外也将在同一12C帧中的两个连续数据接收或发送实例之间插入同一超时周 期。如果超时周期已过,则生成系统复位以避免自举程序崩溃。有关每种STM32产品的12C 超时值,请参考AN2606,"2C自举程序时序特性”一节。 2.1 Get指令 Get指令可帮您得到自举程序版本及所支持的指令。当自举程序收到Get指令时,它将自举 程序版本和所支持的指令代码发送给主机,如图2中所示。 DoclD024055 ReV 2 7149 自举程序指令集 AN422 图2.Gtt指令:主机端 开始Get 发送指令帧 (0×00+0XFF) 等待ACK NACK 或NACK帧一 接收数据帧 一字节数 自举程序版本 支持的指令列表 等待ACK NACK 或NACK帧 ACK 结束Get Sv31518v1 图3.Ge指令:器件端 开始Get 接收帧 否 OX0O-+OXFF? 发送NACK帧 是 发送ACK帧 发送数据帧: 发送字节数 自举程序版本 支持的指令列表 发送ACK帧 结束Get MSy31519V1 8/49 DocID024055 ReV 2 AN4221 自举程序指令集 STM32发送的字节如下 对于12C协议V10: 字节1:ACK 字节2:N=11=后续字节数-1,不包括当前字节和ACK。 字节3:自举程序版本0x10=1.0版本 字节4:0×00-Get指令 字节5:0X01- Get Version 字节6:0X02-Get|D 字节7:0×11- Read Memory指令 字节8:0x21-Go指令 字节9:0x31 Write Memory指令 字节10:0×44- Erase指令 字节11:0X63- Write Protect指令 字节12:0×73- Write Unprotect指令 字节13:0x82- Readout protect指令 字节14:0×92- Readout Unprotect指令 字节15:ACK r 12C protocol V1.1 字节1:AcK 字节2:N=17=后续字节数-1.不包括当前字节和ACK 字节3:自举程序版本0×11=1.1版本 字节4:0×00-Get指令 字节5:0×01- Get Version 字节6:0X02-GetD 字节7:0×11- Read Memory指令 字节8:0×21-G0指令 字节9:0×31- Write Memory指令 字节10:0×44- Erase指令 字节11:0×63- Write protect指令 字节12:0X73- Write Unprotect指令 字节13:0X82- Readout protect指令 字节14:0×92- Readout Unprotect指令 字节15:0×32-No- Stretch Write Memory指令 字节16:0×45-No- Stretch Erase指令 字节17:0X64- No-Stretch Write Protect指令 字节18:0×74- No-Stretch Write Unprotect指令 字节19:0x83-No- Stretch readout protect指令 字节20:0×93-No- Stretch Readout Unprotect指令 字节21:ACK DoclD024055 ReV 2 9/49 自举程序指令集 AN422 22 Get version指令 Get version指令用于获取2C自举程序版本。当自举程序收到该指令时,它会向主机发送 如下信息(自举程序版本)。 图4. Get version:主机端 开始GV 发送指令帧 (0X01+0XFE) 等待AcK NACK 或NACK帧 ACK 接收数据帧 自举程序版本 NACK 等待AcK 或NACK帧 ACK 结束GV Msv31520v1 1. GV=Get Version STM32发送的字节如下 字艿1:ACK 字芳2:自举程序版本(0≤版本≤255)(例如,0X10=1.0版本) 字芳3:ACK 0/49 DocID024055 ReV 2
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 输入关键字,在本站1000多万海量源码库中尽情搜索: