iap15f2k61s2能不能通过i2c读写外部eeprom

iap15f2k61s2能不能通过i2c读写外部eeprom,第1张

IAP15F2K61S2和STC89C52程序写法上是没有什么区别的。

区别是;前者没有EEPROM,后者有。前者的FLASH就是EEPROM,可以用指令随时读/写FLASH区,就是执行程序时,可以改变程序区的程序,这很容易出错,所以,写程序时,一定要慎重,要把程序和数据区分开,否则重写了程序就混乱了。

而者的FLASH只能在烧录程序时写入,工作时,只能读数据。但是EEPROM是可以随时读/写的。

前者适合在产品开发阶段,而正式产品上,不要用,很容易出错的。

IAP,In

Application

Programming

,它的意思是“在应用编程”,即在

程序

运行时

程序存储器

可由程序自身进行擦写。通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。这种方式的典型应用就是用一小段

代码

来实现程序的下载,实际上

单片机

的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的boot程序

在里面

,片子上电后,开始运行这段程序,当检测到

上位机

有下载要求时,便和上位机通信,然后下载数据到存储区。大家要注意千万不要尝试去擦除这段ISP

引导程序

,否则恐怕以后再也下载不了程序了。

正是是因为有了IAP,从而可以使单片机可以将数据写入到程序存储器中,使得数据如同烧入的程序一样,

掉电

不丢失。当然写入数据的区域与程序存储区要分开来,以使程序不会遭到破坏。

要使用IAP

功能,与以下几个特殊功能寄存器相关:

ISP_DATA:

ISP/IAP

*** 作时的

数据寄存器

ISP/IAP:

从Flash

读出的数据放在

此处

,向Flash

写的数据也需放在此处

ISP_ADDRH:ISP/IAP

*** 作时的

地址寄存器

高八位。

ISP_ADDRL:ISP/IAP

*** 作时的地址寄存器低八位。

ISP_CMD:ISP/IAP

*** 作时的

命令模式

寄存器,须命令触发寄存器触发方可生效。

ISP_TRIG:ISP/IAP

*** 作时的

命令

触发寄存器。

当ISPEN(ISP_CONTR7)=1

时,对ISP_TRIG

先写入0x46,再写入0xb9,ISP/IAP命令才会生效。

IAP是指在应用编程,就是片子提供一系列的机制(硬件/软件上的)当片子在运行程序的时候可以提供一种改变flash数据的方法。通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。

这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的boot程序在里面,片子上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到存储区。

ISP/IAP相关寄存器:

ISP_DATA:ISP/IAP *** 作时的数据寄存器。

ISP/IAP从Flash读出的数据放在此处,向Flash写入的数据也需放在此处。

ISP_ADDRH:ISP/IAP *** 作时的地址寄存器高八位。

ISP_ADDRL:ISP/IAP *** 作时的地址寄存器低八位。

ISP_CMD:ISP/IAP *** 作时的命令模式寄存器,须命令触发寄存器触发方可生效。

扩展资料

STC单片机的特点:

STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。

1、增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051;

2、工作电压:STC12C5A60S2系列工作电压:55V-33V(5V单片机)STC12LE5A60S2系列工作电压:36V-22V(3V单片机);

3、工作频率范围:0 - 35MHz,相当于普通8051的 0~420MHz;

4、用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节;

5、片上集成1280字节RAM;

6、通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA。

我用C8051F020上实现的一个IAP来举例吧。升级程序的确放在指定位置,因为C8051F020有64K的ROM,所以升级程序就占用ROM最后的4K的空间,前面64K就用来存放用户程序。

在每次单片机启动时,放在0000H位置的LJMP指令不是跳转到用户程序,而是直接跳转到了升级程序(60K开始的位置),这里升级程序初始化串口,等待串口发来的数据流,如果数据流的不正确或者没有收到数据流,就跳转回用户程序的入口执行用户上次下载进去的程序。

所以在这里用户的程序不能超过60K,当然升级程序也不会“自宫”,就没什么影响了。

STM32是可以实现多个APP的,你可以通过你的IAP来控制app,通过不同的地址你可以选择跳转到不同的APP,一般都直接使用的IAP像APP跳转,逆向跳转一般通过复位来实现,但也可以通过代码跳转,APP之间的跳转也是一样的。

需要注意的是每个APP包括IAP都有各自的中断向量表,若在相应代码中有使用中断,跳转前记得先关闭中断,以免刚跳转过去但你还没来得及重新设置中断向量表就进入中断,程序可能跑飞。

你先实现了一个IAP+APP,那么一个IAP+多个APP也就差不多懂了。

以上就是关于iap15f2k61s2能不能通过i2c读写外部eeprom全部的内容,包括:iap15f2k61s2能不能通过i2c读写外部eeprom、STC单片机中的IAP功能是什么ISP/IAP 触发寄存器是什么、STC单片机中的IAP功能是什么ISP/IAP 触发寄存器是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9787431.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存