Keil虚拟仿真逻辑仪及SaleaeLogic16抓取波形进行协议分析
Keil虛擬仿真邏輯儀及SaleaeLogic16進行波形分析
- 一、Keil虛擬仿真
- 1、端口參數設置
- 2、觀察結果并分析
- 二、SaleaeLogic16邏輯儀抓取與分析
- 1、Logic的安裝
- 2、邏輯分析儀連線
- 2、邏輯分析儀采集設置
- 3、結果顯示與分析
- 三、實驗總結
- 四、參考文獻
一、Keil虛擬仿真
連接上個工程,對與上個工程的串口通信、LED電平分析
1、端口參數設置
(1)仿真運行的設置在上篇博客中已經修改過了
(2)仿真邏輯儀端口參數設置
①、點擊Debug運行調試后選擇邏輯分析儀
②、參數設置
點擊Setup添加自己需要觀察的端口
添加自己的觀察端口設置:GPIOX_ODR.XXX為A~C,XX為0-15 ODR為輸出,IDR為輸入。
③、點擊Run全速運行
2、觀察結果并分析
(1)仿真結果
其展開效果圖:
包含起始位“0”、數據位、校驗位“1”、終止位“1”、空閑位.
其具體分析,其參考博客:
串口串行總線協議
(2)結果分析
第一個為串口,根據工程設置得時延周期為2s;
第二個為PB8,代碼設置的周期為1sLED進行點亮—熄滅,低電平亮。
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);OSTimeDlyHMSM(0, 0, 1, 0,OS_OPT_TIME_HMSM_STRICT,&err); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);OSTimeDlyHMSM(0, 0, 1, 0,OS_OPT_TIME_HMSM_STRICT,&err);第三個為PA5,代碼設置的周期為3sLED進行點亮—熄滅,低電平亮。
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);OSTimeDlyHMSM(0, 0, 3, 0,OS_OPT_TIME_HMSM_STRICT,&err);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);OSTimeDlyHMSM(0, 0, 3, 0,OS_OPT_TIME_HMSM_STRICT,&err);所以代碼設置與仿真結果幾乎一致。
二、SaleaeLogic16邏輯儀抓取與分析
1、Logic的安裝
網盤:SALEAELOGIC16安裝包
提取碼:luha
安裝包提供了SaleaeLogic16邏輯儀的多個版本,可以下去與自己電腦匹配的,并且含有詳細的使用教程。下載過程也非常簡單 一路next!
2、邏輯分析儀連線
LED(PB8) ——>CH0
LED(PA5)——>CH1
USART1(PA9)——>CH2
GND——>GND
2、邏輯分析儀采集設置
(1)選擇模式通道
默認的是8通道,我們可以設置為16通道的
(2)采樣速率設置
Saleae Logic采用了動態復用的數據處理技術,采樣率乘以采樣通道數是占用的 USB 總帶寬,對于不需要采集的通道可以屏蔽掉,這樣還能提高采樣頻率??梢赃x擇不同的采樣速率,在設置了不同通道之后,最高的采樣率也對應變化。
(3)選擇信號觀察
點擊右方Analyzers它包括了多種協議,比如:I2C、SPI
循環添加三個
(4)點擊Start Simulation進行抓取通道波形
3、結果顯示與分析
點擊Analyzers serial給每一個通道修改相應的名字以便于觀察
右下角顯示串口發送數據,有些字符出現錯誤。
(1)LED(PB8)波形分析
CH0通道,代碼設置的是在1s周期內0.5s閃爍0.5s熄滅
實際周期與設置周期幾乎一致,電壓波形也一致。
CH1通道,代碼設置的是在3s周期內0.5s閃爍2.5s熄滅
0.5s低電平亮,2.5s高電平熄滅。實際周期與設置周期幾乎一致,電壓波形幅度一致。
(2)串口(USART1)波形分析
2s一個周期進行發送一次串口通信。實際周期與設置周期幾乎一致。
串口通信協議的具體波形分析:
UART 使用的是異步串行通信。異步通信以一個字符為傳輸單位,通信中兩個字符間的時間間隔多少是不固定的,然而在同一個字符中的兩個相鄰位間的時間間隔是固定的。
串口通信協議數據傳送時,每一個字符為 10 位(1 個起始位,7 個數據位,1 個校驗位,1 個結束位)具體傳輸格式:
起始位—先發出一個邏輯“ 0 ”信號,表示傳輸字符的開始; 數據位—可以是 5~8 位邏輯“ 0 ”或“ 1 ”;
校驗位—數據位加上這一位后,使得“ 1 ”的位數應為偶數(偶校驗)或奇數(奇校驗);
停止位—它是一個字符數據的結束標志。可以是 1位、1.5 位、2 位的高電平;
空閑位—處于邏輯“ 1 ”狀態,表示當前線路上沒有資料傳送。
從邏輯分析儀的波形可以看到,每一個字符為10 位,有一個邏輯“ 0 ”的起始位,7 位數據位,1 為奇偶校驗位,1 位高電平停止位,1 為處于邏輯“ 1”的空閑位。其中的數據位:1101000 即十六進制數 0x68。
三、實驗總結
本次實驗就是簡單使用keil仿真邏輯儀與真實的SaleaeLogic16邏輯儀器進行抓取波形然后觀察波形進行分析,這樣可以檢測你的代碼是否有錯,邏輯分析有助于我們去檢測工程結果并且在邏輯儀器中的串口協議類型有多種,我們可以學習每種串口協議解析,明白它的工作過程。本次實驗還算成功,每個波形的實際觀測、仿真觀測與代碼幾乎一致,有點瑕疵的是在邏輯儀器觀測時有些地方出現誤碼情況。
四、參考文獻
【1】https://blog.csdn.net/m0_58892312/article/details/121627183?spm=1001.2014.3001.5501
【2】串口通信
【3】串口總線串行協議
總結
以上是生活随笔為你收集整理的Keil虚拟仿真逻辑仪及SaleaeLogic16抓取波形进行协议分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OA系统----考勤管理----JDBC
- 下一篇: 基于MATLAB的车牌识别系统研究