<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                * 導師視頻講解:[**去聽課**](https://www.bilibili.com/video/BV1k34y1D7Vz?p=20) >[success] **技術支持說明:** >**1**.一般以自主學習為主 > **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee) > **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> ## **硬件準備** 本節課需要用到NOR Flash存儲器 * ZigBee標準板帶有NOR Flash存儲器,如圖所示。 ![](https://img.kancloud.cn/15/b8/15b8ba93a495ed85be5a411d479adbf1_709x852.png =250x) ### * 由于ZigBee MiNi板默認無NOR Flash存儲器,無標準板的讀者可以跳過本節課 <br/> ## **Flash存儲器簡介** Flash存儲器可以用于保存信息,例如系統配置信息、資料文檔等,用途用非常廣泛。 ### 按照內部存儲結構不同,Flash存儲器可分為NOR Flash和NAND Flash兩種類型。 <br/> ### **NOR Flash** NOR Flash存儲器的讀取速度快、存儲可靠性高、支持使用隨機地址訪問存儲空間支持,但是存儲容量小、價格貴,多用于保存電子產品的程序。 ### ### **NAND Flash** 相對于NOR Flash,**NAND Flash**存儲器的容量大、可反復讀寫次數高和價格便宜,但是讀取數據速度慢、不支持隨機地址訪問存儲空間,有點類似于光盤或硬盤,多用于存儲卡、U盤中。 <br/> ## **M25PE80簡介** &emsp;&emsp;ZigBee標準板中帶有一顆M25PE80芯片,這是一款NOR Flash,其容量是1024KB(8M bit)。另外,CC2530F256的內部也帶有Flash存儲器,其容量是256KB。也就是說,標準板上共有1024KB+256KB的Flash容量。 * M25PE80實物圖: ![](https://img.kancloud.cn/61/51/6151c23deb2673139fb03bd6baa0af7e_218x280.png =100x) ### * M25PE80引腳圖: ![](https://img.kancloud.cn/a6/a9/a6a94f42c0585c926fbd8f3e1616da6e_274x186.png =200x) <br/> ## **了解 M25PE80 API** M25PE80的通信協議是SPI。在學習顯示器的實驗時,已經講解過SPI驅動API的設計方式了,**只需要基于通用SPI驅動API適配出M25PE80的專用SPI驅動API即可**。 ### 打開配套工程代碼,展開Hal\_Flash\_Spi,可以看到筆者設計的通用SPI驅動API和M25Exx驅動專用的SPI驅動API,如圖所示。 ### ![](https://img.kancloud.cn/5c/c9/5cc9a44a4c2e185a935d497c0b3a4dab_406x526.png =300x) ### 借助此API,M25PE80的使用非常簡單,只需要學習一下hal\_m25pexx.h/c文件中的3個API即可,其定義如下: ``` /** * @fn halM25PExxInit * * @brief 初始化M25PExx * * @return none */ void halM25PExxInit(void); /** * @fn halM25PExxRead * * @brief 從M25PExx中讀取數據 * * @param addr - 將要讀取的數據所在的存儲器地址. * @param pBuf - 變量指針,用于保存儲器中讀出來的數據. * @param len - 指定從存儲器中讀取多少個字節的數據. * * @return 如果讀取成功,則返回0 */ int halM25PExxRead(uint32 addr, uint8 *pBuf, uint16 len); /** * @fn halM25PExxWrite * * @brief 把數據寫入到存儲器中 * * @param addr - 說明把數據寫入到存儲器的哪個地址 * @param pBuf - 變量指針,指向將要寫入到存儲器的數據 * @param len - 指定把多少個字節的數據寫入到存儲器中 * * @return 如果寫入成功,則返回0 */ int halM25PExxWrite(uint32 addr, uint8 *pBuf, uint16 len); ``` <br/> ## **使用 M25PE80 API** 打開main.c文件,可以使用 M25PE80 API讀寫數據的示例代碼: ``` void main(void) { uint8 writeVal = 0;//此變量的值將會被寫入到存儲器中 uint8 readVal = 0;//從存儲器讀取到的值將會存入此變量中 char str[50]; setSystemClk32MHZ();//初始化系統時鐘為32MHz initUart0(USART_BAUDRATE_115200);//初始化串口0 halM25PExxInit();//初始化M25PE80存儲器 //進入到循環中 while(1) { /* 1.寫數據到M25PE80存儲器中 */ //串口通信 sprintf(str, "Write: %d\r\n", writeVal); uart0Send((unsigned char *)str, strlen(str)); //把writeVal的值寫入到存儲器中地址為0x12345的存儲空間中;由于writeVal的類型為uint8,也就1個字節,所以傳入的數據長度為1 if (halM25PExxWrite(0x12345, &writeVal, 1) != 0) { uart0Send("Write Error\r\n", 13);//如果函數返回值不等于0,表示寫入錯誤 continue; } writeVal++;//把寫入值增加1 delayMs(SYSCLK_32MHZ, 1000);//延遲 /* 2.從M25PE80存儲器中讀取數據 */ //從halM25PExxRead的0x12345處讀取1個字節的數據,并將其保存到readVal中 if (halM25PExxRead(0x12345, &readVal, 1) != 0) { uart0Send("Read Error\r\n", 12);//如果函數返回值不等于0,表示讀取錯誤 continue; } //串口通信 sprintf(str, "Read: %d\r\n", readVal); uart0Send((uint8 *)str, strlen(str)); delayMs(SYSCLK_32MHZ, 1000);//延遲 } } ``` <br/> ### **調試仿真** >[danger] 在學習本節課前,需要先掌握基本的程序下載及仿真操作,參考:[程序下載及仿真](2482302) 1.使用仿真器連接ZigBee標準板到電腦中, 2.按一下仿真器中的復位按鍵 3.打開配套工程,編譯源代碼并燒錄程序到ZigBee標準板中 4.斷開仿真器連接,用Micro USB線連接開發板到電腦,并且打開串口調試助手,可以看到寫入和讀取的過程: ![](https://img.kancloud.cn/74/94/7494aff79da543dc4974c6129bb33307_830x654.png =600x) <br/> <br/> ## **項目定制** * 如需項目定制開發,可掃碼添加項目經理好友(注明“**項目定制**”) * 定制范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技術方案 * 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非項目定制**勿擾**,此處**非**技術支持
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看