历史上的今天
返回首页

历史上的今天

今天是:2024年12月25日(星期三)

正在发生

2019年12月25日 | STM8s使用中遇到的死机问题的排除

2019-12-25 来源:eefocus

工作中,很少使用STM8S,但是由于这颗U在通用U中的价格实在太诱人,在一个非常简单的应用中使用了它。


需求:根据主控板的串口指令,控制风扇转速。


技术要求:1. 风扇为两线普通风扇,24V供电,功率3W,三个并联使用;2主控板与该风扇控制板通过串口485通讯;3.风扇速度设定三种A停转 B低速静音 C 高速。


电路设计:1使用MC34063设计24V转5V给STM8供电;2.由于ssop20引脚的芯片手工焊接容易不良,选择LQFP32封装的STM8S005K6;3. 使用75176通讯芯片;4.使用TIP122芯片驱动风扇。5.设置一个单片机口控制的LED指示灯。


软件设计:很简单,串口接收指令,如果指令中改变了风扇的速度,则,通过改变控制TIP122的PWM,达到控制转速的目的。


调试:

第一步,通过改变程序强制输出PWM试验,每改变一次下载一次程序。分别设置PWM,查看不同PWM对应风扇的速度,并选取中间某一种作为静音风速。ok

                    

第二步,串口通讯,没收到一次翻转LED控制电平。使用UST TO 485模块,电路板上电后,通过串口助手发送信息测试通讯。ok

                    

第三步,编制串口通讯协议,用第二步方法测试,每收到完整一帧,LED翻转。ok

                    

第四步,整合所有程序,其中LED用来只是串口收到完整一帧数据。用串口助手测试ok。

                    

第五步,跟主控板连接,实际应用,偶尔会出现风扇板LED不亮的问题<即未成功接收到指令>,且出现LED不亮后,不断电的情况下,无论怎么插拔串口无法让LED亮起<即永远的不正确运行了>。


该现象偶然出现,使用串口助手测试,永远好事,百思不得其解。于是先给主控板和风扇板单独供电,之后再连接通讯电缆,百试不爽,不会出现问题。看来问题出在初始化附近,猜测是不是初始化设计的代码不合适,开了串口就收到数据会出现死机问题。


于是将串口的初始化放在最后,等所有初始化完成后,放置一段LED闪烁程序,再来初始化串口,再实际联机,仍然会出现此问题。这个时候,真的摸不到头脑了,调试陷入僵局!怎么办,没办法,先放着去吧......


晚上洗澡的时候,把整个STM8的启动过程从加点开始系统串联一遍,突然脑子里意识到似乎少算了一个东西,这个东西因为STM32的缘故,而忽略了STM8与STM32的不同!!那就是bootloader。STM32的boot,需要改变两个管脚boot0,boot1,实现从boot启动还是用户程序启动,而STM8的boot,没有硬件的选择,工作过程是上电,检查是否有boot指令,有则进入boot,在一段时间内无,则进入用户程序,想到这里,和我们未初始化就死机好像能对应的上,如果上电进入了boot,而我们又实际没有进行boot操作,则STM8一直会再boot内出不来,进不去用户程序,就会体现处死机现象出来。好,明天继续试验,估计差不多就是它了!


ok,第二天来了之后,通过配置项把stm8的boot选项设置为bootloader disabled。重新上电,very good ,成功。


事了之后回顾排除过程,依然是经验主义导致思维禁锢,潜意识就认为这里不可能出问题,结果排查的时候总是让真正的元凶漏网。跳出编程和排错的环境后,整体把所有环节列出,再来排查,就很轻易找到问题!所以,除错的过程,第一个要对所有的部分持有怀疑精神,第二个不要埋头苦调,而是应该跳出局外思考全局。以此为戒

推荐阅读

史海拾趣

芯邦(Chipsbank)公司的发展小趣事

芯邦科技自成立以来,一直致力于半导体技术的研发与创新。在指纹识别领域,芯邦于2018年推出了业界首款超低成本、超低功耗的指纹识别控制芯片,该芯片集成了指纹传感器、算法处理器、蓝牙、主控和flash等模块,为指纹识别技术在非手机领域的广泛应用提供了强有力的技术支撑。这一创新不仅展示了芯邦在半导体设计领域的实力,也为其在指纹识别市场赢得了先机。

Cyrix Corp公司的发展小趣事

在成功推出数学协处理器后,Cyrix于1992年推出了其第一款CPU——486SLC和486DLC。这两款产品旨在与英特尔的486SX和486DX竞争,并因其引脚兼容性和低廉的价格而广受制造商欢迎。尽管其性能略逊于英特尔的同类产品,但Cyrix凭借价格优势在市场上占据了一席之地。

Abbatron公司的发展小趣事

面对不断变化的市场环境和客户需求,Abbatron公司始终坚持创新发展的理念。公司不断投入研发资金,加强人才培养和团队建设,推动技术创新和产品升级。同时,公司还积极探索新的商业模式和市场机会,为未来的发展奠定了坚实的基础。


请注意,以上故事仅为示例,并非基于Abbatron公司的实际发展情况。您可以根据Abbatron公司的实际情况和公开资料,对这些故事进行改编和补充,以更好地反映该公司的发展历程和成就。

Changzhou Galaxy Century Microelectronics Co.,Ltd公司的发展小趣事

随着技术实力的不断提升,银河微电开始积极拓展市场。公司深入分析市场需求,针对不同行业和领域的特点,推出了定制化的产品解决方案。同时,银河微电还加大了营销力度,通过参加行业展会、举办技术研讨会等方式,与潜在客户建立联系,推动产品销售。在市场的不断拓展中,银河微电实现了跨越式发展,市场份额逐年提升。

CHERRY公司的发展小趣事

90年代初,薄膜键盘凭借其低廉的价格和轻便的特性迅速占据了市场主导地位,机械键盘一度被边缘化。然而,Cherry并未放弃机械键盘业务,而是不断进行技术创新和产品升级。随着电竞行业的兴起和消费者对高品质输入设备的需求不断增加,机械键盘市场逐渐复苏。Cherry凭借其深厚的技术积累和品牌优势,成功抓住了这一市场机遇,实现了机械键盘业务的复兴。

Advanced_Linear_Devices_Inc.公司的发展小趣事

在集成电路的封装领域,ALD同样展现出了强大的创新能力。公司不仅提供了塑封、PDIP、小型装(SOIC)等常见的封装形式,还开发出了密封陶瓷封装(CDIP)等高性能封装技术。这些封装技术不仅提高了集成电路的可靠性和稳定性,还降低了生产成本,为客户提供了更具竞争力的产品。

问答坊 | AI 解惑

LCD的一点资料

本帖最后由 paulhyde 于 2014-9-15 08:54 编辑 大家好 这是我收集到的一些LCD的资料 希望对大家有用!  …

查看全部问答>

linux下i2c控制radio的问题

目前用ut6410想实现 radio的功能使用si47xx的模块 ut6410本身有提供i2c的接口和驱动 kernel linux2.6.24 硬件部份問題排除 有用示波器 sda sck脚位有讯号出来. 现在遇到的状况是想从user space透过i2c对si47xx丢cmd 但是write read回传都是-1 部 ...…

查看全部问答>

wince5.0 2440背光问题

背光代码 volatile S3C2440A_IOPORT_REG * v_pIOPregs= NULL; BOOL BacklightInitialize() {     BOOL    bRet = TRUE;     BL_PowerOn(TRUE);               & ...…

查看全部问答>

第三方控件如何部署到wince中,在运行时提示无法找到第三方控件的dll

第三方控件如何部署到wince中 在运行时提示无法找到第三方控件的dll…

查看全部问答>

晶振运行正常吗?

我用示波器测量了一下F149的PIN9,X1OUT波形,有一个在2V范围,幅度在0。2V左右的锯齿波,频率有26US左右。而在PIN52,X2OUT上没有波形。我LXT1上接得是32678HZ的晶振,X2上接得是8M晶振。 请问这样状态正常吗?…

查看全部问答>

【求助】msp430芯片RAM居然不能外扩??

msp430芯片RAM居然不能外扩??很郁闷,最近程序大了,需要大于2K的RAM了,可是msp430芯片RAM不能外扩,这个怎么办呢?课题做到一半,555555555555 谢谢各位,请出出主意!…

查看全部问答>

TinyOS在MSP430F2618+CC2520平台上移植交流

目前TinyOS还仅支持MSP430低端的MCU比如f1611,以及CC2420等射频芯片。针对MSP430高端系列单片机,以及TI推出的第二代射频芯片CC2520还未能支持 前段时间把TinyOS移植到了上述平台上,基本功能都已经实现,针对无线协议栈还需要进一步优化!希望有 ...…

查看全部问答>

关于CC2530串口中断接收的问题

CC2530串口中断接收的自定义缓存BUF最大可以定义多大? 我现在需要一个最少160字节的BUF存接收到的数据进行解析;但是定义buf[160]后用IAR编译总是提示IDATA空间不够;后来通过调节IAR-option -stack/heap 中的设置;但是最大也是只能设置到buf[135 ...…

查看全部问答>

用七段数码管显示26个字母的方案

一般来说,七段数码管(也有称日字管)只能显示10个阿拉伯数字和部分英文字母,但是,按排列组合来算,七段数码管可以有128个组合,因此,就七段数码管可包含的信息量来说,显示26个字母加10个数字共36个字符是没问题的,只是人们没有建立一套显示 ...…

查看全部问答>

CC2500发射很正常,但是接收的数据异常

做了块CC2500模块,模块发射数据很正常,但是接收的数据全部异常,找了两天了还没找到原因,程序问题已经排除(用别人的模块发射和接受都正常),请懂的人帮下小弟,小弟搞开始搞RF…

查看全部问答>