設(shè)計(jì)采集板的目標(biāo)
設(shè)計(jì)基于 STC8G8K64U 單片機(jī)的高速 ADC 采樣板,可以為普通的電路實(shí)驗(yàn)提供快速波形采樣的模塊。
該模塊也可以應(yīng)用于全國(guó)大學(xué)生智能車(chē)競(jìng)賽聲音信標(biāo)組數(shù)據(jù)采集實(shí)驗(yàn)中,作為向同學(xué)們介紹的解決方案,明天給出相應(yīng)實(shí)驗(yàn)結(jié)果。
設(shè)計(jì)采樣板的技術(shù)指標(biāo):
- 采樣頻率:10kHz;采樣通道:2 通道采樣信號(hào):0~5V,數(shù)據(jù)位 12bit。外部數(shù)據(jù)接口:(1)UART2 通過(guò) USR-WiFi 接口發(fā)送到局部無(wú)線網(wǎng);(2)通過(guò)串口 UART1 通過(guò)調(diào)試器將數(shù)據(jù)發(fā)送到調(diào)試界面;
電路板設(shè)計(jì)
1. 原理圖設(shè)計(jì)
▲ 原理圖設(shè)計(jì)
?
對(duì)外接口定義:
「(1)ISP 端口:」
序號(hào) | 管腳名稱(chēng) | 功能 |
---|---|---|
1 | VCC | +5V 電源 |
2 | GND | 電源地線 |
3 | TXD | 連接 UART1-TXD |
4 | RXD | 連接 UART1-RXD |
「(2)ADC 端口:」
序號(hào) | 管腳名稱(chēng) | 功能 |
---|---|---|
1 | ADC0 | 模擬輸入端口 0 |
2 | ADC1 | 模擬輸入端口 1 |
3 | ADC2 | 模擬輸入端口 2 |
4 | GND | 信號(hào)底線 |
「(3)WiFI UART 接口:」詳見(jiàn)電路原理圖的 PCB 的管腳定義。
2. PCB 版圖設(shè)計(jì)
▲ PCB 板圖設(shè)計(jì)
?
▲ 焊接之后的電路板
?
▲ 安裝有 WiFi-UART 模塊后的電路板
?
3. 電路軟件調(diào)試
「(1)單片機(jī)的硬件配置:」
由于配置 STC8H8K 工作在 48MHz,提高單片機(jī)運(yùn)行速度。
▲ 單片機(jī)硬件配置
?
「(2)串口波特率配置:」
- UART1:配置波特率 115200 ,這與下載器上的 PL2303 可以使用的波特率相匹配;UART2::配置的波特率為 460800,這與 WiFi-UART
▲ 硬件連接調(diào)試
?
「(3)配置 WiFI-UART:」
STEP1:使用手機(jī),或者平板電腦,選擇 USR-WIFI232-T-191 無(wú)線網(wǎng)關(guān),登錄 10.10.100.254 地址。在登錄界面輸入用戶(hù)名和密碼都是「admin」。
▲ 無(wú)線登錄界面
?
STEP2:按照下面的設(shè)置,設(shè)置 WIFI-UART 模塊的工作參數(shù)。
「STA 設(shè)置:」
▲ STA 設(shè)置
?
「AP 設(shè)置:」
▲ AP 設(shè)置
?
「網(wǎng)絡(luò)設(shè)置:」
▲ 網(wǎng)絡(luò)設(shè)置
?
「串口設(shè)置:」
▲ 串口設(shè)置
?
「設(shè)置后的系統(tǒng)信息:」
▲ 設(shè)置后的系統(tǒng)信息
?
4. 軟件命令
模塊通過(guò) UART1(115200),UART2(460800)接收字符命令,分別輸出采集的結(jié)果以及重新開(kāi)始新的采集過(guò)程。具體的功能可以參見(jiàn)下面一段程序:
????if(strcmp("hello",????????????????(char?*)STD_ARG[0])?*?0)
????????printf("%s?is?ready?!rn",?VERSION_STRING);
????else?IFARG0("adc")?{
????????g_nADBufferPoint?=?0;????????
????????TIME3_INT_ENABLE;????????
????}
????else?IFARG0("buf")?{
????????sscanf(SDA(1),?"%d",?&nStart);
????????sscanf(SDA(2),?"%d",?&nLength);
????????
????????nCheck?=?0;
????????for(i?=?0;?i?<?nLength;?i?++)?{
????????????nNumber?=?g_nADBuffer[i?+?nStart];
????????????UART2SendChar((unsigned?char)(nNumber?>>?8));
????????????UART2SendChar((unsigned?char)(nNumber?&?0xff));
????????????nCheck?+=?nNumber;
????????}????????
????
????}?else?IFARG0("sf")?{
????????SendChar(0x0);
????????for(i?=?0;?i?<?AD_BUFFER;?i?++)?{
????????????printf("%d?",?g_nADBuffer[i]);
????????}
????????printf("rn");
????????g_nADBufferPoint?=?0;
????????TIME3_INT_ENABLE;????
????}
?
5. PYTHON 獲取數(shù)據(jù)程序
過(guò) PYTHON 編程,可以從 WiFi 獲取采集板的 8k 數(shù)據(jù)。
具體的程序可以在 CSDN 對(duì)應(yīng)的博文中看到。
模塊測(cè)試性能
1. 數(shù)據(jù)傳送時(shí)間
通過(guò) WiFi-UAR 收到 4096(8192 bytes)數(shù)據(jù)為 0.489s 左右。
下圖是對(duì)兩路正弦波采集到的數(shù)據(jù)波形:
▲ 兩個(gè)通道采集的波形