最近负责一个项目,用到stm32f4的一款高性能芯片。研发过程中遇到一个很诡异的现象,前前后后折腾了两三天,最后才搞定。由于是新手,经验不足,排故过程很纠结~~
现象如下:
采用JLINK下载程序后,断电让其上电重新启动,发现有时可以正常运行,有时候无法正常运行,大约每两、三次就有一次无法正常上电启动。
2.通过JLINK调试程序,每次均正常运行。太诡异了!
发现问题后开始定位原因。首先考虑是BOOT启动出问题了,stm32f4启动方式分三种:User FLash、SystemFlash和EmbeddedSRAM,通过BOOT0和BOOT1管脚配置。程序正常运行时从User FLash启动,如果BOOT0和BOOT1配置不正确,会导致无法正常运行;而通过JLINK调试程序,程序直接下载到SRAM中运行,不存在此问题。于是,通过万用表测BOOT0和BOOT1管脚电平,都是低电平,没问题!于是,基本排除此原因了。
其次,考虑电源供电不稳定问题。通过万用表测量各个模块电压,发现电压均正常值。那也有可能是系统上电时刻,由于负载变化,导致电压跳变,之后电压又稳定了,所以测量不出来。通过示波器捕捉电压变化,未发现明显的异常跳变。通过万用表测电流为88mA,并不大。初步认为不是电源供电问题导致。
然后,考虑是否是由于复位信号不稳定的原因。板子采用了外置复位芯片,上电后会产生复位信号,此提供给处理器、蓝牙等模块。由于JLINK调试时会自动产生一个复位信号,让系统恢复默认状态,然后程序开始运行,因此调试下程序应该都能正常启动。但是如果程序断电后上电启动,如果复位信号过短或者不稳定,有可能导致无法正常启动了。完美的解释!哈哈,那一瞬间仿佛找到问题所在了。程序无法正常启动时,RESET信号手动接地(给一个低电平脉冲),处理器都开始工作了!这进一步验证了我的推断。于是锁定是复位信号不稳定导致的,开始折腾复位信号,通过示波器观察、隔离复位信号、加滤波电容、换复位芯片等方法进行定位。最后发现复位信号感觉也没有什么问题,真是怪了!纠结~~~~
后来有人建议是不是晶振不稳定。但是,晶振不稳定,调试程序时也应该出现同样现象啊,道理上解释不通啊。无解啊~~~
后来求助同事,他是电子硬件方面的专家。我们几人仔细琢磨了板子的原理图和实验现象后,他突然问你的BOOT0怎么没有接电阻到公共地啊?我说接了吧,之前还用万用表量过电平,是低电平。他说不对啊,就是没接地啊。我才猛地想起来,板子是另外一个同事焊的,交到我手里时说板子已经仔细检查过了,没问题。当时,由于项目紧张,就没有再仔细核实。我再仔细一看,确实没接地,也就是悬空状态!而之前测电压是低电平,有可能是由于下拉电阻的作用。崩溃了!这么粗心,居然没有自己检查。赶紧焊电阻接地,重新上电,发现正常了。测试了三四十次,都是正常的。看来这次真正找到原因了,就是由于BOOT0悬空而导致的。BOOT0悬空时,其状态是不确定的,会导致程序无法从UserFlash中正常启动,就可能出现时好时不好的现象了!哎,原来是这样。终于长嘘了一口气。
问题终于解决了,但是还是有一点无法理解:既然是BOOT0悬空引起的,但是为什么将处理器的RESET信号手动接地(给一个低电平脉冲),处理器又正常运行了?难道是因为再次复位上电重启时,恰好BOOT0又被识别为低电平?RESET信号影响了BOOT0的状态?看来还需要进一步做实验,才能解答此疑惑。
上一篇:STM32的时钟系统RCC详细整理
下一篇: STM32 USART串口DMA 接收和发送的源码详解!
推荐阅读
史海拾趣
Anaren公司是一家全球领先的无线通信和微波技术解决方案提供商,以下是该公司的发展故事:
公司成立与初期阶段:Anaren公司成立于1967年,总部位于美国纽约州Syracuse市。公司最初是由Hugh Hair和Carl Gerst Jr.两位工程师创立的,致力于提供微波电子元器件和无线通信解决方案。在创立初期,Anaren专注于为国防和航空航天行业提供高性能的微波组件和系统。
技术创新与产品推出:随着技术的发展和市场需求的变化,Anaren公司不断进行技术创新,并积极推出新产品。公司开发了一系列创新的微波电子元器件和射频无线通信模块,包括功率分配器、耦合器、滤波器、射频放大器等产品。这些产品广泛应用于卫星通信、雷达系统、航空航天等领域。
市场拓展与业务扩张:随着无线通信技术的普及和应用范围的扩大,Anaren公司开始加大对商业市场的开拓力度。公司不断拓展产品应用领域,涉足消费电子、通信基础设施、汽车电子等领域,并与全球领先的电子设备制造商和系统集成商合作,提供定制化的解决方案和服务。
收购与合并:为了加强市场竞争力和拓展业务范围,Anaren公司通过收购和合并不断扩大规模和实力。公司先后收购了多家与自身业务相关的企业,包括Unicircuit Inc、ELCOM Technologies Inc和MS Kennedy Corp等。这些收购使Anaren公司在技术、产品和市场方面实现了快速增长和巩固。
持续发展与未来展望:作为一家历史悠久的电子行业企业,Anaren公司将继续致力于技术创新和产品优化,满足不断变化的市场需求。公司将继续加强研发投入,拓展产品应用领域,提升市场竞争力。在未来,Anaren公司将秉承“创新、质量、服务”的经营理念,持续为客户提供高品质、高性能的无线通信和微波技术解决方案,实现共同发展和成功。
GSN Electronics公司在电子行业中的发展可以追溯到多个方面,以下是五个关于其发展的故事,每个故事均基于事实进行描述:
1. 创立与初期发展
故事背景:GSN Electronics(深圳)有限公司成立于2012年11月27日,由GSN Electronics (Hong Kong) Limited全资控股,注册资本为100万元人民币,后增至当前规模。公司自成立以来,便专注于电子连接器和线束的生产经营,以及电子产品和电子零件的研发、批发、进出口及相关配套业务。初期,GSN Electronics凭借其专业技术和敏锐的市场洞察力,在深圳这一中国重要的电子产业聚集地迅速站稳脚跟。
发展亮点:公司通过不断优化产品结构和提升技术实力,逐步在电子行业中建立了自己的品牌影响力。
2. 技术创新与专利积累
故事背景:GSN Electronics深知技术创新是企业发展的核心驱动力。因此,公司不断加大研发投入,致力于新产品的开发和旧产品的升级换代。截至目前,公司已获得多项实用新型专利授权,如耐折弯的微型连接器、方便插入的电连接器、端口防水防尘结构的连接器等,这些专利技术的应用极大地提升了产品的竞争力和市场占有率。
发展亮点:技术创新和专利积累不仅巩固了GSN Electronics在电子连接器领域的领先地位,还为其拓展新市场、开发新客户提供了有力支持。
3. 市场拓展与国际认证
故事背景:随着公司实力的不断增强,GSN Electronics开始积极拓展国内外市场。公司通过参加各类行业展会、建立海外销售网络等方式,不断提升品牌知名度和市场占有率。同时,公司还积极申请并获得了多项国际认证,如IATF 16949和ISO 9001等,这些认证不仅证明了公司的产品质量和管理水平达到了国际标准,还为其进入高端市场提供了有力保障。
发展亮点:市场拓展和国际认证的成功实施,使GSN Electronics在电子行业中树立了良好的企业形象和品牌形象。
4. 团队建设与企业文化
故事背景:GSN Electronics深知人才是企业发展的根本。因此,公司一直注重团队建设和企业文化建设。公司拥有一支高素质的研发团队和销售团队,他们不仅具备丰富的专业知识和实践经验,还具备强烈的创新意识和团队精神。同时,公司还积极营造开放、包容、创新的企业文化氛围,鼓励员工勇于尝试、敢于创新。
DC Components公司成立于1992年,总部位于台湾台中市。公司自创立之初,就专注于二极管桥式整流器的研发与生产。在创立初期,公司面临着资金、技术和市场的诸多挑战。然而,凭借对技术的执着追求和对市场的敏锐洞察,DC Components公司逐渐在二极管桥式整流器领域树立了专业形象,为未来的发展奠定了坚实基础。
在电子行业的发展过程中,Aimtec公司积极寻求与行业领军企业的合作机会。通过与这些企业的合作,Aimtec不仅获得了更多的市场资源和技术支持,还提升了自身的技术水平和创新能力。同时,这些合作也为Aimtec带来了更多的商业机会和发展空间,实现了双方的共赢发展。
随着业务的不断拓展,GHI Electronics开始实施全球化战略。公司积极寻求与全球合作伙伴的合作机会,共同开拓新市场。同时,GHI Electronics还在多个国家和地区设立了分支机构或研发中心,以便更好地服务当地客户并快速响应市场需求。这种全球化战略布局不仅增强了GHI Electronics的市场竞争力,也为其带来了更多的商业机会和发展空间。
在日本市场,Ettinger同样取得了巨大的成功。Ettinger Flagship Store位于东京银座,其年营业额甚至即将赶超Ettinger在英国伦敦的销售业绩。这一成就不仅展示了Ettinger在日本市场的受欢迎程度,也体现了品牌在全球范围内的强大竞争力。Ettinger通过不断拓展海外市场,进一步巩固了其作为皮具奢侈品牌的地位。
使用噪声抖动提高ADC的无杂散动态范围 无杂散动态范围(SFDR)是RMS信号幅度与最大杂散频谱分量RMS值的比率。在高速ADC中,使SFDR达到最大的两个基本限制是前端放大器和采样保持电路产生的失真,以及由于ADC编码器部分的传递函数的非线性产生的失真。 ...… 查看全部问答∨ |
|
参考网上的例子对6410的MFC初始化,但取不到输入缓冲区的地址,希望能找到示例代码, 或者大家帮忙指点一下,先谢谢了。 函数SsbSipH264EncodeGetInBuf(mfcEncodeHandle, frame_size)返回值不正确。 代码如下: BOOL InitMFCEncode(){ ...… 查看全部问答∨ |
|
摘要:随着半导体工艺的不断发展,数字信号的速率也愈来愈高,Gbps以上的高速信号已经随处可见。面对高速设计的新领域,硬件设计工程师们需要改变传统的设计理念,他们需要以更加超前的思维去思考自己将要设计的信号的质量,或许在制定产品设计方案 ...… 查看全部问答∨ |
1、我的程序用DMA1传输,怎么判断ADC结束? 是在 void DMA1_Channel1_IRQHandler(void) { } 这个函数里判断么? 该怎么做? 2、ADC的转换周期对精度有什么影响?… 查看全部问答∨ |
参考BeagleBone 原理图,去掉cpld,单ft2232 制作xds100V2,烧写beaglebone第五版程序, 制作成功。 所有原理图及烧写文件均在附件中。 … 查看全部问答∨ |
|
第一次用这个板子,现在想读一个32位SPI通信的陀螺仪的值,由于板子上的SPI口被SD卡和OLED占用了,想用IO口来模拟SPI。 谁有例程工程文件啊,跪求!官方的例程似乎不怎么好用。。。… 查看全部问答∨ |
职位名称: 嵌入式LINUX软件工程师工作地点:广州市荔湾区 薪酬面议 工作职责:1. 基于TI OMAP-L138芯片的嵌入式LINUX软件开发设计;2. 基于QT的图形界面开发设计;3. 嵌入式Linux驱动设计开发; 任职要求:1. 本科或者以上学历,计算机 ...… 查看全部问答∨ |