本章,主要向大家簡要介紹我們的實驗平臺:ALIENTEK戰艦STM32開發板。通過本章的學習,你將對我們后面使用的實驗平臺有個大概了解,為后面的學習做鋪墊。 本章將分為如下兩節: 1.1,ALIENTEK戰艦STM32開發板資源初探; 1.2,ALIENTEK戰艦STM32開發板資源說明; 1.1 ALIENTEK戰艦STM32開發板資源初探 在ALIENTEK 戰艦STM32開發板之前,ALIENTEK推出過MiniSTM32開發板,在兩年的時間里面,售出8000多套,連續一年多穩居淘寶STM32開發板銷量之首。而這款戰艦STM32開發板,則是MiniSTM32開發板的超級加強版。下面我們開始介紹戰艦STM32開發板。 ALIENTEK戰艦STM32開發板的資源圖如圖1.1.1所示: 圖1.1.1 戰艦STM32 開發板資源圖 從圖1.1.1可以看出,ALIENTEK戰艦STM32開發板,資源十分豐富,并把STM32F103的內部資源發揮到了極致,基本所有STM32F103的內部資源,都可以在此開發板上驗證,同時擴充豐富的接口和功能模塊,整個開發板顯得十分大氣。 開發板的外形尺寸為11.2cm*15.6cm大小,板子的設計充分考慮了人性化設計,并結合廣大客戶對Mini板提出的改進意見,經過反復修改(在面市之前,硬件就改版了8次之多,目前最新版本為V2.0),最終確了定這樣的設計。 ALIENTEK戰艦STM32開發板板載資源如下: CPU:STM32F103ZET6,LQFP144,FLASH:512K,SRAM:64K; 外擴SRAM:IS62WV51216,1M字節 外擴SPI FLASH:W25Q64,8M字節 1個電源指示燈(藍色) 2個狀態指示燈(DS0:紅色,DS1:綠色) 1個紅外接收頭,并配備一款小巧的紅外遙控器 1個 EEPROM芯片,24C02,容量256字節 1個重力加速度傳感器芯片,ADXL345 1個高性能音頻編解碼芯片,VS1053 1個FM立體聲收發芯片,RDA5820 1個2.4G無線模塊接口(NRF24L01) 1路CAN接口,采用TJA1050芯片 1路485接口,采用SP3485芯片 1路RS232(串口)接口,采用SP3232芯片 1個PS/2接口,可外接鼠標、鍵盤 1個游戲手柄接口,可以直接插FC(紅白機)游戲手柄 1路數字溫濕度傳感器接口,支持DS18B20 /DHT11等 1個標準的2.4/2.8/3.5寸LCD接口,支持觸摸屏 1個攝像頭模塊接口 2個OLED模塊接口 1個USB串口,可用于程序下載和代碼調試(USMART調試) 1個USB SLAVE接口,用于USB通信 1個有源蜂鳴器 1個FM收發天線接口,并配天線 1個RS232/RS485選擇接口 1個CAN/USB選擇接口 1個串口選擇接口 1個SD卡接口(在板子背面,支持SPI/SDIO) 1個SD卡/網絡模塊選擇接口 1個標準的JTAG/SWD調試下載口 1個VS1053的IIS輸出接口 1個MIC/LINE IN選擇接口 1個錄音頭(MIC/咪頭) 1路立體聲音頻輸出接口 1路立體聲錄音輸入接口 1組多功能端口(DAC/ADC/PWM DAC/AUDIO IN/TPAD) 1組5V電源供應/接入口 1組3.3V電源供應/接入口 1個參考電壓設置接口 1個直流電源輸入接口(輸入電壓范圍:6~16V) 1個啟動模式選擇配置接口 1個RTC后備電池座,并帶電池 1個復位按鈕,可用于復位MCU和LCD 4個功能按鈕,其中WK_UP兼具喚醒功能 1個電容觸摸按鍵 1個電源開關,控制整個板的電源 獨創的一鍵下載功能 除晶振占用的IO口外,其余所有IO口全部引出 ALIENTEK戰艦STM32開發板的特點包括: 1) 接口豐富。板子提供十來種標準接口,可以方便的進行各種外設的實驗和開發。 2) 設計靈活。板上很多資源都可以靈活配置,以滿足不同條件下的使用。我們引出了除晶振占用的IO口外的所有IO口,可以極大的方便大家擴展及使用。另外板載一鍵下載功能,可避免頻繁設置B0、B1的麻煩,僅通過1根USB線即可實現STM32的開發。 3) 資源充足。外擴1M字節SRAM和8M字節FLASH,滿足大內存需求和大數據存儲。板載MP3和FM收發芯片,娛樂學習兩不誤。板載3D加速度傳感器和各種接口芯片,滿足各種應用需求。 4) 人性化設計。各個接口都有絲印標注,使用起來一目了然;接口位置設計安排合理,方便順手。資源搭配合理,物盡其用。 1.2 ALIENTEK戰艦STM32開發板資源說明 資源說明部分,我們將分為兩個部分說明:硬件資源說明和軟件資源說明。 1.2.1硬件資源說明 這里我們首先詳細介紹戰艦STM32開發板的各個部分(圖1.1.1中的標注部分)的硬件資源,我們將按逆時針的順序依次介紹。 W25Q64 64M FALSH 這是開發板外擴的SPI FLASH芯片,容量為64Mbit,也就是8M字節,可用于存儲字庫和其他用戶數據,滿足大容量數據存儲要求。當然如果覺得8M字節還不夠用,你可以把數據存放在外部SD卡。 IS62WV51216 8M SRAM 這是開發板外擴的SRAM芯片,容量為8M位,也就是1M字節,這樣,對大內存需求的應用(比如GUI),就可以很好的實現了。 SD卡/網絡模塊接口選擇接口 這里是一個由3拍排針(在板上標號[下同]為:P10、P11和P12)組成的復合接口,當不用網絡模塊的時候,這個組合就變成了SD卡的接口選擇接口,可以通過跳線帽選擇SDIO/SPI(我們默認是設置在SPI接口的)。但是,如果需要網絡模塊(網絡模塊接P12),那么SD卡就只能用SDIO模式了。 4. 引出IO口 這里是一組54個IO口的引出(P5),在它的右側不遠,是另外一組54個IO口的引出(P4),這兩組排針引出108個IO,而STM32F103ZET6總共只有112個IO,除去RTC晶振占用的2個IO,還剩下PA9和PA10沒有在這里引出(由P6引出)。 CAN/USB選擇接口 這是一個USB/CAN的選擇接口(P13),因為STM32的USB和CAN是共用一組IO(PA11和PA12),所以我們通過跳線帽來選擇不同的功能,以實現USB/CAN的實驗。 JTAG/SWD接口 這是ALIENTEK戰艦STM32開發板板載的20針標準JTAG調試口(JTAG),該JTAG口直接可以和ULINK、JLINK或者STLINK等調試器(仿真器)連接,同時由于STM32支持SWD調試,這個JTAG口也可以用SWD模式來連接。 用標準的JTAG調試,需要占用5個IO口,有些時候,可能造成IO口不夠用,而用SWD則只需要2個IO口,大大節約了IO數量,但他們達到的效果是一樣的,所以我們強烈建議你的仿真器使用SWD模式! USB串口/串口1 這是USB串口同STM32F103ZET6的串口1進行連接的接口(P6),標號RXD和TXD是USB轉串口的2個數據口(對CH340G來說),而PA9(TXD)和PA10(RXD)則是STM32的串口1的兩個數據口(復用功能下)。他們通過跳線帽對接,就可以和連接在一起了,從而實現STM32的程序下載以及串口通信。 設計成USB串口,是出于現在電腦上串口正在消失,尤其是筆記本,幾乎清一色的沒有串口。所以板載了USB串口可以方便大家下載代碼和調試。而在板子上并沒有直接連接在一起,則是出于使用方便的考慮。這樣設計,你可以把ALIENTEK戰艦STM32開發板當成一個USB串口,來和其他板子通信,而其他板子的串口,也可以方便地接到ALIENTEK戰艦STM32開發板上。 STM32F103ZET6 這是開發板的核心芯片(U5),型號為:STM32F103ZET6。該芯片具有64KB SRAM、512KB FLASH、2個基本定時器、4個通用定時器、2個高級定時器、2個DMA控制器(共12個通道)、3個SPI、2個IIC、5個串口、1個USB、1個CAN、3個12位ADC、1個12位DAC、1個SDIO接口、1個FSMC接口以及112個通用IO口。 STM32 USB口 這是開發板板載的一個MiniUSB頭(USB),用于STM32與電腦的USB通訊,通過此MiniUSB頭,開發板就可以和電腦進行USB通信了。開發板總共板載了2個MiniUSB頭,一個用于USB轉串口,連接CH340G芯片;另外一個用于STM32內帶的USB。 同時開發板可以通過此MiniUSB頭供電,板載兩個MiniUSB頭(不共用),主要是考慮了使用的方便性,以及可以給板子提供更大的電流(兩個USB都接上)這兩個因素。 10. 后備電池接口 這是STM32后備區域的供電接口,可以用來給STM32的后備區域提供能量,在外部電源斷電的時候,維持后備區域數據的存儲,以及RTC的運行。 USB轉串口 這是開發板板載的另外一個MiniUSB頭(USB_232),用于USB連接CH340G芯片,從而實現USB轉串口。同時,此MiniUSB接頭也是開發板電源的主要提供口。 OLED/攝像頭模塊接口 這是開發板板載的一個OLED/攝像頭模塊接口(P8),如果是OLED模塊,靠左插即可(右邊兩個孔位懸空)。如果是攝像頭模塊(ALIENTEK提供),則剛好插滿。通過這個接口,可以分別連接2個外部模塊,從而實現相關實驗。 13. 有源蜂鳴器 這是開發板的板載蜂鳴器(BEEP),可以實現簡單的報警/鬧鈴。讓開發板可以聽得見。 14. 紅外接收頭 這是開發板的紅外接收頭(U14),可以實現紅外遙控功能,通過這個接收頭,可以接受市面常見的各種遙控器的紅外信號,大家甚至可以自己實現萬能紅外解碼。當然,如果應用得當,該接收頭也可以用來傳輸數據。 戰艦STM32開發板給大家配備了一個小巧的紅外遙控器,該遙控器外觀如圖1.2.1.1所示: 圖 1.2.1.1 紅外遙控器 DS18B20/DHT11接口 這是開發板的一個復用接口(U13),該接口由4個鍍金排孔組成,可以用來接DS18B20/DS1820等數字溫度傳感器。也可以用來接DHT11這樣的數字溫濕度傳感器。實現一個接口,2個功能。不用的時候,大家可以拆下上面的傳感器,放到其他地方去用,使用上是十分方便靈活的。 2個LED燈 這是開發板板載的兩個LED燈(DS0和DS1),DS0是紅色的,DS1是綠色的,主要是方便大家識別。這里提醒大家不要停留在51跑馬燈的思維,搞這么多燈,除了浪費IO口,實在是想不出其他什么優點。 我們一般的應用2個LED足夠了,在調試代碼的時候,使用LED來指示程序狀態,是非常不錯的一個輔助調試方法。戰艦STM32開發板幾乎每個實例都使用了LED來指示程序的運行狀態。 3. 啟動選擇端口 這是開發板板載的啟動模式選擇端口(BOOT),STM32有BOOT0(B0)和BOOT1(B1)兩個啟動選擇引腳,用于選擇復位后STM32的啟動模式,作為開發板,這兩個是必須的。在開發板上,我們通過跳線帽選擇STM32的啟動模式。關于啟動模式的說明,請看2.1.8小節。 4. 復位按鈕 這是開發板板載的復位按鍵(RESET),用于復位STM32,還具有復位液晶的功能,因為液晶模塊的復位引腳和STM32的復位引腳是連接在一起的,當按下該鍵的時候,STM32和液晶一并被復位。 5. 參考電壓選擇端口 這是STM32的參考電壓選擇端口(P7),我們默認是接開發板的3.3V和GND。如果大家想設置其他參考電壓,只需要把你的參考電壓源接到REF-和REF+上即可。 WK_UP及3個普通按鈕 這是開發板板載的4個機械式輸入按鍵(KEY0、KEY1、KEY2和WK_UP),其中WK_UP具有喚醒功能,該按鍵連接到STM32的WAKE_UP(PA0)引腳,可用于待機模式下的喚醒,在不使用喚醒功能的時候,也可以做為普通按鍵輸入使用。 其他3個是普通按鍵,可以用于人機交互的輸入,這3個按鍵是直接連接在STM32的IO口上的。這里注意WK_UP是高電平有效,而KEY0、KEY1和KEY2是低電平有效,大家在使用的時候留意一下。 7. 觸摸按鈕 這是開發板板載的一個電容觸摸輸入按鍵(TPAD),用于實現觸摸按鍵。現在觸摸按鍵非常流行,所以我們在開發板上也設計了一個,咱得跟上時代的步伐。 8. 電源指示燈 這是開發板板載的一顆藍色的LED燈(PWR),用于指示電源狀態。在電源開啟的時候(通過板上的電源開關控制),該燈會亮,否則不亮。通過這個LED,可以判斷開發板的上電情況。 9. 多功能端口 這里大家可別小看這6個排針,這可是本開發板設計的很巧妙的一個端口(由P3和P14組成),這組端口通過組合可以實現的功能有:ADC采集、DAC輸出、PWM DAC輸出、外部音頻輸入、電容觸摸按鍵、DAC音頻、PWM DAC音頻、DAC ADC自測等,所有這些,你只需要1個跳線帽的設置,就可以逐一實現。 MIC(咪頭) 這是開發板的板載錄音輸入口(MIC),該咪頭直接接到VS1053的輸入上,可以用來實現錄音功能。 11. 錄音輸入接口 這 是開發板板載的外部錄音輸入接口(LINE_IN),通過咪頭我們只能實現單聲道的錄音,而通過這個LINE_IN,我們可以實現立體聲錄音。 MIC選擇口 這是開發板板載錄音的接入選擇口(P2),如果使用LINE_IN錄音的時候,我們把P2斷開,以排除來自咪頭的干擾信號,從而可以更好的立體聲錄音。而使用咪頭錄音的時候,我們短接P2即可。 13. 耳機輸出接口 這是開發板板載的音頻輸出接口(PHONE),戰艦STM32開發板有多個音頻輸出(VS1053/收音機/PWM DAC等),通過74HC4052實現音頻選擇,輸入到TDA1308,再輸出到該音頻輸出口,實現開發板的音頻輸出。 VS1053 IIS輸出口 這是VS1053的IIS輸出接口(P1),該接口可以用來連接外部DAC,實現更好的音質輸出。其實我覺得VS1053本身的音頻DAC已經很好了。這個接口適合發燒友使用。 5V電源輸入/輸出 這是開發板板載的一組5V電源輸入輸出排針(2*3)(VOUT2),用于給外部提供5V的電源,也可以用于從外部取5V的電源給板子供電。 大家在實驗的時候可能經常會為沒有5V電源而苦惱不已,有了ALIENTEK戰艦STM32開發板,你就可以很方便的擁有一個簡單的5V電源(最大電流不能超過500ma)。 3.3V電源輸入/輸出 這是開發板板載的一組3.3V電源輸入輸出排針(2*3)(VOUT1),該排針用于給外部提供3.3V的電源,也可以用于從外部取3.3V的電源給板子供電。 同樣大家在實驗的時候可能經常會為沒有3.3V電源而苦惱不已,ALIENTEK充分考慮到了大家需求,有了這組3.3V排針,你就可以很方便的擁有一個簡單的3.3V電源(最大電流不能超過500ma)。 ADXL345加速度傳感器 這是開發板板載的一個3軸加速度傳感器(U11),ADXL345分辨率高(13位),測量范圍大(±16g),可以通過SPI/IIC訪問,戰艦開發板采用IIC訪問它。有了這個,大家就可以實現一些比較有意思的應用(比如測量傾角等) 18. 電源開關 這是開發板板載的電源開關(K1)。該開關用于控制整個開發板的供電,如果切斷,則整個開發板都將斷電,電源指示燈(PWR)會隨著此開關的狀態而亮滅。 DC6~16V電源輸入 這是開發板板載的一個外部電源輸入口(DC_IN),采用標準的直流電源插座。開發板板載了DC-DC芯片(MP2359),用于給開發板提供高效、穩定的5V電源。由于采用了DC-DC芯片,所以開發板的供電范圍十分寬,大家可以很方便的找到合適的的電源(只要輸出范圍在DC6~16V的基本都可以)來給開發板供電。特別注意:如果你使用的是戰艦V2.0以前的版本,輸入電壓建議不要超過9V!切記不能超過12V!戰艦V2.0及以后的版本才支持DC6~16V的寬輸入范圍。 FM收發天線接口 這個是開發板板載FM收發芯片的天線接口(ANT),同時我們安裝有天線在這個上面。通過這個天線,可以很好的實現FM收音和FM發射。 RS485總線接口 這是開發板板載的RS485總線接口(RS485),通過3個端口和外部485設備連接。一 般情況下,只需要連接2個端口即可,即A和B,并不需要連接GND。這里提醒大家,RS485通信的時候,必須A接A,B接B。否則可能通信不正常! RS232/485選擇接口 這是開發板板載的RS232/485選擇接口(P9),因為RS485基本上就是一個半雙工的串口,為了節約IO,我們把RS232和RS485共用一個串口,通過P9來設置當前是使用RS232還是RS485。當然,這樣的設計還有一個好處。就是我們的開發板既可以充當RS232到TTL串口的轉換,又可以充當RS485到TTL485的轉換。(注意,這里的TTL高電平是3.3V) RS232接口 這是開發板板載的RS232接口(COM),通過一個標準的DB9母頭和外部的串口連接。通過這個接口,我們可以連接帶有串口的電腦或者其他設備,實現串口通信。 24C02 EEPROM 這是開發板板載的EEPROM芯片(U15),容量為2Kb,也就是256字節。用于存儲一些掉電不能丟失的重要數據,比如系統設置的一些參數/觸摸屏校準數據等。有了這個就可以方便的實現掉電數據保存。 PS/2鼠標/鍵盤接口 這是開發板板載的一個標準PS/2母頭(PS/2),用于連接電腦鼠標和鍵盤等PS/2設備。 通過PS/2口,我們僅僅需要2個IO口,就可以擴展一個鍵盤,所以大家不必要對板上只有4個按鍵而感到擔憂。ALIENTEK提供了標準的鼠標驅動例程,方便大家學習PS/2協議。 26. 游戲手柄接口 這是開發板板載的一個9針游戲手柄接口(JOY_PAD),可以用來連接FC手柄(紅白機/小霸王游戲機手柄),這樣大家可以在開發板上編寫游戲程序,直接通過手柄玩游戲了。我們的綜合實驗提供有一個簡單的NES模擬器,大家可以直接從網上下載nes游戲,放到開發板上玩。 LCD/OLED模塊接口 這是戰艦STM32開發板的又一個特色設計,一個接口,兼容多種模塊。如果是OLED模塊,請靠左側插。如果是LCD模塊,則靠右側插。OLED模塊支持ALIENTEK的單色/雙色OLED模塊。LCD模塊則支持ALIENTEK的2.4/2.8/3.5寸LCD模塊,并且支持觸摸屏功能。 CAN總線接口 這是開發板板載的CAN總線接口(CAN),通過3個端口和外部CAN總線連接。一般情況下,只需要連接2個端口即可,即CANH和CANL,并不需要連接GND。這里提醒大家,CAN通信的時候,必須CANH接CANH,CANL接CANL。否則可能通信不正常! NRF24L01模塊接口 這是開發板板載的NRF24L01模塊接口(U7),只要插入模塊,我們便可以實現無線通信,從而使得我們板子具備了無線功能,但是這里需要2個模塊和2個開發板同時工作才可以。如果只有1個開發板或1個模塊,是沒法實現無線通信的。 1.2.2軟件資源說明 上面我們詳細介紹了ALIENTEK戰艦STM32開發板的硬件資源。接下來,我們將向大家簡要介紹一下戰艦STM32開發板的軟件資源。 戰艦STM32開發板提供的標準例程多達57個,一般的STM32開發板僅提供庫函數代碼,而我們則提供寄存器和庫函數兩個版本的代碼(本指南以寄存器版本作為介紹)。我們提供的這些例程,基本都是原創,擁有非常詳細的注釋,代碼風格統一、循序漸進,非常適合初學者入門。而其他開發板的例程,大都是來自ST庫函數的直接修改,注釋也比較少,對初學者來說不那么容易入門。 戰艦STM32開發板的例程列表如表1.2.2.1所示: 表1.2.2.1 ALIENTEK戰艦STM32開發板例程表 從上表可以看出,ALIENTEK戰艦STM32開發板的例程基本上涵蓋了STM32F103ZET6的所有內部資源,并且外擴展了很多有價值的例程,比如:FLASH模擬EEPROM實驗、IAP實驗、拼音輸入法實驗、手寫識別實驗、綜合實驗等。 而且從上表可以看出,例程安排是循序漸進的,首先從最基礎的跑馬燈開始,然后一步步深入,從簡單到復雜,有利于大家的學習和掌握。所以,ALIENTEK戰艦STM32開發板是非常適合初學者的。當然,對于想深入了解STM32內部資源的朋友,ALIENTEK戰艦STM32開發板也絕對是一個不錯的選擇。 這里特別說明一下戰艦系統綜合實驗,這個實驗使得ALIENTEK戰艦STM32開發板更像一個產品,而不單單是一個開發板了,它擁有目前市面上所有開發板中最復雜,最強大的功能,可玩性極高,它的實現,充分向大家展示了ALIENTEK戰艦開發板的優勢,同時也證明了STM32的強悍性能。解決了一部分人,STM32能干啥的顧慮。 |