
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 触发寄存器是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)