久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2062|回復: 13
打印 上一主題 下一主題
收起左側

EEPROM的扇區操作是用IAP好還是ISP好

[復制鏈接]
跳轉到指定樓層
樓主


/*----------------------------
扇區擦除
----------------------------*/
void IapEraseSector(WORD addr)
{
    IAP_CONTR = ENABLE_IAP;         //使能IAP
    IAP_CMD = CMD_ERASE;            //設置IAP命令
    IAP_ADDRL = addr;               //設置IAP低地址
    IAP_ADDRH = addr >> 8;          //設置IAP高地址
    IAP_TRIG = 0x5a;                //寫觸發命令(0x5a)
    IAP_TRIG = 0xa5;                //寫觸發命令(0xa5)
    _nop_();                        //等待ISP/IAP/EEPROM操作完成
    IapIdle();
}


/*----------------------------





//========================================================================
// 函數: void        EEPROM_SectorErase(u16 EE_address)
// 描述: 擦除一個扇區.
// 參數: EE_address:  要擦除的EEPROM的扇區中的一個字節地址.
// 返回: none.
// 版本: V1.0, 2014-6-30
//========================================================================
void        EEPROM_SectorErase(u16 EE_address)
{
        ISP_ENABLE();                                                //設置等待時間,允許ISP/IAP操作,送一次就夠
        ISP_ERASE();                                                //宏調用, 送扇區擦除命令,命令不需改變時,不需重新送命令
                                                                                //只有扇區擦除,沒有字節擦除,512字節/扇區。
                                                                                //扇區中任意一個字節地址都是扇區地址。
        ISP_ADDRH = EE_address / 256;                //送扇區地址高字節(地址需要改變時才需重新送地址)
        ISP_ADDRL = EE_address % 256;                //送扇區地址低字節
        EEPROM_Trig();                                                //觸發EEPROM操作
        DisableEEPROM();                                        //禁止EEPROM操作
}



上面這兩個扇區擦除函數都是stc-isp給出的,對于IAP和ISP在網看查了好久,還是沒搞清楚它們使用的區別,請大神們指點一下,謝謝!


比如我想做一個瓦力機器人,每塊芯片都是他的一個大腦記憶細胞,所以有大量的擦除讀寫操作,那么請問上面兩種函數哪種更適合呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:624769 發表于 2022-8-10 14:18 來自觸屏版 | 只看該作者
ISP和iap,對應的sfr寄存器地址不同,不是哪個好,而是為了區別不同的地址。
回復

使用道具 舉報

板凳
ID:161164 發表于 2022-8-10 15:12 | 只看該作者
在STC-ISP的EEPROM范例程序里從89看到8H
全都是用IAP
ISP的程序從哪來的?
回復

使用道具 舉報

地板
ID:624769 發表于 2022-8-10 15:45 來自觸屏版 | 只看該作者
lkc8210 發表于 2022-8-10 15:12
在STC-ISP的EEPROM范例程序里從89看到8H
全都是用IAP
ISP的程序從哪來的?

89的手冊,寄存器是ISP_????,頭文件也是,89,90的寄存器是ISP_xxxx,15,8的頭文件是iapxxxx,指向的地址是不同的。
回復

使用道具 舉報

5#
ID:123289 發表于 2022-8-10 16:42 | 只看該作者
以51單片機為例:其存儲器分為三塊。
1、程序存儲器:可尋址空間64K,用于存放用戶的程序,CPU取指令只能在此空間。
2、外部分擴展存儲器:可尋址空間64K,用于存放數據,CPU無法在此空間取指令。
3、內部分RAM:256字節。這里略去功能介紹。
問題來了:如果用戶弄了2K的EEPROM,如何讓它能被CPU尋址(訪問)到呢?
有兩種方案:
1、程序一般用不了64K的全部空間,于是在【程序存儲器】中挖出2K的空間,將它做成EEPROM。這是STC一種做法。例如:IAP15Fxxxx型號芯片。
由于程序存儲器通常只能在燒錄時寫入,而EEPROM卻需要在程序運行中,由程序讀、寫或擦除,為此STC又特意開發了一套寫、擦它的方式。但讀取仍可以用通用的指令進行,如:MOVC A, @A+DPTR。
這種方案好處是:無需單獨再做EEPROM,直接利用【程序存儲器】的FLASH空間當作EEPROM用,且大小空間比較自由靈活,用不完的FALSH空間可以隨便用。
這里有一個風險:比如:0000-11FFH放的是程序,如果你把此區域當作是EEPROM,對它進行寫、擦操作,則程序就被破壞掉了。所以這個方案需要你知道程度占多長?哪些區域是程序用不到的地方。
不過風險中,也有一個重要的好處:可以用程序,修改自己的程序!例如,程序在運行中就能進行自我升級:擦除原來的程序重新寫入新的程序!這是高級用法,就不在此介紹了。
2、在【外部分擴展存儲器】中挖出2K的空間,將它做成EEPROM,這是常用的方式,不多介紹了。
樓主用C語言寫程序,兩種方式無所謂好壞之分。但必須知道EEPROM的數據是在哪個區域,因為你在定義一個EEPROM中的數據變量時,需要用到。
如果不考慮在線或遠程升級程序,建議用第2種方式的EEPROM芯片,需要考慮的問題少,不易出錯。
回復

使用道具 舉報

6#
ID:161164 發表于 2022-8-10 17:04 | 只看該作者
188610329 發表于 2022-8-10 15:45
89的手冊,寄存器是ISP_????,頭文件也是,89,90的寄存器是ISP_xxxx,15,8的頭文件是iapxxxx,指向的地 ...

???

回復

使用道具 舉報

7#
ID:95375 發表于 2022-8-10 18:46 | 只看該作者
188610329 發表于 2022-8-10 14:18
ISP和iap,對應的sfr寄存器地址不同,不是哪個好,而是為了區別不同的地址。

什么不同的地址呢?是不是說這兩個只是兩種不同的方法,用哪種都行?

     型號        大小   扇區數  開始地址  結束地址   MOVC讀偏移地址
STC15F/L2K32S2   29K    58扇區  0x0000  ~  0x73FF        0x8000

比如要讀寫STC15F2k32s2,用哪種方法都一樣是吧
回復

使用道具 舉報

8#
ID:95375 發表于 2022-8-10 18:52 | 只看該作者
lkc8210 發表于 2022-8-10 15:12
在STC-ISP的EEPROM范例程序里從89看到8H
全都是用IAP
ISP的程序從哪來的?

在stc-isp范例程序里的實驗箱4程序包里范例14有



回復

使用道具 舉報

9#
ID:624769 發表于 2022-8-10 20:39 | 只看該作者

STC手冊   89系列  第 270 頁。
http://www.zg4o1577.cn/bbs/dpj-82368-1.html


看到如下圖:



注意,紅框位置的  地址。

STC15 系列手冊   第 841 頁。

看到如下圖:


注意,紅框位置的 地址。

由于,地址本身不同,所以  一個用 ISP 命名, 一個用 IAP命名, 防止因為用錯頭文件,而出了問題也不知道問題在哪里。
即,雖然是同一個操作方式,但是,由于寄存器地址不同,所以給了不同的名字。目的是為了區分 版本差別。
同理, T2 定時器, 89系列名字 叫 TL2, TH2,  15系列里面叫  T2L, T2H,  都是 定時器 初值定義, 但是寄存器地址 變了,所以,名字就要變。
回復

使用道具 舉報

10#
ID:624769 發表于 2022-8-10 20:45 | 只看該作者
liyago 發表于 2022-8-10 18:46
什么不同的地址呢?是不是說這兩個只是兩種不同的方法,用哪種都行?

     型號        大小   扇區數 ...

你用不用 頭文件的?

你打開  STC15.H     這個頭文件
你只能找到:
sfr IAP_CONTR = 0xC7;
而找不到:
sfr ISP_CONTR = ????

反過來,你打開  STC89C5xRC.H 這個頭文件
你只能找到:
sfr ISP_CONTR = 0xE7;
而找不到:
sfr IAP_CONTR = ????

這就是 STC的改版,地址不一樣了,名字也不一樣,明白了??
沒有哪個更好,因為 一個單片機里 只有其中一個。

回復

使用道具 舉報

11#
ID:401564 發表于 2022-8-11 13:47 | 只看該作者
我感覺沒有必要糾結什么的吧
數據手冊上有什么,就用什么
如果想知道,可以對比一下擦除時間之類的區別
回復

使用道具 舉報

12#
ID:95375 發表于 2022-8-14 23:12 | 只看該作者
188610329 發表于 2022-8-10 20:45
你用不用 頭文件的?

你打開  STC15.H     這個頭文件

明白了,就是頭文件里沒定義想用都沒得用
回復

使用道具 舉報

13#
ID:95375 發表于 2022-8-14 23:14 | 只看該作者
yzwzfyz 發表于 2022-8-10 16:42
以51單片機為例:其存儲器分為三塊。
1、程序存儲器:可尋址空間64K,用于存放用戶的程序,CPU取指令只能 ...

已明白,謝謝!
回復

使用道具 舉報

14#
ID:95375 發表于 2022-8-14 23:15 | 只看該作者
188610329 發表于 2022-8-10 20:39
STC手冊   89系列  第 270 頁。

謝謝,就是硬件不同而不同。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品美女久久久 | 色综合久久天天综合网 | 水蜜桃亚洲一二三四在线 | 国产一区免费 | 欧美精品一二区 | 日韩一区二区三区在线观看 | 在线91| 国产精品网址 | 九九热最新地址 | 国产三区av | 色综久久 | 国产视频在线观看一区二区三区 | 欧美久久一区二区 | 91精品亚洲 | 国产丝袜一区二区三区免费视频 | 中文字幕一区二区三区在线观看 | 欧美日韩久久久 | 国产超碰人人爽人人做人人爱 | 九九视频网 | 欧美在线观看一区 | 日韩中文字幕 | 伊人中文字幕 | 亚洲国产一区在线 | 日韩欧美三级 | 欧美精品久久久 | 亚洲精品在线免费看 | 久久久噜噜噜久久中文字幕色伊伊 | 国产一区二区高清在线 | 欧美激情欧美激情在线五月 | 国产福利视频 | 国产综合久久 | 日本在线看片 | 狠狠躁18三区二区一区 | 第一福利社区1024 | 国精产品一区一区三区免费完 | 欧美日韩亚洲视频 | 视频一区二区在线观看 | 国产精品国产自产拍高清 | 超碰在线播| 精品久久一区 | 中文字幕视频在线看 |