首页 > 评测 > 成功众筹11万美金的开源LA——DSLogic逻辑分析仪评测
成功众筹11万美金的开源LA——DSLogic逻辑分析仪评测
- [导读]
- 在电子世界特别是MCU的世界里,不管你是硬件工程师还是软件工程师,逻辑分析仪(LOGIC ANALYZER,下文简称LA)都是必备工具之一。
测试
漂亮的外观已给我们留下了深刻的印象,然而DSLOGIC的真正魅力来自它强大的逻辑分析功能。
让我们请出本次测评的另一主角,STM32F4-DISCO,让它来见证奇迹的时刻。
为了展示DSLOGIC强大的功能,我们设计了几段代码,让STM32F4-DISCO产生若干数字信号,通过检测捕获到的信号,与原始设计的理想信号进行比较,来展示DSLOGIC的强大功能。
测试的信号主要包括如下几个方面:
- · 电平翻转信号,包含状态及时序信息
- · PWM信号,包含状态及时序信息
- · 通信协议,包含状态、时序、编码信息
STM32F4-DISCO评估板是ST官方推出的供快速开发及建立原型的一块开发板,使用STM32F407VGT6 MCU,最高可以工作于168MHZ频率。板载8M外部晶振,能提供比较准确的外部时钟信号。
关于本次测试中用到的测试代码,后面附录提供了完整的工程信息,具体运行环境及函数库请参考文档内的说明。当然,如果你并不熟悉STM32 MCU程序设计,这些代码看起来也许并没有很大的意义,请遵循见名知义的原则进行理解。
DSLOGIC与STM32F4-DISCO的连接
测评序列一 电平翻转信号测试
本测试中用到了STM32F4-DISCO上的定时器TIM2,系统时钟设置如下,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);
这段代码的作用是产生周期为10US的精确定时,然后产生中断,在ISR例程里翻转电平信号。
DSVIEW设置及捕获的结果如下图,可以看到,捕获的结果非常精确。
测试序列二 PWM信号捕获测试
PWM信号在实现无级调光、电机驱动方面有很广泛的应用。
使用STM32F4-DISCO评估板上TIM1来产生2路互补PWM信号,即TIM1的CH1、CH1N,CH2、CH2N共计4路信号,没有插入死区时间。
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);
将代码下载到开发板上,运行程序。
LA捕获得到的结果如下
TIM1定时器CH1与CH1N的逻辑信号,看到占空比为精确的30%。
TIM1定时器CH2与CH2N的PWM输出信号,使用的是PWM MOD2,占空比为精确的60%。
- 本文系21ic原创,未经许可禁止转载!
网友评论
- 联系人:巧克力娃娃
- 邮箱:board@21ic.com
- 我要投稿
-
欢迎入驻,开放投稿
-
人均百万?英伟达中国员工收入曝光! 2024-08-29
-
《黑神话:悟空》玩家硬盘升级攻略:提升游戏体验,畅享3A大作 2024-08-29
-
数睿数据参加《系统与软件工程 低代码开发平台通用技术要求》国家标准编制 2024-08-29
- NRF52810蓝牙数字耳机找人定制
预算:¥30005天前
- 125KW模块式PCS软硬件外包开发
预算:¥1100000015小时前
- 12V汽车启动电源项目BMS设计
预算:¥50000023小时前
- 数据可视化软件 开发
预算:¥5000023小时前
- PLC项目调试修改
预算:¥100001天前
- 起动电机控制器开发
预算:¥1100001天前