<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=17) >[success] **技術支持說明:** >**1**.一般以自主學習為主 > **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee) > **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> 本章主要講解如何基于CC2530實現ADC。 <br/> ## **5.1 ADC理論基礎** * **5.1.1 模擬信號** 模擬信號是指用連續變化的物理量所表達的信息,特點是信號值的變化是連續的,如圖所示。 ![](https://img.kancloud.cn/06/7c/067c81d5ce86a7e042f7b19e2e5bf631_900x572.png =250x) ### * **5.1.2 數字信號** 數字信號是指用一系列斷續變化的脈沖數字量所表達的信息,特點是信號值會特然變化,如圖所示。 ![](https://img.kancloud.cn/77/ba/77baea26eb7fef7ae74d0f7a0c7ada1d_570x362.png =250x) ### * **5.1.3 ADC** ADC的全稱是Analog to Digital Converter,即模擬數字轉換器用于把模擬信號轉換為數字信號。舉個例子,例如圖中的黑色線為一個模擬信號,ADC可以通過特定的規則或者算法將其轉換為階梯狀的數字信號。 ![](https://img.kancloud.cn/82/dd/82dda980e847cb38d0d6b90487c2ea90_562x326.png =400x) <br/> ## **5.2 CC2530的ADC采樣通道** CC2530內置多個ADC采樣通道,例如AIN0~AIN7、VDD/3、溫度傳感器等,如圖所示。 ![](https://img.kancloud.cn/0c/fb/0cfb436edde2ce7d7fc9770791655a0b_830x330.png =600x) ### 其中的ADC采樣通道AIN0 - AIN7對應的是P0\_0到P0\_7這8個GPIO,即模擬信號可以通過這個8個GPIO輸入給CC2530。 <br/> ## **5.3 ADC API 說明** 打開本實驗代碼,可以找到hal\_adc.h和hal\_adc.c文件,如圖所示。 ![](https://img.kancloud.cn/6d/ec/6dec966d28a0bac186a8a35c8aee9500_453x304.png =300x) ### 這兩個文件是Z-Stack 3.0 提供給開發者使用的ADC驅動API,使用起來非常方便。 >[warning] 然而,為了便于初學者學習,筆者對該API做了少量的修改。 ### 打開hal\_adc.h文件,可以找到如下API定義: ``` //2. 51單片機入門/5. ADC實驗/Workspace/code/HalADC/hal_adc.h /* * 使用默認的配置初始化ADC服務,使用ADC服務前必須先調用此API */ extern void HalAdcInit ( void ); /* * A/D轉換,即使用指定的采樣精度從指定的ADC通道中獲取采樣值 * * @param channel - ADC通道 * @param resolution - 采用分辨率 */ extern uint16 HalAdcRead ( uint8 channel, uint8 resolution ); ``` ### HalAdcRead函數需要傳入一個channel參數,該參數表示ADC采樣通道。采樣通道定義代碼如下: ``` //2. 51單片機入門/5. ADC實驗/Workspace/code/HalADC/hal_adc.h #define HAL_ADC_CHN_AIN0 0x00 /* AIN0 */ #define HAL_ADC_CHN_AIN1 0x01 /* AIN1 */ #define HAL_ADC_CHN_AIN2 0x02 /* AIN2 */ #define HAL_ADC_CHN_AIN3 0x03 /* AIN3 */ #define HAL_ADC_CHN_AIN4 0x04 /* AIN4 */ #define HAL_ADC_CHN_AIN5 0x05 /* AIN5 */ #define HAL_ADC_CHN_AIN6 0x06 /* AIN6 */ #define HAL_ADC_CHN_AIN7 0x07 /* AIN7 */ ``` ### HalAdcRead函數還需要傳入一個用于表示采樣分辨率的參數resolution,其定義代碼如下: ``` //2. 51單片機入門/5. ADC實驗/Workspace/code/HalADC/hal_adc.h #define HAL_ADC_RESOLUTION_8 0x01 #define HAL_ADC_RESOLUTION_10 0x02 #define HAL_ADC_RESOLUTION_12 0x03 #define HAL_ADC_RESOLUTION_14 0x04 ``` CC2530提供了8位、10位、12位和14位的模數轉換采樣分辨率可供開發者使用。舉個例子講解一下采樣分辨率的含義,例如ZigBee標準板板載的光敏電阻(光照傳感器)可以根據不同的光照強度來輸出不同的電壓,光照強度越高輸出的電壓越大,反之越小。其輸出電壓值范圍是0~1.65v,這是一個模擬信號值。如果此時的采樣分辨率為8位,那么CC2530會用1個字節(8個位)的整型變量來存儲采樣值,CC2530會把0~3.3v的電壓值映射到[0,255]中,把0~1.65v映射到[0,127]中,從而得到采樣值,例如當光敏電阻受光照影響時,如果: (1)ADC捕獲到的電壓值約為1.65v,那么采樣值為127左右。 (2)ADC捕獲到的電壓值約為0v,那么采樣值為0左右。 (3)ADC捕獲到的電壓值約為0.825v,那么采樣值為63左右。 ### 如果以8位采樣分辨率讀取P0\_7的采樣值,可按如下方式編寫代碼: ``` P1SEL?|=?0x80;//把P0_7配置為使用外設功能模式 uint8?Val;//采樣信號值 Val?=?HalAdcRead( HAL_ADC_CHN_AIN7,//采樣通道 HAL_ADC_RESOLUTION_8);//采樣分辨率 ``` <br/> ## **5.4 ADC采樣實驗** 由于在配套的ZigBee標準板中,光照傳感器與CC2530的P0\_7引腳連接,因此本實驗把P0_7配置為輸入模式,然后以8位分辨率讀取ADC通道AIN7的采樣值,代碼如下: ``` //2. 51單片機入門/5. ADC實驗/Workspace/code/HalADC/HalADC.c void main(void) { uint8_t adcVal;//采樣值 char adcStr[10] = {0}; setSystemClk32MHZ(); initUart0(USART_BAUDRATE_115200); CC2530_IOCTL( 0, 7,//采樣通道AIN7對應P0_7 CC2530_INPUT_PULLUP);//配置為上拉輸入 HalAdcInit();//初始化ADC服務 while(1) { /*ADC采樣*/ adcVal = HalAdcRead( HAL_ADC_CHN_AIN7,//采樣通道AIN7對應P0_7 HAL_ADC_RESOLUTION_8);//采樣分辨率為8位 /*通過串口0輸出采樣值*/ sprintf(adcStr, "%d\r\n", adcVal); uart0Send((unsigned char *)adcStr, strlen(adcStr)); delayMs(SYSCLK_32MHZ, 2000);//延遲2s } } ``` 上述代碼實現了隔2s從AIN7中采樣一次,ADC就這樣簡單地被實現了。讀者也可根據實際需要修改采樣時間間隔。 <br/> ## **5.5 調試仿真** 可以運行本實驗代碼以觀察運行結果,操作步驟如下: (1)編譯鏈接本實驗代碼后,把程序燒錄到配套的ZigBee開發板中。 (2)由于本實驗需要用到光照傳感器和串口0,因此如果使用ZigBee標準板調試,需要把撥碼開關的第1和2位分別打到URX和UTX端,第3、4、5和6位分別打到ERX、ETX、P02和P03端,第7位打到ADC端。 ![](https://img.kancloud.cn/ca/b3/cab3d6761be90db52a86f44ef94ede55_710x866.png =300x) 如果使用ZigBee Mini板調試,需要在P0_7引腳處外接光照傳感器,此光照傳感器的輸出信號作為系統輸入的模擬信號。 (3)使用Micro USB線把ZigBee開發板連接到電腦。 (4)打開串口調試助手,按如圖所示對串口調試助手做好相關設置。 ![](https://img.kancloud.cn/c9/ff/c9ff1ea94b0dab2b2c003424780ee096_550x1222.png =150x) ### (5)配置完成后,可以在串口助手中觀察到采樣值,此值可以理解為光照傳感器所感知到的環境光照度,它會隨光照度變化而變化。 ![](https://img.kancloud.cn/f8/62/f8622498bfba2faff343f3da41865448_692x588.png =500x) <br/> <br/> ## **商務合作** 如有以下需求,可掃碼添加管理員好友(注明“**商務合作**”) * 項目定制開發,技術范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等; * 入駐平臺,成為講師; * 接項目賺外快; * 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =150x) (非商務合作**勿擾**,此處**非**技術支持)
                  <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>

                              哎呀哎呀视频在线观看