河北穩(wěn)控科技可編程 USB 轉(zhuǎn)串口適配器開(kāi)發(fā)板 USB 轉(zhuǎn) UART I2C 應(yīng)用
河北穩(wěn)控科技可編程 USB 轉(zhuǎn)串口適配器開(kāi)發(fā)板 USB 轉(zhuǎn) UART? I2C 應(yīng)用?
可編程USB轉(zhuǎn) UART/I2C /SMBusS/SPI/CAN/1 -Wire適配器USB2S? ?USB 轉(zhuǎn) UART 應(yīng)用?

1.1驅(qū)動(dòng)安裝?
USB2S 內(nèi)置了 USB 轉(zhuǎn)UART 芯片,可使用CH340/CH341 驅(qū)動(dòng)程序。驅(qū)動(dòng)安裝步驟如下: 雙擊運(yùn)行“CH341SER\SETUP.exe”,打開(kāi)驅(qū)動(dòng)安裝窗口。?
點(diǎn)擊【安裝】按鈕,稍后會(huì)提示“驅(qū)動(dòng)安裝成功”。如下圖示。?

驅(qū)動(dòng)安裝成功后,若將 USB2S 插入計(jì)算機(jī) USB 接口,在“設(shè)備管理器”中會(huì)發(fā)現(xiàn)新的 COM 接口, 如下圖示。?

1.2 USB 轉(zhuǎn)UART 原理
驅(qū)動(dòng)程序安裝后,計(jì)算機(jī)通過(guò) COMx 與 MCU 進(jìn)行通訊,當(dāng) USB2S 的 UART 透明傳輸功能為開(kāi)啟狀態(tài)時(shí)(默認(rèn)),MCU 可將 UART1 與UART2 的雙向數(shù)據(jù)進(jìn)行透明轉(zhuǎn)發(fā),即:實(shí)現(xiàn)了計(jì)算機(jī)的COMx 端口與 USB2S 的對(duì)外 UART2 端口的雙向數(shù)據(jù)傳輸。工作原理示意圖如下:?

上面的方法是通過(guò) MCU 固件程序?qū)崿F(xiàn)UART1 與 UART2 之間數(shù)據(jù)透明傳輸。?
下面的連接方法可實(shí)現(xiàn)真正的 USB 轉(zhuǎn) UART 功能,方法是通過(guò)跳線禁用 MCU,外部UART 設(shè)備直接連接到 UART1 接口。

對(duì)于絕大部分應(yīng)用,第一種連接方法即可。
可編程USB轉(zhuǎn) UART/I2C /SMBusS/SPI/CAN/1 -Wire適配器USB2S? ?UART 轉(zhuǎn) I2C 應(yīng)用?
1.1 AT24CxxEEPROM 芯片?
1.1.1 芯片介紹?
AT24Cxx 是可擦寫(xiě) EEPROM 存儲(chǔ)芯片,xx 表示容量,單位為 Kbits。USB2S 板上已有 1 片 AT24Cxx
(默認(rèn)為 AT24C02),設(shè)備地址為 0xA0。?
通過(guò) AT24Cxx 的數(shù)據(jù)手冊(cè)可知,讀寫(xiě)時(shí)序如下: 寫(xiě)時(shí)序:?
(1) 向 IIC 總線發(fā)送開(kāi)始信號(hào)?
(2) 向 IIC 總線發(fā)送芯片寫(xiě)地址(0xA0)?
(3) 向 IIC 總線發(fā)送要操作的 EEPROM 地址?
(4) 向 IIC 總線連續(xù)發(fā)送多個(gè)要寫(xiě)入的字節(jié)數(shù)據(jù)?
(5) 向 IIC 總線發(fā)送停止信號(hào),結(jié)束本次通訊讀時(shí)序:?
(1) 向 IIC 總線發(fā)送開(kāi)始信號(hào)?
(2) 向 IIC 總線發(fā)送芯片寫(xiě)地址(0xA0)?
(3) 向 IIC 總線發(fā)送要操作的 EEPROM 地址?
(4) 向 IIC 總線發(fā)送開(kāi)始信號(hào)?
(5) 向 IIC 總線發(fā)送芯片讀地址(0xA1)?
(6) 從 IIC 總線連續(xù)讀取芯片輸出的數(shù)據(jù)?
(7) 向 IIC 總線發(fā)送停止信號(hào),結(jié)束本次通訊?

?
1.1.2 向 AT24C02 寫(xiě)入數(shù)據(jù)?
向 AT24C02 的地址 0~3 寫(xiě)入 4 個(gè)字節(jié)(30 31 32 33)?
向 UART1 發(fā)送字符串:[IIC][START][WT6H]A0 00 30 31 32 33[STOP]?
[IIC] 數(shù)據(jù)幀的目標(biāo)是 IIC 接口?
[START] 從目標(biāo)接口輸出開(kāi)始信號(hào)?
[WT6H]? 從目標(biāo)接口輸出 6 個(gè)字節(jié),后續(xù)數(shù)據(jù)類型為 16 進(jìn)制。?
A0 00 2 字節(jié)數(shù)據(jù),AT24C02 芯片地址+要操作的EEPROM 地址?
00 01 02 03 向 AT24C02 寫(xiě)入的 4 個(gè)字節(jié)數(shù)據(jù)[STOP] 從目標(biāo)接口輸出停止信號(hào),結(jié)束本次通訊?
?
1.1.3 從 AT24C02 讀取數(shù)據(jù)?
從 AT24C02 讀取 4 個(gè)字節(jié)數(shù)據(jù),數(shù)據(jù)起始地址為 0。?
向 UART1 發(fā)送字符串:[IIC][START][WT2H]A0 00[START][WT1H]A1[RD4N][STOP]?
從 UART1 返回 4 個(gè)字節(jié)(16 進(jìn)制):30 31 32 33 [IIC] 數(shù)據(jù)幀的目標(biāo)是 IIC 接口?
[START] 從目標(biāo)接口輸出開(kāi)始信號(hào)?
[WT2H] 從目標(biāo)接口輸出 2 個(gè)字節(jié),后續(xù)數(shù)據(jù)類型為 16 進(jìn)制。?
A0 00 2 字節(jié)數(shù)據(jù),AT24C02 芯片地址+要操作的EEPROM 地址?
[START] 從目標(biāo)接口輸出開(kāi)始信號(hào)?
[WT1H] 從目標(biāo)接口輸出 1 個(gè)字節(jié),后續(xù)數(shù)據(jù)類型為 16 進(jìn)制。?
A1 AT24C02 芯片的讀地址?
[RD4N]? 從目標(biāo)接口連續(xù)讀取 4 個(gè)字節(jié)數(shù)據(jù) [STOP] 從目標(biāo)接口輸出停止信號(hào),結(jié)束本次通訊?
?
1.1.4 跨頁(yè)寫(xiě)入數(shù)據(jù)?
AT24C02 每頁(yè)為 8 字節(jié),EEPROM 地址 0~7 為第 1 頁(yè)、8~15 為第 2 頁(yè),以此類推。當(dāng)向芯片連續(xù)寫(xiě)入數(shù)據(jù)時(shí),在寫(xiě)完每頁(yè)最后 1 個(gè)字節(jié)后必須向其發(fā)送停止信號(hào),以使芯片對(duì)當(dāng)前頁(yè)進(jìn)行存儲(chǔ),繼續(xù)寫(xiě)入后續(xù)數(shù)據(jù)時(shí)需要重新開(kāi)始寫(xiě)入時(shí)序。?
芯片存儲(chǔ)數(shù)據(jù)需要一定時(shí)間,向其發(fā)起新的通訊前應(yīng)有適當(dāng)延時(shí)。也可以直接向其繼續(xù)寫(xiě)入若返回了[ERRxxx]表示芯片正忙,重新發(fā)送直到無(wú)錯(cuò)誤返回。?
例如:從 EEPROM 地址 0 開(kāi)始寫(xiě)入 10 個(gè)字節(jié)數(shù)據(jù),則應(yīng)先寫(xiě)入 0~7,延時(shí),再寫(xiě)入 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]?
例如:直接向芯片寫(xiě)入字符串?dāng)?shù)據(jù)?
[IIC][START][WT2H]A0 00[WT8S]87654321[STOP][DELAY50][IIC][START][WT4H]A0 08 38 39[STOP]?