在开发STM32程序的时候,总觉得需要买台逻辑分析仪或者是数字示波器。考虑到当前便宜的逻辑分析仪只有24M采样率,对于STM32 CPU随随便便就能跑到48M或者72M来说,局限性太大了。稍微贵点的虽然能达到100M的采样率,但价格已经接近一台普通的示波器。考虑到多通道示波器也可以进行UART,I2C,SPI协议分析,电压测量(当前还有没一台数字万用表),频率计(当前也没有频率计),高达100M的采样率。买台示波器吧。
- 外观
今天终于收到示波器了,稍微试用了一下,非常满意!
- 测试: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的波形:
最后测量的波形为:
可以看到CH2测量的就是PA9 输出的PWM信号,周期为1.280ms, 频率为781Hz, 占空比为75%。
多少米?
2100多,包邮
这个的带宽应该是50M吧,做STM32开发也够用吗?
应该还可以吧,好久没做STM32了