如何實現W7100A程式燒錄

2021-06-08 08:57:43 字數 1713 閱讀 9802

1.簡介

w7100a的**儲存器內部具有啟動rom(boot rom)和快閃儲存器(flash memory)。啟動rom通過isp函式自動驅動w7100a,因此使用者不能修改啟動rom中的**。但是,快閃儲存器仍然可以作為**儲存器使用。

當系統復位時,w7100a自動執行啟動rom的啟動**。這之後的過程根據booten引腳的不同而有所差異。這篇手冊將會介紹如何將**燒錄到快閃儲存器。

下面為詳細的執行過程:

如上圖1所示,在復位後,根據w7100a的booten引腳設定,會有兩種不同的執行方法。第一種方法是通過將booten引腳置為1來使用啟動rom中的isp功能。另外一種方法是通過將booten引腳置為0,不需要使用啟動rom直接跳轉到快閃儲存器。

2. isp模式

當booten引腳被置為1時,w7100a的狀態為isp模式,使用者可以使用wiznet的isp程式。在這種模式下,通過isp程式對**快閃儲存器和資料快閃儲存器進行寫入(write)和讀取(read)操作。更多的詳細資訊,請參閱『wizisp程式使用者指南』。

按照路徑『options for target 『project name』』 => 『lx51 locate』 => 『user classes』在工程才中鍵入段落符號『code_isp(c:0x0800)』。然後將下面的**插入function()函式中,function()函式內包括呼叫isp函式。使用者可以根據編譯器的不同改變該過程。

如果w7100a通過快閃儲存器**執行,w7100a將會完成儲存器對映轉換,如圖3『**快閃儲存器狀態』,同時啟動rom會被禁止。因此,要使用啟動rom內的isp函式,必須將儲存器圖轉換回來以重新啟用啟動rom(boot rom)。使用者還必須將wconf(0xff)暫存器的ispen位置設為『0』,這樣啟動rom(boot rom)才能被啟用。然後,使用者可以呼叫已定義的isp函式,與ispid一樣,在快閃儲存器中擦除或者寫入資料。

如下是使用isp函式的基本示例。

注意: 在這一章,所有的示例**都是基於『keil uvision3』編譯器。

『do_isp』函式利用isp_id、isp_addr和isp_data來執行isp函式。

使用者必須確保上面的isp函式執行過程中沒有其它中斷發生。首先,將ispen設定為『0』啟用啟動rom(boot rom)和isp entry。其次,將相應的ispaddr和ispdata寫入已定義的ispid中。然後,通過呼叫isp entry來執行啟動rom(boot rom)中的isp函式。如果isp entry被呼叫,isp函式將會相應於使用者已經設定的ispid來執行。當ispid執行完成後,isp entry將會自動返回到isp函式被呼叫的路徑。在返回之後,如果使用者將ispen位置設為『1』,處於啟用狀態的啟動rom和isp entry將會失效。然後,快閃儲存器可以完全再次作為**儲存器使用。最後,返回所有的中斷設定為初始狀態,完成整個過程。

如下是根據每乙個命令定義的ispid。

因為『isp_chip_erase()命令』能擦除整個快閃儲存器資料,並且也可以擦除執行**,執行**在返回到快閃儲存器後將執行,所以除了isp程式外不要使用『isp_chip_erase()命令』。

使用上面的命令,擦除從0x00到1區(sector)的值、寫入0xaa的值並且在0x00中讀,**示例如下:

用於資料快閃儲存器(data flash)的示例**如下所示,描述了使用者可以擦除1區(sector)並且在1區寫入0x00~0xff的值。因為w7100a的資料快閃儲存器(data flash)具有256位元組(1區),不需要ram結束位址用於isp_data_sector_prog 或者isp_data_sector_read。

如何實現W7100A中的UART

簡介 這篇文件主要介紹了在w7100a中使用uart通訊的基本示例程式。所有的這些示例 都是基於c語言和keil編譯器完成的。詳情請參考w7100a資料手冊 第6章uart 中關於 uart 暫存器 中斷等等。圖表1為設定uart波特率所用到的各個暫存器。定時器1 timer1 相關的暫存器是smo...

W7100A與W7100的差別

w7100a是w7100的公升級版本。主要差別如下 使用w7100的使用者如果要將軟體移植到w7100a中,必須注意以下幾點 1.如果gpio沒有額外的上 下拉電阻的電路,w7100a的gpio口必須在設定上下拉電阻暫存器後才能使用。當啟動w7100a時,如使用者需使用gpio口來獲得0 3.3v的...

如何實現W7100A中的UART 二

如何實現w7100a中的uart第一部分請參考 4.2,9位uart,固定波特率 void init imcu void void putbyte unsigned char bydata unsigned char getbyte void void main 波特率的uart模式2是固定內部時鐘...