国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于WK2168的氣象采集站多串口采集方案的設計與實現(xiàn)

2018-11-01 03:04:18張達郭銀博趙廣宇胥勛偉
電腦知識與技術 2018年19期

張達 郭銀博 趙廣宇 胥勛偉

摘要:在綜合采集系統(tǒng)中,很多外接傳感器都是串口通信。為了解決STM32采集系統(tǒng)中串口數(shù)量不足的問題,采用WK2168進行串口擴展。WK2168支持UART/SPI/IIC/8位并行總線接口并具有256級FIFO的低功耗 4通道UART擴展芯片。該方案選擇一路串口,擴展為4路UART,滿足項目整體需求。

關鍵詞:串口擴展芯片;WK2168;氣象采集板卡;多串口采集

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)19-0284-03

Abstract: Power standby mode in the integrated acquisition system, many external sensors are serial communication. In order to solve the problem of insufficient serial port in the STM32 acquisition system, WK2168 is used to expand the serial port. WK2168 supports UART/SPI/IIC/8 bit parallel bus interface and has 256 level FIFO low power 4 channel UART expansion chip. This scheme selects one serial port to expand to 4 UART, to meet the overall needs of the project.

Key words: serial port extension chip; WK2168; meteorological collection board; multi serial port acquisition

1 背景

為了更好地利用自然氣象資源,減少自然氣象對農(nóng)業(yè)生產(chǎn)、交通運輸?shù)刃袠I(yè)的影響,建立信息化的采集系統(tǒng)和高效的管理系統(tǒng)是很有必要的。設計了一套通用采集板卡,根據(jù)所應用的場合變化,分別插接不同的外接傳感器。傳感器數(shù)據(jù)和控制器之間大多采用串口進行數(shù)據(jù)通信,單片機串口數(shù)量有限影響著板卡的性能。采集板卡的串口拓展方案的設計與實施是有必要的。

2 系統(tǒng)的構(gòu)成

該方案采用STM32F103VET7作為處理器,負責氣象要素的判斷采集、信號處理、定時發(fā)送[1 ]。采用12V的太陽能板和電池為系統(tǒng)供電。采用8M byte的M25P64作為系統(tǒng)參數(shù)初始化的存儲地址。采用AD7993作為片外模擬量的采集。整個系統(tǒng)框圖如圖1所示:

3 采集板硬件設計

3.1 ARM處理子系統(tǒng)

ARM 公司發(fā)布了全新的基于 ARMv7指令集,處理器的內(nèi)核以Cortex命名并分為A、R和M三個系列[2-3]。意法半導體公司推出了基于Cortex-M內(nèi)核的系列芯片,項目選型使用的STM32F103VET7就是M3內(nèi)核的[4]。該系列單片機具有產(chǎn)品細分多樣化、不斷更新簡單易用的集成庫、性價比較高等優(yōu)點深受電子工程師和學生的青睞,使開發(fā)者順應技術發(fā)展趨勢,讓設計的產(chǎn)品更有競爭力。

該主控芯片資源豐富,12位ADC 3個、12位DAC 、USB、CAN、SDIO接口、FSMC接口、64KB SRAM、512KB FLASH、基本定時器2個、通用定時器4個、高級定時器2個、通用IO口、SPI 3個、IIC 2個及串口5個[5]。在該項目中需要使用較多的串口通道,外掛WK2168串口擴展芯片,使可用串口達到8個[6]。

3.2 串口擴展子系統(tǒng)

3.2.1 WK2168基本特性

VK3366在串口擴展領域使用較為廣泛,WK2168是成都為開微電子推出的新品用以替代VK3366,較前者WK2168具有技術支持力度更大、性價比更高等優(yōu)點。該款芯片支持UART、SPI、IIC、8位并行總線四種接口作為主接口,同時可擴展4路增強的UART。

該款芯片主要具有如下功能:是首款具備256級FIFO的低功耗芯片。該芯片可最多擴展4通道UART器件。該芯片支持UART/SPITM/IIC/8位并行總線作為主通道,并可以通過模式配置使得該芯片工作于以上任何一種主接口模式,將選定的主接口擴展為4個增強功能的UART。

選擇串口作為主接口:主接口不需要地址信號和控制信號線,只需要標準的三線UART串口(RX,TX,GND),簡單的配置寄存器和控制字,可編程的設置子通道的波特率、字長、校驗格式等信息。最高速度可以達到2M bit/s。收發(fā)獨立的超大硬件緩存,支持256級FIFO。

3.2.2 WK2168硬件設計

數(shù)據(jù)采集板卡的外接端口較多,采用STM32F103VET7的串口5作為主接口來拓展子串口,MD0、MD1兩個引腳配合使用配置主接口選擇哪種接口,選MD1 MD0=11。選擇和CPU相同的供電電壓3.3V。MCU和芯片之間MRX、MTX引腳通過交叉線連接。WK2168的IRQ連接到MCU的外部中斷輸入引腳。這個連接不是必須的,如果沒有連接到MCU的外部中斷輸入引腳,那么就只能采用查詢的編程方式實現(xiàn)對子串口的數(shù)據(jù)收發(fā)。WK2168的復位引腳,低電平有效,時間長度為10ms。復位以后,WK2168的所有寄存器恢復到默認值,總線上的命令解析也會同時復位。通常采用無源晶振,其大小可參照手冊根據(jù)串口波特率選取,這里采用11.059 2 MHz晶振。需要和晶振并聯(lián)1兆歐的匹配電阻。

在選用串口作為主接口,DAT0-DAT7作為普通GPIO使用,可以通過GPDIR來設置相應引腳的輸入輸出特性。并且可以通過GPDAT來訪問DAT0-DAT7引腳。MP1/MP2/MP3/MP4分別為NC、主串口發(fā)送、主串口接收、IR;IR默認為高電平,此時為普通UART通信模式,若IR為零,則配置為紅外通信模式。

4 軟件設計

4.1 系統(tǒng)整體軟件設計

采集板上電后首先對系統(tǒng)時鐘、定時器、中斷、AD采集等進行初始化;在主函數(shù)中分時讀取各采集要素傳感器的參數(shù),執(zhí)行相應傳感器的處理函數(shù),并通過DTU模塊發(fā)送分鐘數(shù)據(jù)報文給服務器。其中外部中斷用來判斷門狀態(tài)等參數(shù);定時器中斷用來計時,在一分鐘內(nèi)的不同時間段采集不同要素的數(shù)據(jù)。串口中斷用來判斷傳感器是否有數(shù)據(jù)發(fā)出并接收數(shù)據(jù);AD用來采集一些非高精度的模擬量電壓值。

4.2 串口擴展子系統(tǒng)軟件設計

當選擇UART作為WK2168的主接口時,與采集板僅連接RX、TX、GND三根線。采用標準的UART協(xié)議進行通信[7]。主接口UART可以實現(xiàn)波特率自適應。上電復位后,先向WK2168寫入0x55,WK2168可以根據(jù)寫入的數(shù)據(jù)自動測得此時MCU的波特率并把主接口UART的波特率鎖定,以后就以此波特率進行通信;如果主接口需要再次更換波特率,需要對芯片硬件復位,然后再次進行波特率測試和鎖定。

4.2.1 WK2168讀寫寄存器時序分析

對WK2168進行寫操作時,先由單片機向WK2168寫入一字節(jié)的控制字,隨后寫入一個字節(jié)的數(shù)據(jù)。在無校驗模式下如表1所示:

寫寄存器模塊函數(shù)代碼如下所示:

void write_reg(unsigned char port,unsigned char reg,unsigned char dat)

{

uart_sendByte(0x00+((port-1)<<4)+reg);

uart_sendByte(dat);

USART_SendData(USART1, (0x00+((port-1)<<4)+reg));

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);

}

其中:port指的是子串口號(C0、C1)

reg 指的是寄存器的地址(A3、A2、A1、A0)

dat 指的是要對寄存器寫入的數(shù)據(jù)

若需要對串口1的波特率配置位115200,假設系統(tǒng)時鐘為12M;

reg=fs/((baud*16)) (1)

fs為系統(tǒng)時鐘,baud 為波特率,reg為我們要寫入到寄存器中的控制命令,如公式1所示[8];reg=6.51,結(jié)果精確到小數(shù)點后兩位,把reg的值減去1按順序賦值給BAUD1和BAUD0,把小數(shù)點后第一位賦值給PRES;只需要調(diào)用函數(shù):

write_reg(1,BAUD1,0X00);

write_reg(1,BAUD0,0X05);

write_reg(1,PRES,0X05);

對WK2168進行讀操作時,先由單片機向WK2168寫入一字節(jié)的控制字,隨后從WK2168的TX讀取數(shù)據(jù)。如寫入一個字節(jié)的數(shù)據(jù)。在無校驗模式下如表2所示:

讀寄存器模塊函數(shù)代碼如下所示:

unsigned char read_reg(unsigned char port,unsigned char reg)

{

unsigned char rec_data;

uart_sendByte(0x40+((port-1)<<4)+reg);

rec_data=uart_recByte();

return rec_data;

}

4.2.2 WK2168讀寫FIFO時序分析

對的讀寫操作,類似于對一個特殊的讀寫操作。操作命令只能作用于FIFO寄存器緩沖區(qū)的數(shù)據(jù)。

寫FIFO功能模塊函數(shù)如表3:

void Wk2168_writeFIFO(unsigned char port,unsigned char *send_da,unsigned char num)

{

unsigned char i;

uart_sendByte(0x80+((port-1)<<4)+(num-1)); //寫指令

for(i=0;i

{

uart_sendByte( *(send_da+i));//寫數(shù)據(jù)

}

}

其中參數(shù):port指的是子串口號(C0、C1)

*dat是寫入的數(shù)據(jù)指針

num寫入的數(shù)據(jù)個數(shù)

讀FIFO功能模塊函數(shù)如下:

unsigned char *Wk2114readFIFO(unsigned char port,unsigned char num)

{

unsigned char n;

unsigned char dat[256];

uart_sendByte(0xc0+((port-1)<<4)+(num-1));

for(n=0;n

{

dat[n]=uart_recByte();

}

return dat;

}

其中參數(shù):port指的是子串口號(C0、C1)

*dat是讀取的數(shù)據(jù)指針

Num讀到的數(shù)據(jù)個數(shù)

}

采集板卡實物圖如圖3所示:

5 結(jié)束語

基于STM32采集板卡中串口數(shù)量不足的問題,設計了基于WK2168串口擴展方案,并對WK2168芯片進行介紹,設計了基于WK2168串口擴展系統(tǒng)的硬件電路,編寫了WK2168芯片的應用程序,該設計方案已經(jīng)在實際項目中應用。為氣象站采集板卡提供了一種新的串口擴展方案。

參考文獻:

[1] 何慧蕓, 馬啟明, 黃啟俊, 等. 智能氣象站傳感器系統(tǒng)的ZigBee無線網(wǎng)絡設計[J]. 電子測量技術, 2012(6): 118-121.

[2] 王新勇. 基于ARM的Linux驅(qū)動開發(fā)研究[D]. 贛州: 江西理工大學, 2011.

[3] 張繼珂. 嵌入式操作系統(tǒng)uC/OS-ⅡI的移植及文件系統(tǒng)設計[D]. 南京: 南京航空航天大學, 2011.

[4] 郝玉勝. uC/OS-Ⅱ嵌入式操作系統(tǒng)內(nèi)核移植研究及其實現(xiàn)[D]. 蘭州: 蘭州交通大學, 2014.

[5] 張義顯. 基于STM32的新型家庭報警器的設計與實現(xiàn)[D]. 秦皇島: 燕山大學, 2016.

[6] 李洪亮. 車輛油耗實時監(jiān)測與信息管理系統(tǒng)研究[D]. 哈爾濱: 東北林業(yè)大學, 2014.

[7] 張玉恒, 梁存真. 基于VK3214的DSP串口擴展—2010年河南省單片微機和嵌入式系統(tǒng)學術研討會[C]. 鄭州: 河南省電子學會, 2010.

[8] 為開微電子. WK2168數(shù)據(jù)手冊[M]. 成都: 四川為開微電子有限公司, 2017.

赤城县| 临漳县| 包头市| 大冶市| 古蔺县| 攀枝花市| 灵石县| 元江| 泰兴市| 监利县| 沁水县| 红安县| 平南县| 金平| 石楼县| 平潭县| 江口县| 南宫市| 丰县| 三明市| 开原市| 榆树市| 锡林郭勒盟| 北票市| 丰台区| 科技| 札达县| 城固县| 新宁县| 中阳县| 平远县| 方正县| 大姚县| 即墨市| 南投市| 遂昌县| 吴旗县| 浦城县| 扬州市| 博客| 玛纳斯县|