日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

matlab經典編程例題分析 matlabgui設計實例語言信號( 二 )


2.2串行接口電路
接口電路采用CP2102芯片設計而成 。CP2102集成度高,內置USB2.0全速功能控制器、USB收發(fā)器、晶體振蕩器、EEPROM及異步串行數據總線(UART) 。與其他電平轉接電路的工作原理類似,CP2102通過驅動程序將PC的USB口虛擬成COM口以達到擴展的目的 。電路原理如圖3所示 。

matlab經典編程例題分析 matlabgui設計實例語言信號


3軟件設計
3.1STM32數據傳輸流程
將攝像頭的場中斷信號送入單片機,當單片機捕捉到場中斷信號時,拉高WEN管腳電平,之后整幅圖像的數據就會存入FIFO 。當單片機再次捕捉到場中斷時,表明一幅圖像已經送入FIFO,此時關閉場中斷,拉低WEN電平,防止攝像頭數據再次寫入FIFO 。當上位機發(fā)送握手信號之后,開始讀取FIFO數據到內存緩沖區(qū),根據采集到的圖像做應用處理,并通過串口發(fā)送至上位機,發(fā)送完成后,再次開啟場中斷,當再次捕捉到場中斷時,再次拉高WEN管腳電平,繼續(xù)讓攝像頭數據存入FIFO,完成后單片機等待上位機握手信號,如此循環(huán) 。
3.2串行通信實現(xiàn)
MATLAB軟件的設備控制箱(Instrument Control Toolbox,ICT)提供了對RS232串口通信的正式支持 。首先調用設備控制工具箱中的serial類函數,創(chuàng)建用戶自定義的串口設備對象 。再通過自定義的文件句柄,以文件操作的方式,達到對PC串行口讀寫操作的目的 。
在進行通信之前,需對控制器進行配置,包括設置通信模式(全雙工、半雙工等)和串行口的通信參數(波特率、數據位、停止位等),使通信設備擁有相同的通信模式和串行通信參數 。從通信的建立到結束通信主要包括如下5個基本步驟[6]:
(1)為應用程序創(chuàng)建串口對象 。
(2)連接打開串口 。
(3)設置或者修改串口通信參數 。在能夠有效地進行串口通信前,必須設置正確的串口通信參數 。
(4)從串口讀寫數據 。在前面三個步驟正常完成后,既可以從串口讀數據也可以向串口寫數據,也就是接受或者發(fā)送數據 。實現(xiàn)讀串口功能的函數有多個,根據到達串口數據的類型選擇合適的讀函數 。
(5)關閉串口以及釋放串口對象在工作空間中占用的存儲空間 。
基本步驟中參數的設置需要在回調函數中提前初始化,對于不同的STM32程序,需要找到回調函數相應位置進行修改,較為不便,本文中通過對用戶的選擇值進行讀取,從而初始化串口參數,同時添加了中斷函數以及數據轉換函數 。數據傳輸流程如圖4所示 。

matlab經典編程例題分析 matlabgui設計實例語言信號


首先對用戶設置的參數進行讀取,設置并初始化串口,接著打開串口,發(fā)送握手信號0xff 。當單片機接收到相應的握手信號后,開始圖像傳輸 。當MATLAB接收到終止符 ‘\n’ 時,表明已成功接收一幀圖像,從而觸發(fā)中斷 。由于MATLAB接收到的數據是ASCII碼字符形式,所以需要將從緩沖區(qū)讀取到的數據進行格式轉換:根據用戶設定的像素數M×N,將數據轉換成M×N的整形圖像矩陣 。最后以JPEG圖像格式存儲于工作區(qū)空間中 。具體代碼如下:
a_temp = [0,0,0,0,0];%定義一個像素值臨時存儲矩陣
b_count_flag = 1;
c_count_flag = 0;
data = https://www.jinnalai.com/fenxiang/zeros(M,N);%定義圖像存儲矩陣,M,N為像素數
n = s.BytesAvailable;%讀取緩存區(qū)中當前圖像大小
out = fread(s,n,char);%讀取圖像
out = char(out);
for a = 1:n
if out(a) ~= 13%判斷是否是一幀圖像終止符
if out(a) ~= 10%判斷是否是單個像素終止符
a_temp(b_count_flag) = int16(out(a) – 48);

推薦閱讀