首頁 > 評測 > 成功眾籌11萬美金的開源LA——DSLogic邏輯分析儀評測

成功眾籌11萬美金的開源LA——DSLogic邏輯分析儀評測

  • 作者:netlhx
  • 來源:21ic
  • [導讀]
  • 在電子世界特別是MCU的世界里,不管你是硬件工程師還是軟件工程師,邏輯分析儀(LOGIC ANALYZER,下文簡稱LA)都是必備工具之一。

測試

漂亮的外觀已給我們留下了深刻的印象,然而DSLOGIC的真正魅力來自它強大的邏輯分析功能。

讓我們請出本次測評的另一主角,STM32F4-DISCO,讓它來見證奇跡的時刻。

秀外慧中12843.png

為了展示DSLOGIC強大的功能,我們設計了幾段代碼,讓STM32F4-DISCO產(chǎn)生若干數(shù)字信號,通過檢測捕獲到的信號,與原始設計的理想信號進行比較,來展示DSLOGIC的強大功能。

測試的信號主要包括如下幾個方面:

  • · 電平翻轉(zhuǎn)信號,包含狀態(tài)及時序信息
  • · PWM信號,包含狀態(tài)及時序信息
  • · 通信協(xié)議,包含狀態(tài)、時序、編碼信息

STM32F4-DISCO評估板是ST官方推出的供快速開發(fā)及建立原型的一塊開發(fā)板,使用STM32F407VGT6 MCU,最高可以工作于168MHZ頻率。板載8M外部晶振,能提供比較準確的外部時鐘信號。

關于本次測試中用到的測試代碼,后面附錄提供了完整的工程信息,具體運行環(huán)境及函數(shù)庫請參考文檔內(nèi)的說明。當然,如果你并不熟悉STM32 MCU程序設計,這些代碼看起來也許并沒有很大的意義,請遵循見名知義的原則進行理解。

DSLOGIC與STM32F4-DISCO的連接

秀外慧中13242.png

測評序列一 電平翻轉(zhuǎn)信號測試

本測試中用到了STM32F4-DISCO上的定時器TIM2,系統(tǒng)時鐘設置如下,HCLK為168MHZ,TIM2掛在APB1總線上,APB1的時鐘總線為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的精確定時,然后產(chǎn)生中斷,在ISR例程里翻轉(zhuǎn)電平信號。

DSVIEW設置及捕獲的結(jié)果如下圖,可以看到,捕獲的結(jié)果非常精確。

秀外慧中13670.png

測試序列二 PWM信號捕獲測試

PWM信號在實現(xiàn)無級調(diào)光、電機驅(qū)動方面有很廣泛的應用。

使用STM32F4-DISCO評估板上TIM1來產(chǎn)生2路互補PWM信號,即TIM1的CH1、CH1N,CH2、CH2N共計4路信號,沒有插入死區(qū)時間。

TIM1掛在APB2總線上面,所以TIM1的時鐘信號頻率為168MHZ。

CH1的占空比設定為30%,CH2的占空比設定為60%,PWM頻率均為1KHZ。下面是部分設定代碼

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);

將代碼下載到開發(fā)板上,運行程序。

LA捕獲得到的結(jié)果如下

秀外慧中15446.png

TIM1定時器CH1與CH1N的邏輯信號,看到占空比為精確的30%。

秀外慧中15485.png

TIM1定時器CH2與CH2N的PWM輸出信號,使用的是PWM MOD2,占空比為精確的60%。

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論