本帖最后由 mameng 于 2017-2-15 16:36 编辑
非常感谢社区举办这场活动。下面我将与大家分享过去和STM32共成长的点点滴滴。
ST公司依托最新的ARM Cortex架构开发出STM32 F0~F7系列芯片。彻底颠覆传统的51架构,给电子信息产业插上腾飞翅膀。使得过去8位,16位单片机很难开发或者不能开发的课题编程显示。ST半导体与时俱进,不断提高芯片的ROM,主频,降低功耗。不断丰富的接口,性能。与现代传感器技术,物联网WIFI技术,低功耗蓝牙,ZIGBEE等技术无缝结合,不断丰富的GUI和算法DSP革新.STM32开发板支持ARM Mbed 。大大推动科技进步,丰富人类生活。
我是做VFD技术开发的,下面介绍什么是VFD:
VFD:真空荧光显示器,(Vacuum Fluorescent Display),是从真空电子管发展而来的显示器件,由发射电子的阴极(直热式,统称灯丝)、加速控制电子流的栅极、玻璃基板上印有配线和荧光粉的阳极及玻盖构成。发光原理为:在透明的真空容器中由直热式阴极发射出热电子,经过栅极加速撞击至阳极,利用阳极上的荧光体受电子的撞击而发光,属于自发光显示器件。VFD以发光亮度高、多彩色显示、图案显示灵活、视角大、可靠性高和寿命长、自发光、驱动电压低等优点而被广泛应用在家用电器(微波炉、冰箱、空调、洗衣机、消毒柜等),音响/视频设备(影碟机、功放、录影机等),仪器仪表(加油机、计价器、工业仪表等),POS机(包括税控收银机)、电子衡器、汽车及公共显示装置等各种领域中。上海璞丰光电有限公司可以生产各种的VFD,性能和销量全球最佳。
应用举例: 1)超市收银台;POS机
2)大上海地铁站 客户端显示
3)各种科学企业 如数字万用表啊,机顶盒 就不一一列举了。
STM32项目实践。
1) 先介绍下成果:
驱动点阵VFD比较复杂,需要精确算法。下面先展示下我用STM32开发VFD驱动板的实物图。 核心芯片是STM32 F1家族中一员,这颗IC flash够大,以前没有STM32,只能用单片机+存储芯片构建。成本高,架构复杂。
展示下显示内容:哈哈 不错吧,可以显示字母,韩文,中文。
2)开发之路
首先解决解决是的电源问题。由于VFD驱动需要高压源(正负10~60V不等),电流也较高。 电源电路,我才用STM32 PWM生成了一个小型开断电源。配置定时器4 Time4_Config(void) {
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); // 使能TIMER4时钟
TIM_DeInit(TIM4); // 复位时钟TIM4,恢复到初始状态
TIM_TimeBaseStructure.TIM_Period = 100;
TIM_TimeBaseStructure.TIM_Prescaler = 63; //时钟72分频1MHz
TIM_TimeBaseStructure.TIM_ClockDivision=0x0; // TIM4时钟1分割
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; // 计数方式 向上
/*--定时时间T计算公式
T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK=(35999+1)*(9+1)/72MHz=5ms
--*/ TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //PWM模式2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //正向通道有效
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;//反向通道无效
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCNPolarity_High; //输出极性
//TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; //互补端的极性 // TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; // TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
/*****设置通道1****************/
TIM_OCInitStructure.TIM_Pulse = 1; //占空时间 TIM_OC1Init(TIM4,&TIM_OCInitStructure); //通道1 TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); // TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Disable);
// TIM_ITConfig(TIM4, TIM_IT_CC1 , ENABLE); //开中断
TIM_CtrlPWMOutputs(TIM4,ENABLE); //PWM使能
TIM_Cmd(TIM4,ENABLE);
}
驱动点阵VFD驱动实时扫面每个点阵。STM32驱动一次传输128bit到VFD,动态扫描。根据上位机传来并口或者串口数据,分清是命令还是现实数据。 下图是扫面时序。 开发过程中,最难得是扫描时序的算法实现。本质是STM32控制驱动芯片,形成电场,精确控制电子的流动方向,电子撞击荧光屏才发光。 软件复杂大很高,数组,结构体,共用体,指针,指向指针的指针。内存优化。 发图上限了。意犹未尽。STM32丰富的生态系统,尤其是STM32CubeMX的图形化编程,为广大开发者带来福音。 STM32超强大的性能跑这个复杂软件,用一句古诗结尾:落霞与孤鹜齐飞 秋水共长天一色!
|