基于VDK的網(wǎng)絡(luò)音頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
5 基于VDK的應(yīng)用程序設(shè)計(jì)
本系統(tǒng)中的網(wǎng)絡(luò)通信模塊主要完成的任務(wù)是網(wǎng)絡(luò)芯片初始化及接收應(yīng)急信號,接收上位機(jī)指令幀并對其進(jìn)行解析,同時(shí)將選擇板卡返回指令幀發(fā)送給上位機(jī)。
分析上述任務(wù),可將應(yīng)用程序分為三個(gè)線程:其中一個(gè)Boot Thread:lwip_sysboot_threadtype的作用是上電后對系統(tǒng)進(jìn)行初始化并創(chuàng)建各個(gè)線程,然后激活Echo_Server_ThreadType線程,完成與上位機(jī)的客戶端建立Socket連接;其次,初始化線程級別最高;連接成功后,由Echo_Servet_ThreadType線程激活Echo Worker_ThreadType線程,Echo_Worker_ThreadTrype線程的任務(wù)為通過recv()函數(shù)接收上位機(jī)指令幀并對其進(jìn)行功能解析,然后根據(jù)幀功能碼判斷應(yīng)該發(fā)送給上位機(jī)的幀,準(zhǔn)備好上傳數(shù)據(jù),再通過send()函數(shù)將上報(bào)幀上傳給上位機(jī)并顯示最終處理結(jié)果。本文引用地址:http://www.ex-cimer.com/article/161034.htm
圖2所示是基于VDK的系統(tǒng)線程軟件工作流程。系統(tǒng)上電或復(fù)位后,DSP自啟動(dòng)后,VDK啟動(dòng)線程lwip_sysboor_threadtype開始運(yùn)行。在線程lwip_sysboot_threadtype中進(jìn)行板級初始化和Lwip協(xié)議棧和網(wǎng)口初始化,接下來再創(chuàng)建所需要線程。圖3所示是VDK線程的通信工作流程圖。
芯片初始化模塊主要完成以下幾項(xiàng)工作:
(1)系統(tǒng)時(shí)鐘速率配置:包括初始化PLL,由PLL_LOCKCNT設(shè)置穩(wěn)定時(shí)間,PLL_CTL控制寄存器設(shè)置VCO與CLKIN之間的倍數(shù)14,通過設(shè)置PLL_DIV決定SCLK及CCLK的時(shí)鐘,使能PLL中斷;
(2)同步串口(SPI)配置:如果SPI是作為主啟用,SPI使用SPI標(biāo)志寄存器(SPI FLG)使多達(dá)7個(gè)通用可編程標(biāo)志引腳用作從選擇端。并設(shè)置為0X02,SPISEL1使能。FIO_DIR中設(shè)置PF10為輸入,其余均為輸出;
(3)CS8420初始化:即初始化CS8420,則SPICTL設(shè)置字長為16位,當(dāng)發(fā)送數(shù)據(jù)寫入發(fā)送數(shù)據(jù)緩沖器時(shí),SPI使能。設(shè)置為主模式。SPI BAUD為0x18,波特率大概為512b/s;
(4)激活Echo_Server_ThreadType線程;
(5)由線程銷毀模塊完成對初始化線程的銷毀。
連接成功后,再由Echo_Server_ThreadType線程激活Echo_Worker_ThreadType線程。Echo_Worker_ThreadType線程的任務(wù)是通過recv()函數(shù)接收上位機(jī)指令幀并對其進(jìn)行功能解析,根據(jù)幀功能碼判斷應(yīng)該發(fā)送給上位機(jī)的幀,準(zhǔn)備好上傳數(shù)據(jù),再通過send()函數(shù)將上報(bào)幀上傳給上位機(jī)并顯示最終處理結(jié)果。
圖4所示是系統(tǒng)控制板卡與上位機(jī)之間的通信結(jié)果。
6 結(jié)語
本文以BF533為核心處理器,提出了一種基于VDK的網(wǎng)絡(luò)音頻通信系統(tǒng)的設(shè)計(jì)方案,同時(shí)通過實(shí)際項(xiàng)目的操作對該方案的可行性進(jìn)行了驗(yàn)證。經(jīng)過測試證明,該系統(tǒng)可以提高傳輸效率,而且實(shí)時(shí)性好,性能穩(wěn)定。
tcp/ip相關(guān)文章:tcp/ip是什么
評論