历史上的今天
返回首页

历史上的今天

今天是:2024年11月09日(星期六)

正在发生

2019年11月09日 | 关于STM32驱动点阵的问题整理及科研思维小酌

2019-11-09 来源:eefocus

之前用51单片机成功将5块级联的16*16点阵成功驱动,闲来无事,沉积内功,用STM32驱动这几个点阵,本觉易事,没想到点阵豆豆竟三天耍脾气,不配合。一筹莫展之际,和别人聊微信,顺手掐断了豆豆的VCC,GND,惊呼哇塞,预期效果。真是无心插柳柳成荫。正预深入测试下去,停电,兴奋若狂,迫不及待,莫非上帝知道问题要揭晓了,急了,连断电的招都使。停电两小时,由缺VCC可正常显示,加VCC反而不亮,已推断出问题范围。入夏的夜,和豆豆玩到10点半,终把豆豆抱。


硬件配置:MCU :STM32,工作电压3.3V;  驱动芯片74HC595; 16*16点阵:五块      


问题一:.点阵上电不亮,掉电正常显示


答:74hc595工作电压选择出现问题,输入电平与工作电平不匹配。


74HC595是CMOS芯片,工作电源电压是2V~ 6V。如果MCU的VCC是5V供电,则74可以是5V供电;若MCU是3.3V供电,则74也选3.3V,当74选5V时,因为3.3V的MCU输出高电平最大为3.3V,而此时74要求的输入高电平最小为3.5V,很明显MCU引脚达不到,会出现逻辑混乱,达不到输出效果,点阵不亮。


故障排除,将74HC595的VCC由5V接3.3V电平,因为MCU的VCC为3.3V。


问题二:.点阵屏的74H595不接VCC也正常显示,只是亮度低一些


答:74HC595等的VCC与GND之间有滤波电容,当MCU工作时,可以通过IO口传输数据时为这些电容充电,又IC引脚一般设计有箝位二极管,可阻碍电流流出,电容放电为74等IC供电,故可以正常显示,但亮度不够。该原因类似于单总线技术中的寄生电源供电方式。建议IC加独立VCC,按规矩来。


至于因时序,刷新频率导致的问题,按照相关手册要求解决即可。


花了三天悠哉悠哉的找不出问题,方向一对,三个小时,相关问题全部迎刃而解。再一次,体会到科研的绝妙之处,体会到长时间解决问题的快乐与兴奋。


(1)提出问题远比解决问题更有意义,提出一个高质量的问题,代表一个高质量的结果。虽然解决问题的过程很复杂,但解决问题总是1后面的0。科研,许多时候,不是难在解决问题上,而是非预期结果出现后,找不到原因。有时靠碰巧解决问题,有时靠现象反推问题。所有的努力都是为了在一堆猜想中,一个一个排除,一个一个具体。寻找问题的过程是漫长与繁琐的,但也因此当问题找准,系统性前进的时候,那种喜悦与快乐才是醉人的。


(2)动手实践中,应该培养忙找问题的经验。电路实验中,经常会因串扰而出现不确定性,这若干种不确定性中,包含着我们需要的那一种结果。所以,我们可以经常有意无意的用手弹弹信号线,上上电,断断电,只要我们期待的效果出现一次,就可以排除许多种猜想,加快问题解决。


人生而有涯,而学海无涯,谦虚务实,严谨乐观,胆大心细,孜孜问道。



推荐阅读

史海拾趣

ELMOS公司的发展小趣事

ELMOS公司自创立以来,就专注于汽车电子领域的发展。多年来,公司不断积累在模拟混合信号集成电路设计方面的专业知识,形成了深厚的技术底蕴。这种长期的技术积累使得ELMOS在汽车和工业物理接口领域拥有广泛的产品线,特别是在供电和DC/DC方面积累了丰富的经验。这种技术积累不仅为ELMOS赢得了市场的认可,也为公司的持续发展奠定了坚实的基础。

CMOS Sensor Inc公司的发展小趣事

随着技术的不断发展,CMOS Sensor Inc公司不断推出创新产品。其中,线型CMOS图像传感器的研发成功,为公司带来了重要的突破。这一产品具有更高的分辨率和更低的噪声,为工业质量保证、商业成像等领域提供了更优质的解决方案。此后,公司又不断对产品进行升级和优化,以满足不同客户的需求。

CHERRY公司的发展小趣事

1953年,一位名叫Walter Lorain CHERRY的德国年轻人在美国创立了Cherry公司,地点选在了一家餐厅的地下室。当时,Cherry的主要业务是生产微动开关,这种开关被广泛应用于各种电子设备中。Cherry的微动开关因其高品质和可靠性而赢得了市场的广泛认可,逐渐成为了行业内的佼佼者。

Exclara Inc公司的发展小趣事

随着技术的不断成熟和产品的日益完善,Exclara开始将目光投向全球市场。公司积极拓展海外市场,通过参加国际展会、与当地合作伙伴建立战略合作关系等方式,不断提升品牌知名度和市场份额。同时,公司也在全球范围内建立了完善的销售网络和售后服务体系,以确保客户能够享受到优质的产品和服务。

BNS Solutions公司的发展小趣事

在电子行业的早期阶段,BNS Solutions公司凭借其敏锐的市场洞察力和技术创新能力,迅速崭露头角。公司团队针对当时市场上电子产品性能不足、用户体验不佳的问题,研发出了一系列高效能、易操作的电子设备。这些产品不仅满足了消费者对电子设备的基本需求,还通过独特的设计和功能赢得了市场的广泛认可。随着产品的热销,BNS Solutions公司的知名度逐渐提升,为后续的发展奠定了坚实的基础。

歌普(GEPU)公司的发展小趣事

面对全球化的趋势,BNS Solutions公司积极实施全球化战略,将业务拓展到全球范围。公司在多个国家和地区设立了分支机构,加强了与国际市场的联系和合作。同时,公司还注重可持续发展,积极推广环保理念和技术应用。通过采用环保材料和节能技术,公司降低了产品对环境的影响,实现了经济效益和社会效益的双赢。这些举措使得BNS Solutions公司在全球范围内赢得了广泛的赞誉和尊重。

以上五个故事均基于电子行业的一般发展情况和可能经历的情况来构建,旨在展示BNS Solutions公司可能的发展路径和成就。请注意,这些故事并不代表BNS Solutions公司的真实历史,仅作为示例供您参考。如需了解BNS Solutions公司的真实发展历程,建议查阅相关文献资料或公司官方网站。

问答坊 | AI 解惑

51单片机C语言控制与应用教程

51单片机C语言控制与应用教程,很好的,初学者用…

查看全部问答>

难题请教,51从外部flash的FFFD地址启动?怎么做啊

我有一颗芯片 ip210w由 8051内核和一个MAC组成 芯片手册有一句话:CPU starts up and runs instructions at address 0xFFFD of external Flash. 就是这句话把我郁闷了好久,怎么烧程序都不行。CPU都跑不起来。 请教高手如何让我的CPU跑起来,谢 ...…

查看全部问答>

程序执行时间问题

问个VC问题  (应用程序通过pci采集板读数据) 应用程序的WM_TIMER在电脑刚开机(开机2,3分钟左右)会被阻塞吗? 我有段定时器(100ms)的执行程序,我想知道这段程序的执行时间。开始time1=GetTickCount(),末尾time=GetTickCount()-ti ...…

查看全部问答>

不能捕捉到CArchiveException 请各路英雄指教

大家好, 最近我遇到一个问题,在我的应用程序中(MFC工程), 里面有一句代码,是对文件读写的,如果这儿有一个空文件(里面什么内容也没有), 但我们又对它进行了读操作(调用CArchive >>进行读出),那么这儿一定会有个 CArchiveException异 ...…

查看全部问答>

如何把调试用的串口改为普通的串口来使用

各位仁兄: 1:我是在wince6.0 开发板是友坚的S5PC100 2: 由于项目需要想把调试串口改为普通的串口来使用 3:请问各位大侠指教 4:我自己把SMDKC100.bat里面的 set BSP_DEBUGPORT=SERIAL_UART0   隐去,把UART0加载,编译可以通过 ...…

查看全部问答>

关于uClinux mtd map 文件的 地址问题

在分区的时候  假如我的FLASH有  2M 我希望分成三部分               1920KB    64KB   64KB 我的map文件如下: static struct mtd_partition fir ...…

查看全部问答>

EVC4.0编译后生成的EXE在目标板上执行 出错 乱码

1、开始我使用的共享MFC库出错,后来我使用的静态MFC库,不出错了,,,但我在PB里已经向目标板加上了MFC组件,不知道为什么出错 2、我生成的EXE文件里如果有中文会显示乱码,不如应该如何解决 先谢谢了…

查看全部问答>

设置P5.2为输入, 接VCC, P5DIR &= 0xFB;后,P5IN是0x00!怎么办?

也就是说P5.2在输入模式情况下,并且接了VCC, 应该在P5IN变量和P5.2对应的比特位上读入1才对啊? 我用电压表量过,P5.2引脚上的电压就是VCC高电平,可是为啥P5IN会是0x00呢? 除了是芯片坏了,还有别的情况吗?那位大侠碰到过这种事情?…

查看全部问答>

今天调试板子,发现不法连接

今天调试板子,发现无法连接。第一个想到的是电源电压(焊DSP之前有测过电压都是对的)。 把所有的电容测了,发现RTS管脚处,用了一个RC 滤波电路。C上电压变成2.75V。去掉电容,DSP可连接。 将原本的4.7K,电阻换小后,电压上抬到3V左右。DSP工 ...…

查看全部问答>

大家好,有个问题,请教一下

我想用泰勒级数来逼近正弦函数sinx,然后在ccs里编程如下,可是出现了错误,搞了很久,不知道怎么解决,希望得到帮助。。。 while(1) {   double  x,y,A,B,C,D,E;   double  i;   for(i=0 ...…

查看全部问答>