STM32: 买了台普源DS1054Z数字示波器四通道50M带宽

在开发STM32程序的时候,总觉得需要买台逻辑分析仪或者是数字示波器。考虑到当前便宜的逻辑分析仪只有24M采样率,对于STM32 CPU随随便便就能跑到48M或者72M来说,局限性太大了。稍微贵点的虽然能达到100M的采样率,但价格已经接近一台普通的示波器。考虑到多通道示波器也可以进行UART,I2C,SPI协议分析,电压测量(当前还有没一台数字万用表),频率计(当前也没有频率计),高达100M的采样率。买台示波器吧。

  • 外观

今天终于收到示波器了,稍微试用了一下,非常满意!

2016_06_04_ds1054z

  • 测试:STM32F030F4 -使用PWM信号控制LED亮度

下面一段代码是基于ChibiOS/RT实时系统的一段简单代码,使用PWM信号控制LED的亮度:

- PA0:输出频率为390Hz,占空比为50%的方波信号。

- PA9:输出频率为781Hz,占空比为75%的PWM信号。

static void pwmpcb(PWMDriver *pwmp) {
  (void)pwmp;
  palTogglePad(GPIOA, 0);
}

static void pwmc1cb(PWMDriver *pwmp) {
  (void)pwmp;
}

static PWMConfig pwmcfg = {
  100000,
  128,
  pwmpcb,
  {
   {PWM_OUTPUT_DISABLED, NULL},
   {PWM_OUTPUT_ACTIVE_HIGH, pwmc1cb},
   {PWM_OUTPUT_DISABLED, NULL},
   {PWM_OUTPUT_DISABLED, NULL}
  },
  0,
  0
};

static THD_WORKING_AREA(waThread1, 256);
static THD_FUNCTION(Thread1, arg) {
  (void)arg;
  chRegSetThreadName("PWM-ON-PA9");

  /*
   * Initializes the PWM driver 1.
   * GPIOA9 is the PWM output (CH2).
   */
  pwmStart(&PWMD1, &pwmcfg);
  pwmEnablePeriodicNotification(&PWMD1);
  palSetPadMode(GPIOA, 9, PAL_MODE_ALTERNATE(2) | PAL_STM32_OSPEED_HIGHEST);

  /*
   * Starts the PWM channel 2 using 75% duty cycle.
   */
  pwmEnableChannel(&PWMD1, 1, PWM_PERCENTAGE_TO_WIDTH(&PWMD1, 7500));

  while (true) {
    chThdSleepMilliseconds(500);
  }
}

硬件电路如下图:

STM32F407-DISCOVERY通过USB线连接电脑,通过SWD更新STM32F030F4P6固件,同时为其提供电源。而数字示波器的CH1测量的是STM32F030F4P6的PA0的波形,CH2测量的是PA9的波形:

2016_06_04_ds1054z_hardware

最后测量的波形为:

可以看到CH2测量的就是PA9 输出的PWM信号,周期为1.280ms, 频率为781Hz, 占空比为75%。

 

评论

2 Comments on "STM32: 买了台普源DS1054Z数字示波器四通道50M带宽"

提醒我
avatar

lkn
游客
lkn
1 年 10 月 之前

多少米?

wpDiscuz