可編程 USB 轉(zhuǎn)串口適配器開發(fā)板 USB 轉(zhuǎn) UART I2C 應用
可編程USB轉(zhuǎn) UART/I2C /SMBusS/SPI/CAN/1 -Wire適配器USB2S? ?USB 轉(zhuǎn) UART 應用?
1.1驅(qū)動安裝?
USB2S 內(nèi)置了 USB 轉(zhuǎn)UART 芯片,可使用CH340/CH341 驅(qū)動程序。驅(qū)動安裝步驟如下: 雙擊運行“CH341SER\SETUP.exe”,打開驅(qū)動安裝窗口。?
點擊【安裝】按鈕,稍后會提示“驅(qū)動安裝成功”。如下圖示。?
驅(qū)動安裝成功后,若將 USB2S 插入計算機 USB 接口,在“設(shè)備管理器”中會發(fā)現(xiàn)新的 COM 接口, 如下圖示。?
1.2 USB 轉(zhuǎn)UART 原理
驅(qū)動程序安裝后,計算機通過 COMx 與 MCU 進行通訊,當 USB2S 的 UART 透明傳輸功能為開啟狀態(tài)時(默認),MCU 可將 UART1 與UART2 的雙向數(shù)據(jù)進行透明轉(zhuǎn)發(fā),即:實現(xiàn)了計算機的COMx 端口與 USB2S 的對外 UART2 端口的雙向數(shù)據(jù)傳輸。工作原理示意圖如下:?
上面的方法是通過 MCU 固件程序?qū)崿F(xiàn)UART1 與 UART2 之間數(shù)據(jù)透明傳輸。?
下面的連接方法可實現(xiàn)真正的 USB 轉(zhuǎn) UART 功能,方法是通過跳線禁用 MCU,外部UART 設(shè)備直接連接到 UART1 接口。
對于絕大部分應用,第一種連接方法即可。
可編程USB轉(zhuǎn) UART/I2C /SMBusS/SPI/CAN/1 -Wire適配器USB2S? ?UART 轉(zhuǎn) I2C 應用?
1.1 AT24CxxEEPROM 芯片?
1.1.1 芯片介紹?
AT24Cxx 是可擦寫 EEPROM 存儲芯片,xx 表示容量,單位為 Kbits。USB2S 板上已有 1 片 AT24Cxx
(默認為 AT24C02),設(shè)備地址為 0xA0。?
通過 AT24Cxx 的數(shù)據(jù)手冊可知,讀寫時序如下: 寫時序:?
(1) 向 IIC 總線發(fā)送開始信號?
(2) 向 IIC 總線發(fā)送芯片寫地址(0xA0)?
(3) 向 IIC 總線發(fā)送要操作的 EEPROM 地址?
(4) 向 IIC 總線連續(xù)發(fā)送多個要寫入的字節(jié)數(shù)據(jù)?
(5) 向 IIC 總線發(fā)送停止信號,結(jié)束本次通訊讀時序:?
(1) 向 IIC 總線發(fā)送開始信號?
(2) 向 IIC 總線發(fā)送芯片寫地址(0xA0)?
(3) 向 IIC 總線發(fā)送要操作的 EEPROM 地址?
(4) 向 IIC 總線發(fā)送開始信號?
(5) 向 IIC 總線發(fā)送芯片讀地址(0xA1)?
(6) 從 IIC 總線連續(xù)讀取芯片輸出的數(shù)據(jù)?
(7) 向 IIC 總線發(fā)送停止信號,結(jié)束本次通訊?
?
1.1.2 向 AT24C02 寫入數(shù)據(jù)?
向 AT24C02 的地址 0~3 寫入 4 個字節(jié)(30 31 32 33)?
向 UART1 發(fā)送字符串:[IIC][START][WT6H]A0 00 30 31 32 33[STOP]?
[IIC] 數(shù)據(jù)幀的目標是 IIC 接口?
[START] 從目標接口輸出開始信號?
[WT6H]? 從目標接口輸出 6 個字節(jié),后續(xù)數(shù)據(jù)類型為 16 進制。?
A0 00 2 字節(jié)數(shù)據(jù),AT24C02 芯片地址+要操作的EEPROM 地址?
00 01 02 03 向 AT24C02 寫入的 4 個字節(jié)數(shù)據(jù)[STOP] 從目標接口輸出停止信號,結(jié)束本次通訊?
?
1.1.3 從 AT24C02 讀取數(shù)據(jù)?
從 AT24C02 讀取 4 個字節(jié)數(shù)據(jù),數(shù)據(jù)起始地址為 0。?
向 UART1 發(fā)送字符串:[IIC][START][WT2H]A0 00[START][WT1H]A1[RD4N][STOP]?
從 UART1 返回 4 個字節(jié)(16 進制):30 31 32 33 [IIC] 數(shù)據(jù)幀的目標是 IIC 接口?
[START] 從目標接口輸出開始信號?
[WT2H] 從目標接口輸出 2 個字節(jié),后續(xù)數(shù)據(jù)類型為 16 進制。?
A0 00 2 字節(jié)數(shù)據(jù),AT24C02 芯片地址+要操作的EEPROM 地址?
[START] 從目標接口輸出開始信號?
[WT1H] 從目標接口輸出 1 個字節(jié),后續(xù)數(shù)據(jù)類型為 16 進制。?
A1 AT24C02 芯片的讀地址?
[RD4N]? 從目標接口連續(xù)讀取 4 個字節(jié)數(shù)據(jù) [STOP] 從目標接口輸出停止信號,結(jié)束本次通訊?
?
1.1.4 跨頁寫入數(shù)據(jù)?
AT24C02 每頁為 8 字節(jié),EEPROM 地址 0~7 為第 1 頁、8~15 為第 2 頁,以此類推。當向芯片連續(xù)寫入數(shù)據(jù)時,在寫完每頁最后 1 個字節(jié)后必須向其發(fā)送停止信號,以使芯片對當前頁進行存儲,繼續(xù)寫入后續(xù)數(shù)據(jù)時需要重新開始寫入時序。?
芯片存儲數(shù)據(jù)需要一定時間,向其發(fā)起新的通訊前應有適當延時。也可以直接向其繼續(xù)寫入若返回了[ERRxxx]表示芯片正忙,重新發(fā)送直到無錯誤返回。?
例如:從 EEPROM 地址 0 開始寫入 10 個字節(jié)數(shù)據(jù),則應先寫入 0~7,延時,再寫入 8~9。?
[IIC][START][WT10H]A0 00 00 01 02 03 04 05 06 07[STOP][DELAY50][IIC][START][WT4H]A0 08 08 09[STOP]?
例如:直接向芯片寫入字符串數(shù)據(jù)?
[IIC][START][WT2H]A0 00[WT8S]87654321[STOP][DELAY50][IIC][START][WT4H]A0 08 38 39[STOP]?