探索Adafruit FT232H Breakout:多功能串口協(xié)議擴展板的使用指南
在電子設(shè)計領(lǐng)域,我們常常希望計算機能夠直接與各種設(shè)備和傳感器進行通信,而Adafruit FT232H Breakout擴展板為我們實現(xiàn)這一目標(biāo)提供了一個強大且靈活的解決方案。下面將詳細(xì)介紹該擴展板的特點、組裝、配置及使用方法。
文件下載:2264.pdf
一、概述
Adafruit FT232H Breakout擴展板是一款功能強大的工具,它就像是計算機的一個“串口協(xié)議瑞士軍刀”。自2020年2月12日起,該擴展板進行了升級,采用了現(xiàn)代的USB C連接器,新增了I2C開關(guān)以便于I2C接口連接,還有3V電源輸出引腳(最大500mA)以及Stemma QT連接器,可實現(xiàn)即插即用連接各種Stemma QT或Qwiic設(shè)備、傳感器和顯示器,并且在尺寸、安裝孔和引腳排列上完全向后兼容。
FT232H芯片來自FTDI,與常見的USB轉(zhuǎn)串口轉(zhuǎn)換器芯片類似,但它增加了“多協(xié)議同步串行引擎”(MPSSE),能夠支持SPI、I2C、串行UART、JTAG等多種常見協(xié)議。此外,它還有幾個數(shù)字GPIO引腳,可用于讀取和寫入,實現(xiàn)諸如閃爍LED、讀取開關(guān)或按鈕等功能。
二、組裝與接線
1. 組裝
組裝FT232H Breakout擴展板需要將附帶的引腳頭焊接到擴展板上。如果你是焊接新手,建議先閱讀優(yōu)秀焊接指南并進行一些廢料練習(xí)。具體步驟如下:
- 修剪公引腳頭,使其長度與擴展板上的引腳孔相匹配,通常是兩排各10個引腳。
- 將引腳頭的長引腳插入面包板,使FT232H擴展板的引腳孔能夠完美穿過面包板頂部伸出的引腳頭。
- 使用烙鐵和焊錫,小心地將所有引腳焊接到FT232H擴展板上。
- 焊接完成后,將微型USB電纜插入FT232H擴展板的端口,再將電纜連接到計算機或筆記本電腦。如果擴展板上5V引腳旁邊的綠色LED亮起,說明組裝成功。
2. 接線
FT232H擴展板的引腳功能如下:
- 5V:這是直接連接到USB總線的5伏電源,不要從該引腳吸取超過400 - 500mA的電流,以免損壞計算機的USB端口。
- GND:這是FT232H擴展板的接地引腳。
- D0 - D7:這些是FT232H芯片上的ADBUS引腳,用于串行UART和其他串行協(xié)議,也可作為GPIO引腳用于數(shù)字輸入和輸出。
- C0 - C9:這些是FT232H芯片上的ACBUS引腳,主要用作GPIO引腳進行數(shù)字輸入和輸出。需要注意的是,C8和C9引腳不能通過軟件控制,只能通過更改芯片的EEPROM來分配功能。
三、串行UART使用
1. 基本功能
FT232H開箱即用,可作為FTDI的USB轉(zhuǎn)串行UART轉(zhuǎn)換器,適用于與Arduino等串行設(shè)備通信。它能安全處理3.3伏和5伏信號,可連接Arduino的5伏串行端口以及樹莓派或BeagleBone Black的3.3伏串行端口。
2. 引腳功能
- D0:TX或發(fā)送引腳,是FT232H芯片的串行數(shù)據(jù)輸出,應(yīng)連接到串行設(shè)備的RX或接收引腳。
- D1:RX或接收引腳,是FT232H芯片的串行數(shù)據(jù)輸入,應(yīng)連接到串行設(shè)備的TX或發(fā)送引腳。
- D2:RTS或準(zhǔn)備發(fā)送引腳,用于串行連接的流控制。
- D3:CTS或清除發(fā)送引腳,與RTS類似,用于流控制。
- D4:DTR或數(shù)據(jù)終端準(zhǔn)備好引腳,用于RS - 232串行連接的流控制。
- D5:DSR或數(shù)據(jù)集準(zhǔn)備好引腳,與DTR類似,用于RS - 232串行連接的流控制。
- D6:DCD或數(shù)據(jù)載波檢測引腳,有時用于RS - 232串行通信。
3. USB串行驅(qū)動程序安裝
大多數(shù)操作系統(tǒng)都包含F(xiàn)TDI的串行UART驅(qū)動程序,通常無需額外安裝。具體情況如下:
- Mac OSX Mavericks或更高版本:自動包含F(xiàn)TDI串行驅(qū)動程序。
- Linux內(nèi)核版本約2.6及以上:也包含F(xiàn)TDI串行驅(qū)動程序,如Ubuntu 12.04或14.04等現(xiàn)代Linux發(fā)行版無需安裝驅(qū)動。
- Windows:通??梢栽诰€自動搜索驅(qū)動程序,如果失敗,可以手動從FTDI網(wǎng)站下載并安裝。
4. 串行使用測試
安裝必要的串行端口驅(qū)動程序后,可以進行簡單的回環(huán)測試來確認(rèn)能夠通過UART讀寫數(shù)據(jù)。將D0(TX)引腳連接到D1(RX)引腳,使用串行控制臺輸入數(shù)據(jù),若輸入的數(shù)據(jù)能被立即回顯,則測試成功。不同操作系統(tǒng)的操作方法如下:
- Windows:可以使用PuTTY作為串行控制臺,配置連接類型為串行,設(shè)置串行線為設(shè)備管理器中找到的COM端口,速度設(shè)置為9600波特。
- Mac OSX:使用終端命令
ls /dev/tty.*列出所有串行端口,連接FT232H擴展板后再次運行該命令,找到新出現(xiàn)的設(shè)備,使用screen命令打開串行連接。 - Linux:使用
ls /dev/tty*命令列出串行設(shè)備,連接FT232H擴展板后找到新設(shè)備的路徑,使用screen命令打開串行端口。
四、Python設(shè)置與使用
1. MPSSE模式概述
MPSSE(多協(xié)議同步串行引擎)是FT232H芯片的核心,它允許芯片支持I2C、SPI等多種協(xié)議。在MPSSE模式下,D0 - D3引腳具有特殊的串行協(xié)議功能:
- D0:時鐘信號輸出,可配置為運行速度在約450Hz至30MHz之間的時鐘。
- D1:串行數(shù)據(jù)輸出,用于輸出串行信號,如SPI連接中的MOSI線。
- D2:串行數(shù)據(jù)輸入,用于讀取串行信號,如SPI連接中的MISO線。
- D3:串行選擇信號,用于告訴連接的設(shè)備FT232H準(zhǔn)備與之通信。
此外,MPSSE模式還允許將D4 - D7和C0 - C7共12個引腳作為通用數(shù)字輸入或輸出控制。
2. 軟件選項
使用MPSSE模式需要使用一些特殊的軟件和編程庫,以下是一些可選的軟件:
- FTDI的官方D2XX驅(qū)動程序和庫:由FTDI生產(chǎn),提供對FTDI芯片功能的底層訪問,有適用于Windows、Mac OSX和Linux的二進制版本。
- FTDI的LibMPSSE - I2C和LibMPSSE - SPI庫:基于D2XX驅(qū)動程序構(gòu)建,為與FT232H的MPSSE組件進行I2C和SPI通信提供更簡單的接口。
- libFTDI庫:開源庫,類似于D2XX庫,提供對FTDI芯片功能的底層接口,還有Python接口,使用起來相對簡單。
- libmpsse庫:基于libFTDI庫構(gòu)建,為使用MPSSE組件的I2C和SPI協(xié)議提供更簡單的接口,目前僅支持Mac OSX和Linux。
- Adafruit Python GPIO庫:為簡化FT232H的使用,該庫提供了一個簡單的接口,可通過Python編程語言訪問FT232H的GPIO、SPI和I2C功能,支持Windows、Mac OSX和Linux平臺。
3. 不同平臺的MPSSE設(shè)置
由于MPSSE相關(guān)內(nèi)容已被棄用,這里僅作歷史參考。在使用MPSSE模式時,串行UART模式將被禁用。不同平臺的設(shè)置步驟如下:
- Windows:需要使用Zadig工具將FT232H的FTDI驅(qū)動程序替換為基于libusb的驅(qū)動程序,下載并安裝libftdi二進制文件,最后安裝Adafruit Python GPIO庫。
- Mac OSX:需要安裝Xcode和Xcode命令行工具,安裝Homebrew包管理器,使用
brew命令安裝libftdi及其依賴項,下載并安裝Adafruit Python GPIO庫。 - Linux:在Debian/Ubuntu/Raspbian系統(tǒng)上,使用
apt - get命令安裝libftdi及其依賴項,下載并安裝Adafruit Python GPIO庫。
4. MPSSE使用示例
(1)GPIO使用
使用FT232H的GPIO引腳非常簡單,以下是一個閃爍LED和讀取數(shù)字輸入的示例:
- 連接硬件:將FT232H的C0引腳連接到LED的陽極,LED的陰極通過一個330 - 1000歐姆的電阻連接到FT232H的GND引腳;將FT232H的D7引腳連接到GND,通過將跳線在GND和5V之間切換來讀取D7輸入的高低值。
- 編寫Python代碼:創(chuàng)建一個名為
gpio_test.py的文件,代碼如下:import time import Adafruit_GPIO as GPIO import Adafruit_GPIO.FT232H as FT232H
FT232H.use_FT232H() ft232h = FT232H.FT232H() ft232h.setup(7, GPIO.IN) ft232h.setup(8, GPIO.OUT)
print 'Press Ctrl - C to quit.' while True: ft232h.output(8, GPIO.HIGH) time.sleep(1) ft232h.output(8, GPIO.LOW) level = ft232h.input(7) if level == GPIO.LOW: print 'Pin D7 is LOW!' else: print 'Pin D7 is HIGH!' time.sleep(1)
- 運行代碼:在Windows上運行`python gpio_test.py`,在Mac OSX或Linux上運行`sudo python gpio_test.py`,可以看到LED每秒閃爍一次,并打印D7輸入的狀態(tài)。
#### (2)SPI使用
FT232H的MPSSE非常適合使用SPI協(xié)議進行通信,以下是一個使用SPI協(xié)議發(fā)送和接收數(shù)據(jù)的示例:
```python
import Adafruit_GPIO.FT232H as FT232H
FT232H.use_FT232H()
ft232h = FT232H.FT232H()
spi = FT232H.SPI(ft232h, cs = 8, max_speed_hz = 3000000, mode = 0, bitorder = FT232H.MSBFIRST)
spi.write([0x01, 0x02, 0x03])
response = spi.read(3)
print 'Received {0}'.format(response)
response = spi.transfer([0x01, 0x02, 0x03])
print 'Received {0}'.format(response)
(3)驅(qū)動NeoPixels
使用SPI協(xié)議驅(qū)動WS2811/WS2812 NeoPixel可尋址RGB LED是一個有趣的應(yīng)用。通過使用6MHz的高速SPI信號對NeoPixel控制信號進行“過采樣”,可以從FT232H的D1(MOSI)線生成近似的控制信號。需要注意的是,這種方法一次最多只能點亮約340個像素。以下是一個驅(qū)動NeoPixels的示例代碼:
import time
import Adafruit_GPIO as GPIO
import Adafruit_GPIO.FT232H as FT232H
class NeoPixel_FT232H(object):
def __init__(self, n):
self.ft232h = FT232H.FT232H()
self.spi = FT232H.SPI(self.ft232h, max_speed_hz = 6000000)
self.buffer = bytearray(n * 24)
self.lookup = self.build_byte_lookup()
def build_byte_lookup(self):
lookup = {}
for i in range(256):
value = bytearray()
for j in range(7, -1, -1):
if ((i >> j) & 1) == 0:
value.append(0b11100000)
else:
value.append(0b11111000)
lookup[i] = value
return lookup
def set_pixel_color(self, n, r, g, b):
index = n * 24
self.buffer[index:index + 8] = self.lookup[int(g)]
self.buffer[index + 8:index + 16] = self.lookup[int(r)]
self.buffer[index + 16:index + 24] = self.lookup[int(b)]
def show(self):
self.spi.write(self.buffer)
if __name__ == '__main__':
pixel_count = 16
pixels = NeoPixel_FT232H(pixel_count)
for i in range(pixel_count):
pixels.set_pixel_color(i, 255, 0, 0)
pixels.show()
time.sleep(0.25)
for i in range(pixel_count):
pixels.set_pixel_color(i, 0, 255, 0)
pixels.show()
time.sleep(0.25)
for i in range(pixel_count):
pixels.set_pixel_color(i, 0, 0, 255)
pixels.show()
time.sleep(0.25)
colors = [(255, 0, 0), (255, 255, 0), (0, 255, 0), (0, 255, 255), (0, 0, 255), (255, 0, 255)]
offset = 0
print 'Press Ctrl - C to quit.'
while True:
for i in range(pixel_count):
color = colors[(i + offset) % len(colors)]
pixels.set_pixel_color(i, color[0], color[1], color[2])
pixels.show()
offset += 1
time.sleep(0.25)
(4)I2C使用
I2C協(xié)議是與傳感器和設(shè)備通信的另一種流行協(xié)議,F(xiàn)T232H的MPSSE組件可以實現(xiàn)I2C協(xié)議。使用I2C時,需要將D1和D2引腳用跳線連接在一起,形成I2C的SDA數(shù)據(jù)線,D0引腳作為I2C的SCL時鐘線,并添加4.7千歐姆的上拉電阻。以下是一個使用I2C的示例代碼:
import Adafruit_GPIO.FT232H as FT232H
FT232H.use_FT232H()
ft232h = FT232H.FT232H()
i2c = FT232H.I2CDevice(ft232h, 0x70)
response = i2c.readU16(0x01)
i2c.write8(0x02, 0xAB)
五、更多信息與資源
1. 參考資料
- 官方FT232H數(shù)據(jù)手冊:這是了解FT232H所有信息的參考資料,建議至少瀏覽一遍,以便全面了解芯片的功能。
- MPSSE命令參考:詳細(xì)介紹了控制FT232H芯片MPSSE組件的底層命令。
- FTDI實用工具:如FT PROG工具,可用于寫入FT232H擴展板的EEPROM并控制C8和C9引腳的功能,但該工具僅支持Windows。
- FTDI應(yīng)用筆記:在該頁面搜索FT232H或MPSSE,可找到許多使用FT232H與不同串行協(xié)議進行接口的有用應(yīng)用筆記。
- libftdi:開源庫,是FTDI二進制驅(qū)動程序的不錯替代方案,可用于與FT232H進行底層交互。
- libmpsse:用于訪問FT232H的MPSSE功能,是本指南中Python GPIO庫的替代方案。
- OpenOCD硬件:對于ARM芯片開發(fā),OpenOCD調(diào)試工具對于使用JTAG協(xié)議進行芯片調(diào)試非常有價值,具有MPSSE的FTDI芯片(如FT232H)甚至可以支持JTAG并與OpenOCD配合使用。
2. 擦除EEPROM以使用FT_PROG
如果要使用FTDI的FT_PROG編程工具,可能需要擦除FT232H的EEPROM。具體步驟如下:
- 連接FT232H板到計算機,使用Zadig工具啟用基于libusb的驅(qū)動程序。
- 下載libftdi Windows二進制文件,解壓后在命令行終端中運行
eeprom -e -p 0x6014 -v 0x0403命令擦除EEPROM。 - 卸載libusb驅(qū)動程序,重新插拔FT232
-
串口協(xié)議
+關(guān)注
關(guān)注
0文章
18瀏覽量
8461
發(fā)布評論請先 登錄
Adafruit DRV8833 DC/Stepper Motor Driver Breakout Board - 電子工程師的實用之選
Adafruit Silicon MEMS Microphone Breakout - SPW2430:小巧而強大的音頻利器
Adafruit FONA 3G Cellular + GPS Breakout:功能強大的一體化模塊
Adafruit FONA 3G Cellular + GPS Breakout 模塊深度解析
Adafruit FONA 808 Cellular + GPS Breakout:小身材大功能的物聯(lián)網(wǎng)利器
Adafruit TB6612 1.2A DC/Stepper Motor Driver Breakout Board使用指南
Adafruit MicroLipo 和 MiniLipo 電池充電器使用指南
Adafruit Si5351時鐘發(fā)生器開發(fā)板:設(shè)計與使用指南
探索Adafruit FONA MiniGSM:小巧模塊的強大功能
Adafruit AGC Electret Microphone Amplifier - MAX9814 評測與使用指南
Adafruit 1-Wire GPIO Breakout - DS2413 開發(fā)板使用指南
Adafruit MicroLipo和MiniLipo電池充電器使用指南
兼容FT232HL的高速USB串口芯片CH9111L
?STM32工業(yè)數(shù)字輸出擴展板X-NUCLEO-OUT05A1技術(shù)解析與應(yīng)用指南
STEVAL-IFP046V1工業(yè)數(shù)字輸出擴展板技術(shù)解析與應(yīng)用指南
探索Adafruit FT232H Breakout:多功能串口協(xié)議擴展板的使用指南
評論