首頁(yè) > 評(píng)測(cè) > 成功眾籌11萬(wàn)美金的開(kāi)源LA——DSLogic邏輯分析儀評(píng)測(cè)
成功眾籌11萬(wàn)美金的開(kāi)源LA——DSLogic邏輯分析儀評(píng)測(cè)
- [導(dǎo)讀]
- 在電子世界特別是MCU的世界里,不管你是硬件工程師還是軟件工程師,邏輯分析儀(LOGIC ANALYZER,下文簡(jiǎn)稱LA)都是必備工具之一。
測(cè)試
漂亮的外觀已給我們留下了深刻的印象,然而DSLOGIC的真正魅力來(lái)自它強(qiáng)大的邏輯分析功能。
讓我們請(qǐng)出本次測(cè)評(píng)的另一主角,STM32F4-DISCO,讓它來(lái)見(jiàn)證奇跡的時(shí)刻。

為了展示DSLOGIC強(qiáng)大的功能,我們?cè)O(shè)計(jì)了幾段代碼,讓STM32F4-DISCO產(chǎn)生若干數(shù)字信號(hào),通過(guò)檢測(cè)捕獲到的信號(hào),與原始設(shè)計(jì)的理想信號(hào)進(jìn)行比較,來(lái)展示DSLOGIC的強(qiáng)大功能。
測(cè)試的信號(hào)主要包括如下幾個(gè)方面:
- · 電平翻轉(zhuǎn)信號(hào),包含狀態(tài)及時(shí)序信息
- · PWM信號(hào),包含狀態(tài)及時(shí)序信息
- · 通信協(xié)議,包含狀態(tài)、時(shí)序、編碼信息
STM32F4-DISCO評(píng)估板是ST官方推出的供快速開(kāi)發(fā)及建立原型的一塊開(kāi)發(fā)板,使用STM32F407VGT6 MCU,最高可以工作于168MHZ頻率。板載8M外部晶振,能提供比較準(zhǔn)確的外部時(shí)鐘信號(hào)。
關(guān)于本次測(cè)試中用到的測(cè)試代碼,后面附錄提供了完整的工程信息,具體運(yùn)行環(huán)境及函數(shù)庫(kù)請(qǐng)參考文檔內(nèi)的說(shuō)明。當(dāng)然,如果你并不熟悉STM32 MCU程序設(shè)計(jì),這些代碼看起來(lái)也許并沒(méi)有很大的意義,請(qǐng)遵循見(jiàn)名知義的原則進(jìn)行理解。
DSLOGIC與STM32F4-DISCO的連接

測(cè)評(píng)序列一 電平翻轉(zhuǎn)信號(hào)測(cè)試
本測(cè)試中用到了STM32F4-DISCO上的定時(shí)器TIM2,系統(tǒng)時(shí)鐘設(shè)置如下,HCLK為168MHZ,TIM2掛在APB1總線上,APB1的時(shí)鐘總線為42MHZ,為HCLK的4分頻,所以TIM2的工作頻率為84MHZ。
TIM2初始化代碼如下:
htim2.Instance = TIM2;
htim2.Init.Prescaler = 83;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 9;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&htim2);
這段代碼的作用是產(chǎn)生周期為10US的精確定時(shí),然后產(chǎn)生中斷,在ISR例程里翻轉(zhuǎn)電平信號(hào)。
DSVIEW設(shè)置及捕獲的結(jié)果如下圖,可以看到,捕獲的結(jié)果非常精確。

測(cè)試序列二 PWM信號(hào)捕獲測(cè)試
PWM信號(hào)在實(shí)現(xiàn)無(wú)級(jí)調(diào)光、電機(jī)驅(qū)動(dòng)方面有很廣泛的應(yīng)用。
使用STM32F4-DISCO評(píng)估板上TIM1來(lái)產(chǎn)生2路互補(bǔ)PWM信號(hào),即TIM1的CH1、CH1N,CH2、CH2N共計(jì)4路信號(hào),沒(méi)有插入死區(qū)時(shí)間。
TIM1掛在APB2總線上面,所以TIM1的時(shí)鐘信號(hào)頻率為168MHZ。
CH1的占空比設(shè)定為30%,CH2的占空比設(shè)定為60%,PWM頻率均為1KHZ。下面是部分設(shè)定代碼
htim1.Instance = TIM1;
htim1.Init.Prescaler = 167;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 999;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
HAL_TIM_Base_Init(&htim1);
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig);
HAL_TIM_PWM_Init(&htim1);
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
sBreakDeadTimeConfig.DeadTime = 0;
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig);
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 300;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
sConfigOC.OCMode = TIM_OCMODE_PWM2;
sConfigOC.Pulse = 400;
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2);
將代碼下載到開(kāi)發(fā)板上,運(yùn)行程序。
LA捕獲得到的結(jié)果如下

TIM1定時(shí)器CH1與CH1N的邏輯信號(hào),看到占空比為精確的30%。

TIM1定時(shí)器CH2與CH2N的PWM輸出信號(hào),使用的是PWM MOD2,占空比為精確的60%。
-
- 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!
網(wǎng)友評(píng)論
- 聯(lián)系人:巧克力娃娃
- 郵箱:board@21ic.com
- 我要投稿
-
歡迎入駐,開(kāi)放投稿
- NRF52810藍(lán)牙數(shù)字耳機(jī)找人定制
預(yù)算:¥30005天前
- 125KW模塊式PCS軟硬件外包開(kāi)發(fā)
預(yù)算:¥1100000015小時(shí)前
- 12V汽車(chē)啟動(dòng)電源項(xiàng)目BMS設(shè)計(jì)
預(yù)算:¥50000023小時(shí)前
- 數(shù)據(jù)可視化軟件 開(kāi)發(fā)
預(yù)算:¥5000023小時(shí)前
- PLC項(xiàng)目調(diào)試修改
預(yù)算:¥100001天前
- 起動(dòng)電機(jī)控制器開(kāi)發(fā)
預(yù)算:¥1100001天前