亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        STM32單片機(jī)多串口通信仿真測(cè)試技術(shù)研究

        2015-06-13 12:00:22勇,何
        無(wú)線電工程 2015年8期
        關(guān)鍵詞:接收數(shù)據(jù)發(fā)送數(shù)據(jù)管腳

        郭 勇,何 軍

        (南京北方信息控制集團(tuán)有限公司產(chǎn)品研發(fā)中心,江蘇南京211153)

        0 引言

        STM32單片機(jī)是基于高性能Cortex-M3內(nèi)核的32位單片機(jī),外設(shè)功能強(qiáng)大,最大工作頻率72MHz。本文選用的STM32103VET6芯片,有多達(dá)5個(gè)USART、3個(gè)SPI口和2個(gè)I2C口,便于產(chǎn)品與上位機(jī)的通信。采用基于庫(kù)函數(shù)的編程方法,能很快地進(jìn)行產(chǎn)品開(kāi)發(fā)。目前公開(kāi)的文獻(xiàn)沒(méi)有提及無(wú)硬件平臺(tái)情況下對(duì)STM32進(jìn)行多串口調(diào)試的方法,部分文獻(xiàn)有介紹用虛擬串口仿真51單片機(jī),但沒(méi)有提及怎樣仿真串口接收通信的情況[1-3]。本文采用基于RealView MDK、VSPD(虛擬串口)和串口調(diào)試軟件的聯(lián)合仿真調(diào)試技術(shù),可以在沒(méi)有硬件平臺(tái)的情況下,完成多串口收發(fā)通信軟件的開(kāi)發(fā)和測(cè)試。

        1 多串口通信的軟件設(shè)計(jì)原理

        軟件流程圖如圖1所示。

        圖1 軟件流程

        本文使用的STM32芯片有多達(dá)5個(gè)USART,使用其中的3個(gè)USART(USART1~USART3)。在不進(jìn)行管腳重映射的情況下,USART1_Tx管腳為PA9,USART1_Rx管腳為 PA10,USART2_Tx管腳為PA2,USART2_Rx管腳為 PA3,USART3_Tx管腳為PB10,USART3_Rx管腳為PB11。軟件的設(shè)計(jì)采用模塊化,包括RCC時(shí)鐘配置模塊,NVIC中斷向量配置模塊,USART1~USART3管腳配置模塊、USART1~USART3初始化模塊,USART1~USART3通信模塊等。

        1.1 RCC時(shí)鐘設(shè)置模塊

        采用8 MHz外部晶振作為PLL時(shí)鐘,再倍頻到72 MHz。該時(shí)鐘作為系統(tǒng)時(shí)鐘,待系統(tǒng)時(shí)鐘穩(wěn)定后,再進(jìn)行各模塊時(shí)鐘的分配[4]。時(shí)鐘初始化模塊部分代碼如下:

        /*使能串口1時(shí)鐘,及管腳GPIOA的時(shí)鐘*/

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);∥使能串口2時(shí)鐘

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);/* 使能串口3引腳GPIOB的時(shí)鐘*/

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);∥使能串口3時(shí)鐘

        1.2 UASRT通信管腳配置模塊

        STM32單片機(jī)功能管腳由GPIO管腳進(jìn)行映射,這里僅給出USART1_Tx和USART1_Rx管腳配置的軟件代碼,USART2和 USART3的管腳配置類(lèi)似[5]。

        GPIO_InitTypeDef GPIO_InitStructure;

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;

        ∥IO口的第九腳

        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

        ∥IO口的速度

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

        ∥IO口復(fù)用推挽輸出

        GPIO_Init(GPIOA,&GPIO_InitStructure);

        ∥初始化USART1的TX口

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

        ∥IO口的第十腳

        GPIO_InitStructure.GPIO_Mode=

        GPIO_Mode_IN_FLOATING;∥IO口懸空輸入

        GPIO_Init(GPIOA,&GPIO_InitStructure);

        ∥初始化USART1的RX口

        1.3 NVIC中斷向量模塊的配置

        NVIC是中斷向量控制器,用來(lái)控制多個(gè)中斷向量的優(yōu)先級(jí),在NVIC中設(shè)置USART1中斷為最高優(yōu)先級(jí),USART2次之,USART3中斷優(yōu)先級(jí)最低。本文設(shè)置發(fā)送為順序發(fā)送,接收為中斷響應(yīng)接收[6]。代碼如下:

        NVIC_InitTypeDef NVIC_InitStructure;

        NVIC_DeInit();

        NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

        ∥使能USART1中斷

        NVIC_InitStructure.NVIC_IRQChannel=

        USART1_IRQChannel;

        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

        NVIC_Init(&NVIC_InitStructure);

        NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQChannel;∥使能USART2中斷

        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

        NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;

        NVIC_InitStructure.NVIC_IRQChannel=USART3_IRQChannel;∥使能USART3中斷

        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

        NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;

        USART1~USART3的搶占優(yōu)先級(jí)相同,USART1的從優(yōu)先級(jí)值最小,所以USART1的優(yōu)先級(jí)別最高。

        1.4 USART的通信配置模塊

        采用全雙工通信,對(duì)USART1進(jìn)行配置,USART1的波特率115 200 bit/s,數(shù)據(jù)位8位,停止位1位,無(wú)校驗(yàn)位,無(wú)流量控制,接收、發(fā)送使能,采用接收中斷方式,USART2和USART3的配置類(lèi)似。

        USART_InitTypeDef USART_InitStructure;

        “互聯(lián)網(wǎng)+”與傳統(tǒng)產(chǎn)業(yè)的協(xié)同融合是通過(guò)運(yùn)用移動(dòng)互聯(lián)、云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等互聯(lián)網(wǎng)信息技術(shù)對(duì)農(nóng)業(yè)、工業(yè)、服務(wù)業(yè)等產(chǎn)業(yè)鏈各環(huán)節(jié)進(jìn)行滲透和嵌入,通過(guò)提高產(chǎn)業(yè)技術(shù)水平,創(chuàng)造新業(yè)態(tài)、新商業(yè)流程、新商業(yè)模式,實(shí)現(xiàn)產(chǎn)業(yè)鏈上下游的垂直合作或行業(yè)間的橫向整合。同時(shí),產(chǎn)業(yè)協(xié)同融合過(guò)程中還能夠創(chuàng)新產(chǎn)業(yè)價(jià)值鏈模式,創(chuàng)新后的價(jià)值鏈接節(jié)點(diǎn)融合了互聯(lián)網(wǎng)產(chǎn)業(yè)價(jià)值,與原產(chǎn)業(yè)相比,融合產(chǎn)業(yè)帶來(lái)了更高的附加值以及更大的利潤(rùn)空間。總體來(lái)說(shuō),憑借“互聯(lián)網(wǎng)+”信息技術(shù)進(jìn)行的產(chǎn)業(yè)融合,能夠提高產(chǎn)業(yè)技術(shù)水平以及產(chǎn)業(yè)附加值,能夠?qū)崿F(xiàn)傳統(tǒng)產(chǎn)業(yè)結(jié)構(gòu)優(yōu)化升級(jí)目標(biāo),核心內(nèi)涵見(jiàn)圖1。

        USART_InitStructure.USART_BaudRate=115200;

        ∥設(shè)定傳輸速率

        USART_InitStructure.USART_WordLength=USART_WordLength_8b;∥設(shè)定8位數(shù)據(jù)位

        USART_InitStructure.USART_StopBits=USART_StopBits_1;∥設(shè)定1個(gè)停止位

        USART_InitStructure.USART_Parity=USART_Parity_No;∥無(wú)校驗(yàn)位

        USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;

        USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;∥使用發(fā)送和接收功能

        ∥初始化USART1

        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);∥使能USART1接收中斷

        USART_Cmd(USART1,ENABLE);∥使能 USART1

        1.5 USART的中斷接收模塊

        在該中斷響應(yīng)函數(shù)中,當(dāng)USART1接收事件完成時(shí),產(chǎn)生中斷信號(hào),通知微處理器進(jìn)行串口通信的接收處理[7,8]。

        void USART1_IRQHandler(void)

        {

        static unsigned char rx1_num;

        unsigned char temp_rx;

        if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)∥如果是接收中斷

        {

        uart1_rx[rx1_num]=temp_rx;

        }

        rx1_num++;∥靜態(tài)變量,記錄USART1接收數(shù)據(jù)的個(gè)數(shù)

        }

        當(dāng)USART2和USART3產(chǎn)生接收中斷時(shí),進(jìn)入相應(yīng)的中斷函數(shù)進(jìn)行處理。

        2 虛擬串口和仿真串口的綁定

        傳統(tǒng)的USART調(diào)試必須有相應(yīng)的開(kāi)發(fā)板,連接開(kāi)發(fā)板的串口和上位機(jī)的串口,開(kāi)發(fā)軟件RealView MDK在調(diào)試時(shí),有3個(gè)串口的仿真輸出窗口UART#1,UART#2,UART#3,但這3個(gè)窗口只能仿真串口輸出,不能仿真串口的接收通信。采用虛擬串口軟件VSPD(Virtual Serial Port Driver),可以虛擬出多對(duì)串口,如圖2所示。分別把每一對(duì)虛擬串口中的一個(gè)與STM32單片機(jī)的每個(gè)串口進(jìn)行綁定,就可以進(jìn)行串口的通信仿真測(cè)試。

        圖2 產(chǎn)生的3對(duì)虛擬串口

        本文用 VSPD軟件虛擬了3對(duì)串口,分別是COM4和 COM5、COM6和 COM7、COM8 和 COM9。COM4發(fā)送數(shù)據(jù)時(shí),COM5接收數(shù)據(jù),反之亦然。為了仿真 STM32單片機(jī)3個(gè)串口的收發(fā)通信,把UART1和COM4綁定在一起,把 UART2和 COM6綁定在一起,把UART3和COM8綁定在一起。因?yàn)樘摂M串口COM4和COM5互相通信,所以用COM5發(fā)數(shù)據(jù),可以模擬串口COM4的中斷接收數(shù)據(jù)。配置文件為COM4_OUT.txt,把后綴名改為.ini。內(nèi)容如下[9,10]:

        MODE COM4 115200,0,8,1

        ASSIGN COM4<S1IN> S1OUT

        MODE COM6 115200,0,8,1

        ASSIGN COM6<S2IN> S2OUT

        MODE COM8 115200,0,8,1

        ASSIGN COM8<S3IN> S3OUT

        ASSIGN

        文件的作用是配置COM4的波特率為115 200 bit/s,8個(gè)數(shù)據(jù)位,1個(gè)停止位,無(wú)校驗(yàn)位,把COM4和STM32的第1個(gè)串口綁定在一起,配置COM6的波特率與COM4一樣,綁定COM6和STM32的第2個(gè)串口在一起,依次類(lèi)推。把COM4_OUT.ini文件放在工程文件中,編譯后,就可以利用 RealView MDK軟件和串口調(diào)試軟件進(jìn)行串口的通信仿真測(cè)試。

        3 USART通信發(fā)送、接收數(shù)據(jù)測(cè)試

        3.1 發(fā)送數(shù)據(jù)測(cè)試

        設(shè)置 3個(gè)發(fā)送數(shù)組,uart1_tx[64]、uart2_tx[64]、uart3_tx[64],因?yàn)?COM4 和 COM5 相連接,當(dāng)COM4發(fā)送數(shù)據(jù)時(shí),COM5接收數(shù)據(jù),由圖3可知,當(dāng) COM4發(fā)送數(shù)組 uart1_tx[64]的數(shù)據(jù)時(shí),COM5的接收區(qū)正確顯示數(shù)組uart1_tx[64]的數(shù)據(jù)。COM8和COM9相連,由圖4可知,COM9的接收區(qū)正確顯示數(shù)組 uart3_tx[64]的數(shù)據(jù)[11]。

        uart1_tx[64]={0x11,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x1f,0x3a,0x5b,0x2c,0x2d,0x3e,0x4f,0x4c,0x2d……

        0xaa,0xab,0xac,0xad,0xae,0xaf,0xaf,0xaf};

        uart3_tx[64]={0x31,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x3f,……

        0x8a,0x8b,0x6c,0x6d,0xe7,0xf7,0xa3,0xb5,

        0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xcf,0xcf};

        圖3 COM5接收數(shù)據(jù)測(cè)試

        圖4 COM9接收數(shù)據(jù)測(cè)試

        3.2 接收數(shù)據(jù)測(cè)試

        用 uart1_rx[64]、uart2_rx[64]和 uart3_rx[64]分別模擬COM4、COM6和COM8中斷接收數(shù)據(jù),這時(shí)COM5、COM7和COM9分別發(fā)出數(shù)據(jù)。該實(shí)驗(yàn)用于測(cè)試多串口中斷接收通信的準(zhǔn)確率[12]。

        圖5 uart1_rx接收前后對(duì)比

        圖7 COM5發(fā)送數(shù)據(jù)

        對(duì)比圖5和圖7可知,uart1_rx[64]正確接收到COM5發(fā)出的64個(gè)數(shù)據(jù),表明COM4中斷接收通信正確。對(duì)比圖6和圖8可知,uart2_rx[64]正確接收到COM7發(fā)送的64個(gè)數(shù)據(jù),表明COM6中斷接收通信正確。

        圖8 COM7發(fā)送數(shù)據(jù)

        4 結(jié)束語(yǔ)

        針對(duì)目前廣泛使用的STM32單片機(jī),介紹一種使用VSPD(虛擬串口)結(jié)合串口調(diào)試軟件進(jìn)行多串口收發(fā)通信的仿真測(cè)試方法。論述了虛擬串口和仿真串口的綁定方法,并給出了相應(yīng)模塊的軟件代碼。仿真實(shí)驗(yàn)結(jié)果表明,該方法可以在沒(méi)有硬件平臺(tái)的條件下,精確地進(jìn)行多個(gè)串口發(fā)送和接收通信的測(cè)試,并能得到很好的結(jié)果。

        [1]李 寧.基于MDK的STM32處理器開(kāi)發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.

        [2]喻金錢(qián),喻 斌.STM32F系列ARM Cortex-M3核微控制器開(kāi)發(fā)與應(yīng)用[M].北京:清華大學(xué)出版社,2011.

        [3]劉波文.ARM Cortex-M3應(yīng)用開(kāi)發(fā)實(shí)例詳解[M].北京:電子工業(yè)出版社,2011.

        [4]張愛(ài)民,王云沼.STM32微控制器的可靠串口通信技術(shù)研究[J].單片機(jī)與嵌入式系統(tǒng),2013,10(2):21 -24.

        [5]陳 宮,王三勝,張慶榮,等.基于STM32F103VCT6的微位移控制系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(3):144-147.

        [6]郭 勇,楊 歡.RS(63,45)編譯碼器的設(shè)計(jì)與 FPGA實(shí)現(xiàn)[J].無(wú)線電通信技術(shù),2011,37(2):54 -58.

        [7]勾慧蘭,劉光超.基于STM32的最小系統(tǒng)及串口通信的實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2012,25(9):26-29.

        [8]郭 勇,陳艷玲.多發(fā)多收網(wǎng)絡(luò)仿真器的FPGA實(shí)現(xiàn)及測(cè)試[J].無(wú)線電工程,2013,43(1):4 -6.

        [9]索云天,梁龍學(xué),林沖鋒.基于STM32的多點(diǎn)溫度采集系統(tǒng)設(shè)計(jì)[J].蘭州交通大學(xué)學(xué)報(bào),2013,32(6):61 -63.

        [10]薛震宇.基于虛擬串口的嵌入式系統(tǒng)測(cè)試卡設(shè)計(jì)[J].儀表技術(shù),2008,10(2):54 -58.

        [11]郭 勇,何 軍.基于RS IP核編譯碼器的設(shè)計(jì)與FPGA 實(shí)現(xiàn)[J].無(wú)線電通信技術(shù),2015,41(1):90-93.

        [12]孫林軍,賀鋒濤.基于STM32F103控制液晶的接口實(shí)現(xiàn)[J].電視技術(shù),2013,37(1):77-79.

        猜你喜歡
        接收數(shù)據(jù)發(fā)送數(shù)據(jù)管腳
        移動(dòng)自組網(wǎng)中MAC層協(xié)議研究
        沖激噪聲背景下基于幅度預(yù)處理的測(cè)向新方法*
        低復(fù)雜度多輸入多輸出雷達(dá)目標(biāo)角度估計(jì)方法
        基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點(diǎn)性能分析
        帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
        使用IPSec安全傳輸數(shù)據(jù)
        單片機(jī)模擬串口數(shù)據(jù)接收程序的實(shí)現(xiàn)及優(yōu)化
        基于圖像處理的異型電子元器件管腳偏移誤差檢測(cè)方法研究
        CMOS數(shù)字IC管腳電容的估算與測(cè)量
        HC08芯片JVT測(cè)試方法的探究
        99国产超薄丝袜足j在线播放| 亚洲一品道一区二区三区| 国产一区二区三区av免费| 国产成人亚洲精品无码青| 国产农村妇女毛片精品久久| 免费无码成人av在线播| WWW拍拍拍| 国产风骚主播视频一区二区| 久久在一区二区三区视频免费观看 | 久久中文字幕亚洲综合| 色综合久久蜜芽国产精品| 国产午夜精品一区二区三区| 少妇高潮惨叫久久久久久| 激,情四虎欧美视频图片| 日本女优五十路中文字幕| 精品一区二区三区四区国产| 国产一区二区三区免费观看在线 | 国模冰莲自慰肥美胞极品人体图| 免费无码一区二区三区蜜桃大| 精品亚洲欧美高清不卡高清| 亚洲蜜桃视频在线观看| 国产传媒精品成人自拍| 成人爽a毛片免费视频| 不卡高清av手机在线观看| 亚洲欧美在线视频| 精品一区二区三区老熟女少妇| 插入日本少妇一区二区三区| 国产激情久久久久久熟女老人av| 免费a级毛片无码a| 第九色区Aⅴ天堂| 中文字幕亚洲五月综合婷久狠狠| 天天躁日日躁狠狠躁av麻豆| 日本免费一区二区三区| 粗大挺进尤物人妻一区二区| 国成成人av一区二区三区| 老熟妇乱子交视频一区 | 免费人成视频x8x8| 日韩人妻无码精品二专区| 伊人久久大香线蕉av不变影院| 国产电影无码午夜在线播放| 欧美v亚洲v日韩v最新在线|