硬件開發(fā)工具spmc75f2413a evm板配套例子_第1頁
硬件開發(fā)工具spmc75f2413a evm板配套例子_第2頁
硬件開發(fā)工具spmc75f2413a evm板配套例子_第3頁
硬件開發(fā)工具spmc75f2413a evm板配套例子_第4頁
硬件開發(fā)工具spmc75f2413a evm板配套例子_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、V1.0 Mar 27, 200619, InnovationRoad Science Park Hsin-Chu 300 R.O.C.: 886-3-578-6005 Fax: 886-3-578-4418 Web:SPMC75 基礎例程FLASH 操作保留對此文件修改之權利且不另行通知??煽恐畔?,但并不保證本文件中絕無錯誤。請于向所提供之信息相信為正確且提出訂單前,自行確定所使用之相關技術文件及規(guī)格為之版本。若因貴公司使用本公司之文件或產(chǎn)品,而涉及第三人之專利或著作權等智能權之應用及配合時,則應由貴公司負責取得同意及,本公司僅單純販售產(chǎn)品,上述關于同意及,非屬本公司應為保證之責任。又系統(tǒng)

2、及飛航等相關設備。之正式,本公司之所有產(chǎn)品不得使用于醫(yī)療器材,維持生命 Sunplus Technology Co.,.PAGE 1V1.0 Mar 27, 2006頁概述4例子介紹4 硬件連接5 程序設計5 1.2.3.4. Sunplus Technology Co.,.PAGE 2V1.0 Mar 27, 2006目錄修訂 Sunplus Technology Co.,.PAGE 3V1.0 Mar 27, 2006版本日期作者修訂內(nèi)容V1.02006/3/27Peixing初始版本概述1.SPMC75 系列單片機內(nèi)嵌 32K FLASH器。32K 的 FLASH 共分為 16 頁,每頁

3、2K 字,每頁可再分為 8 塊,每塊 256 字。其中只有位于 0 xF0000XFF7F 區(qū)域內(nèi)的頁在運行模式下可設置為只讀或可讀可寫,其他頁不能設置為寫模式。本例通過 C 語言和匯編語言兩種方式讓大家了解如何對 SPMC75 單片機的 FLASH 進行擦除、單字寫入、多字寫入等操作。例子介紹2.定義一個錯誤標志單元,并將錯誤標志單元初始化為 0 x00ff。將 FLASH 位于0 xF0000XFF7F 區(qū)域內(nèi)的 FLASH 中的一塊(256 個字的空間)擦除(實現(xiàn) FLASH 的擦除功能),然后對擦除的塊進行校驗,看是否有擦除錯誤的單元,若有擦除錯誤的單元,則錯誤標志單元第 0 位被清

4、0;然后利用單字寫入方式向剛擦除完的 FLASH塊里寫入 10 個數(shù)(實現(xiàn)單字寫入功能),而后寫入的 10 個數(shù)據(jù)進行校驗,若 10 個數(shù)據(jù)中有寫入錯誤的,則錯誤標志單元第 1 位被清 0;然后通過多字寫入模式向剛擦除完的 FLASH 塊里寫入 30 個數(shù)據(jù)(實現(xiàn)多字寫入功能),而后對寫入的 30 個數(shù)據(jù)進行校驗,若 30 個數(shù)據(jù)中有寫入錯誤的,則錯誤標志單元第 2 位被清 0。最后將錯誤標志單元送到 IOD 口,通過 IOD07口的 LED 顯示出來,通過查看 LED 的點亮情況,就可以看出各功能的實現(xiàn)情況。 Sunplus Technology Co.,.PAGE 4V1.0 Mar 27

5、, 2006FLASH 操作硬件連接3.如圖 1,將 JP8 短接。圖 1:LED 顯示原理圖程序設計4.(1)實現(xiàn)方法:IOD 初始化為非反向輸出,設一個型數(shù)組 i_str_W40,將其初始化。定義一個錯誤標志單元 ui_Err 并將其初始化為 0 x00ff 。將 FLASH 位于0 xF0000XFF7F 區(qū)域內(nèi)的 FLASH 中的第一塊(256 個字的空間)擦除(實現(xiàn) FLASH的擦除功能),然后對擦除的塊進行校驗,看是否有擦除錯誤的單元,若有擦除錯誤的單元,則錯誤標志單元第 0 位被清 0(將錯誤標志單元 ui_Err 與 0 x e 相與);然后利用單字寫入方式向剛擦除完的 FLA

6、SH 塊里寫入 10 個數(shù)據(jù)(i_str_W09,實現(xiàn)單字寫入功能),而后寫入的 10 個數(shù)據(jù)進行校驗,若 10 個數(shù)據(jù)中有寫入錯誤的,則錯誤標志單元第 1 位被清 0(將錯誤標志單元 ui_Err 與 0 x d 相與);然后通過多字寫入模式向剛擦除完的 FLASH 塊里寫入 30 個數(shù)據(jù)(i_str_W1039,實現(xiàn)多字寫入功能),而后對寫入的 30 個數(shù)據(jù)進行校驗,若 30 個數(shù)據(jù)中有寫入錯誤的,則錯誤標志單元第 2位被清 0(將錯誤標志單元 ui_Err 與 0 x b 相與)。最后將錯誤標志單元 ui_Err 送到 IOD口,通過 IOD07口的 LED 顯示出來,通過查看 LED

7、的點亮情況,就可以看出各功能的實現(xiàn)情況。 Sunplus Technology Co.,.PAGE 5V1.0 Mar 27, 2006R38470D7 LEDR39470D8 LEDIOD012IOD412R40470D9 LEDR41470D10 LEDIOD112IOD512R45470D11 LEDR46470D12 LEDIOD212IOD612R47330D13 LEDR48470D14 LEDIOD312IOD712JP82LED1LED(2)程序流程圖:開始系統(tǒng)初始化 ui_Err = 0 xff無擦除校驗-有錯?有無單字寫入校驗-有錯?有無多字寫入校驗-有錯?有while(1

8、); Sunplus Technology Co.,.PAGE 6V1.0 Mar 27, 2006P_IOD_Buffer-W= ui_Errui_Err第20FLASH寫功能多字寫入方式寫入30個數(shù)據(jù)ui_Err第10單字字寫入方式寫入寫入10個數(shù)據(jù)ui_Err第00將FLASH第14頁第一塊擦除FLASH寫使能(3)程序代碼:C 語言格式 Sunplus Technology Co.,.PAGE 7V1.0 Mar 27, 2006/=/工程名稱: Exa09_Flash_C/編者:/功能描述: Flash 模式設置、擦除操作、寫單字操作/以及寫多字操作的子程序段/組成文件: main.

9、c/spmc75f2313a.h, unspmacro.h/硬件連接: 新版評估套件/完成日期: 2006-4-12/=#include spmc75f2313a.h #include unspmacro.h#defi R P_IOB_Buffer-B.bit8 #define SRCLK P_IOB_Buffer-B.bit9 #define RCLK P_IOB_Buffer-B.bit10/=/語法格式: void Flash_RW_Disable(void)/ 功能描述: FLASH 區(qū)寫/參數(shù):無/返回值:無/=void Flash_RW_Disable(void)P_Flash_R

10、W-W = 0 x5a5a;/第一次寫入控制命令 P_Flash_RW-W = 0 x4000;/第二次寫入設置字,只讀/= Sunplus Technology Co.,.PAGE 8V1.0 Mar 27, 2006/語法格式: void Flash_RW_Enable(void)/功能描述: FLASH區(qū)寫使能/參數(shù):無/返回值:無/=void Flash_RW_Enable(void)P_Flash_RW-W = 0 x5a5a;/第一次寫入控制命令 P_Flash_RW-W = 0 x0000;/第二次寫入設置字,讀寫/=/語法格式: void FlashErase(unsigned

11、*sectorAddress)/功能描述: 擦除一塊 flash/參數(shù):sectorAddress-要擦除的塊中的任意一個地址/返回值:無/注意:每擦除一次硬件會進行延時 20ms 以上/=void FlashErase(unsigned*sectorAddress)P_Flash_Cmd-W = 0 xAAAA; /寫入控制命令 P_Flash_Cmd-W = 0 x5511;/寫入擦除命令*sectorAddress = 0;/向要擦除塊中的 sectorAddress 地址寫入 0/=/語法格式: void FlashWrite(unsigned*sectorAddress,word)/

12、功能描述: 向指定地址寫入指定的數(shù)/參數(shù):sectorAddress-要寫入數(shù)據(jù)的塊地址,word-要寫入的數(shù)據(jù)/返回值:無/注意:寫入前保證對應地址已擦除/=void FlashWriteWord(unsigned*sectorAddress,word)P_Flash_Cmd-W = 0 xAAAA;/寫入控制命令P_Flash_Cmd-W = 0 x5533;/寫入單字編程命令*sectorAddress = word;/向 sectorAddress 地址寫入數(shù)據(jù) word/=/語法格式:void FlashWrite(unsigned*sectorAddress,*Pword,unsi

13、gned char n)/功能描述:向指定地址寫入多個數(shù)據(jù)/參數(shù):sectorAddress-要寫入數(shù)據(jù)的塊地址,Pword-要寫入的數(shù)據(jù)的首地址/n-要寫入數(shù)據(jù)的個數(shù)/返回值:無/注意:寫入前保證對應地址已擦除/=void FlashWritePage(unsigned*sectorAddress,*Pword,unsigned char n)nt i;P_Flash_Cmd-W = 0 xAAAA;/寫入控制命令for(i=0;iW = 0 x5544;/寫入多字編程命令*(sectorAddress + i) = *(Pword + i); /將數(shù)據(jù)寫入目標地址P_Flash_Cmd-W

14、 = 0 xF;/結(jié)束連續(xù)字寫入操作/=/語法格式: void LED_Display(unsignedcode) Sunplus Technology Co.,.PAGE 9V1.0 Mar 27, 2006 Sunplus Technology Co.,.PAGE 10V1.0 Mar 27, 2006/功能描述: 驅(qū)動一位數(shù)碼管顯示一個數(shù)據(jù)/參數(shù):code 高 4 位顯為示位碼,code 低 8 位為顯示段碼/返回值:無/=void LED_Display(unsignedcode)unsignedi; unsigned k;k = 0 x1000;/初始化要顯示的位的標志 for(i=

15、0;i= 1;/標志位右移一位RCLK = 1;/將數(shù)據(jù)顯示 RCLK = 0;/=/主函數(shù)/=nt main(void)i_str_W40, *ui_Addr;unsignedi,ui_Err;ui_Err = 0 x0000;ui_Addr = (unsigned*)0 xf000;/地址指針初始化,指向?qū)懭霐?shù)據(jù)的首地址P_IOB_Dir-W |= 0 x0700;/IOB810設置為輸出P_IOB_Attrib-W |= 0 x0700;/IOB810設置為非反向P_IOB_Buffer-W &= 0 xf8ff;/IOB810輸出為低for(i=0;i=39;i+)i_str_Wi =

16、 i;/要寫入 FLASH 的數(shù)組初始化,256 個數(shù)據(jù)Flash_RW_Enable();/FLASH 寫使能FlashErase(ui_Addr);/將 FLASH 第 14 頁第一塊擦除/校驗是否塊中所有數(shù)據(jù)都被正確擦除for(i=0;i=255;i+)if(*(ui_Addr+i)!=0 x f)ui_Err |= 0 x0001;/如果有錯,則 ui_Err 第 00/單字寫入 10 個數(shù)據(jù)for(i=0;i=9;i+)FlashWriteWord(ui_Addr+i),i_str_Wi);/單字寫入 Sunplus Technology Co.,.PAGE 11V1.0 Mar 2

17、7, 2006匯編語言格式 Sunplus Technology Co.,.PAGE 12V1.0 Mar 27, 2006/=/工程名稱: Exa09_Flash_ASM/編者:/功能描述: Flash 模式設置、擦除操作、寫單字操作/校驗單字寫入的 10 個數(shù)據(jù)for(i=0;i=9;i+)if(*(ui_Addr+i)!= i_str_Wi)ui_Err |= 0 x0002;/如果有錯,則 ui_Err 第 10/向擦除的塊剩余空間寫入 246 個數(shù)據(jù)FlashWritePage(ui_Addr+i),&i_str_W10,30);Flash_RW_Disable();/FLASH 寫

18、功能/校驗多字寫入方式寫入的 246 個數(shù)據(jù)for(i=10;i=39;i+)if( *(ui_Addr+i)!= i_str_Wi)ui_Err |= 0 x0004;/如果有錯,則 ui_Err 第 20ui_Err |= 0 x0fc0;/顯示看是否有錯 LED_Display(ui_Err);/調(diào)用 LED 顯示子程序 while(1);/以及寫多字操作的子程序段/main.asm組成文件:/spmc75f2413a.inc/SPMC75F2413A 的新版 EVM 板硬件連接:/完成日期:2006-3-17/=/=.INCLUDE spmc75f2413a.inc.RAM.VAR _

19、ERR.CODE/=/主函數(shù)/=.PUBLIC _main_main:r1 = 0 x00ffP_IOD_Dir = r1/IOD07設置為輸出r1 = 0 x00ffP_IOD_Attrib = r1/IOD07設置為非反向r1 = 0 x0000P_IOD_Buffer = r1/IOD07輸出為 0r5 = 0 x00ff/出錯標志位初始化call _Flash_RW_Enable/FLASH 寫使能設置r1 = 0 xf000/擦除塊的首地址call _FlashErase/擦除第 14 頁第一塊 Sunplus Technology Co.,.PAGE 13V1.0 Mar 27,

20、2006r1 = 0 xf000/擦除塊的首地址r3 = 256/讀出的數(shù)據(jù)個數(shù)寄存器?_VerifyErase:/擦除塊中數(shù)據(jù)讀出校驗r4 = r1/讀數(shù)據(jù)cmp r4,0 xf/判斷是否擦除jz ?_ReadErase/對了則跳轉(zhuǎn)r5 &= 0 x e/錯了則錯誤標志位第 00?_ReadErase:/沒有寫錯r1 += 1/地址加 1r3 -= 1/讀出數(shù)據(jù)計數(shù)器減 1jnz ?_VerifyErase/256 個數(shù)據(jù)沒讀完則跳轉(zhuǎn)r1 = 0 xf000/要寫入數(shù)據(jù)的 Flash 首地址r2 = 0/要寫入的數(shù)據(jù)r3 = 10/寫入數(shù)據(jù)個數(shù)計數(shù)器?_WriteWord:/單字寫入call

21、 _FlashWriteWord/將 r2 里面的數(shù)據(jù)寫入 r1 地址中r1 += 1/地址加 1r2 += 1/數(shù)據(jù)加 1r3 -= 1/寫入數(shù)據(jù)個數(shù)計數(shù)器減 1jnz ?_WriteWord/寫完 10 個數(shù)據(jù)了嗎r1 = 0 xf000/寫入數(shù)據(jù)的塊的首地址r2 = 0/校驗數(shù)據(jù)初始化r3 = 10/讀出的數(shù)據(jù)個數(shù)寄存器?_VerifyWord:/單字寫入的數(shù)據(jù)讀出校驗r4 = r1/讀數(shù)據(jù) Sunplus Technology Co.,.PAGE 14V1.0 Mar 27, 2006cmp r4,r2/判斷是否寫錯jz ?_ReadWord/寫對了則跳轉(zhuǎn)r5 &= 0 x d/寫錯了

22、則錯誤標志第 10?_ReadWord:/沒有寫錯r1 += 1/地址加 1r2 += 1/數(shù)據(jù)加 1r3 -= 1/讀出數(shù)據(jù)計數(shù)器減 1jnz ?_VerifyWord/單字寫入的 10 個數(shù)據(jù)沒讀完r1 = 0 xf00a/多字寫入的首地址r2 = 10/寫入數(shù)據(jù)初始化r3 = 30/要寫入的數(shù)據(jù)個數(shù)寄存器call _FlashWritePage/多字寫入call _Flash_RW_Disable/Flash 些功能r1 = 0 xf00a/多字寫入的數(shù)據(jù)讀出校驗r2 = 10r3 = 30?_VerifyPage:r4 = r1cmp r4,r2jz ?_Reager5 &= 0 x

23、b/錯誤則錯誤標志第 20?_Reage:r1 += 1r2 += 1r3 -= 1jnz ?_VerifyPage Sunplus Technology Co.,.PAGE 15V1.0 Mar 27, 2006P_IOD_Buffer = r5/顯示錯誤狀態(tài),沒有錯誤則 LED?_Loop:nopjmp ?_Loop/=/匯編格式:_Flash_RW_Disable/實現(xiàn)功能:FLASH 卸功能/參數(shù):無/出口參數(shù):無/破壞寄存器:無/=.PUBLIC _Flash_RW_Disable_Flash_RW_Disable:push r1 to spr1 = 0 x5a5aP_Flash_R

24、W = r1/第一次寫入控制命令r1 = 0 x4000P_Flash_RW = r1/第二次寫入設置字,只讀pop r1 from spretf/=/匯編格式:_Flash_RW_Disable/實現(xiàn)功能:FLASH 卸功能使能/參數(shù):無 Sunplus Technology Co.,.PAGE 16V1.0 Mar 27, 2006/ 出口參數(shù): 無/ 破壞寄存器:無/=.PUBLIC _Flash_RW_Enable_Flash_RW_Enable:push r1 to spr1 = 0 x5a5aP_Flash_RW = r1/第一次寫入控制命令r1 = 0 x0000P_Flash_RW = r1/第二次寫入設置字,讀寫pop r1 from sp retf/=/_FlashErase語法格式:/功能描述:擦除一塊 flash/r1-要擦除的塊中的任意一個地址參數(shù):/返回值:無/出口參數(shù):無/破壞寄存器:無/=.PUBLIC _FlashErase_FlashErase:push r2 to spr2 = 0 xAAAAP_Flash_Cmd = r2/寫入控制命令r2 = 0 x5511 Sunplus Technology Co.,.PAGE 17V1.0 Mar 27, 2006P_Flash_Cmd = r2/寫入擦除命令r1 = r1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論