在开发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了
1
1