OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2817|回复: 12

小批量的产品出现的一点bug

[复制链接]

12

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2015-1-8
在线时间
48 小时
发表于 2017-10-24 15:20:45 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 abcxuyangyang 于 2017-10-24 19:16 编辑

由于产品需求:主控芯片选用STM32F051  无线模块选用si4432,作为从机,通信方式使用是spi模式;
问题描述:在测试的过程中,作为从机STM32F051 si4432收到数据之后,会让一个不搭噶的单片机引脚PC12输出数据发生反转(PC12初始化输出为1),通信协议里不包含任何会让PC12输出状态改变的数据;

最后调试:经过各种验证和在线仿真,首先确定了,PC12引脚不带任何复用功能,其次,PC12我初始化之后,让其输出为高,之后再不做任何改变,程序运行一段时间之后,PC12引脚状态发生改变。再次确定作为从机,si4432接收的数据里不带任何修改PC12状态的数据;
其次经过在线仿真发现,单片机除了PC12受影响,其他引脚都不会受到影响;


结果:抓头挠腮,想了好久,还是想不到解决方法,唯一的方法就是不用PC12,方法可行。但,这个问题还是没有解决,放在心里一直不舒服,所以想咨询下,用过SI4432的有没有遇到过这个问题的,顺便问下,keil软件给内存设置断点的教程,有的可以分享下吗,

0U2UNBL$0{9YM3XBHQ1Z[OA.png
无标题.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-10-24 15:43:17 | 显示全部楼层
还有这种事情.莫不是硬件连接到一起去了,或者单片机坏了.不然,不至于有这个样子的问题.
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2017-10-24 16:07:45 | 显示全部楼层
看一下PC12是芯片内部哪个外设有用到,是不是该外设的状态变化导致引脚翻转
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1818
金钱
1818
注册时间
2011-10-9
在线时间
231 小时
发表于 2017-10-24 16:43:20 | 显示全部楼层
引脚状态改变 不是自己 就是外部   先把外部断开 看他还变不变  然后一段一段屏蔽功能  很容易就找出来了
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-10-24 17:26:36 | 显示全部楼层
一个一个功能屏蔽来找问题,看下在什么地方有操作PC12这个管脚,断开外部的硬件连接,将PC12接上示波器,然后硬件仿真硬件跑起来,一步一步下去看下在什么地方PC12电平发生了翻转,这样找原因比较好点,先排除外部硬件的干扰
回复

使用道具 举报

12

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2015-1-8
在线时间
48 小时
 楼主| 发表于 2017-10-24 19:17:19 | 显示全部楼层
操作系统 发表于 2017-10-24 15:43
还有这种事情.莫不是硬件连接到一起去了,或者单片机坏了.不然,不至于有这个样子的问题.

多次确定了,硬件没有连接
回复

使用道具 举报

12

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2015-1-8
在线时间
48 小时
 楼主| 发表于 2017-10-24 19:28:06 | 显示全部楼层
八度空间 发表于 2017-10-24 17:26
一个一个功能屏蔽来找问题,看下在什么地方有操作PC12这个管脚,断开外部的硬件连接,将PC12接上示波器,然 ...

之前就是按照你所说的方式使用在线调试,一步步来定位,看看到底在哪里让PC12的 ODR相应位清零了 ,调试发现每次ODR清零,都是在刚进入定时器中断时候。所以不好定位了,比较尴尬
回复

使用道具 举报

12

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2015-1-8
在线时间
48 小时
 楼主| 发表于 2017-10-24 19:31:46 | 显示全部楼层
小温 发表于 2017-10-24 16:07
看一下PC12是芯片内部哪个外设有用到,是不是该外设的状态变化导致引脚翻转

发现这个问题时候,也考虑了会不会是引脚复用问题,甚至只给他初始化,之后不再改变,程序跑起一段时候之后,还是只会影响PC12这个引脚,其他的IO口还是不会改变
回复

使用道具 举报

12

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2015-1-8
在线时间
48 小时
 楼主| 发表于 2017-10-24 19:32:54 | 显示全部楼层
yklstudent 发表于 2017-10-24 15:43
设置断点还需要教程????自己根据需要随意设置就好了,不过也要看你的仿真/调试器,可能断点不能设置的 ...

想看下keil内存的断点设置教程,来查看下数据寄存器的数值在哪里变化的
回复

使用道具 举报

12

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2015-1-8
在线时间
48 小时
 楼主| 发表于 2017-10-24 19:36:50 | 显示全部楼层
simms01 发表于 2017-10-24 16:43
引脚状态改变 不是自己 就是外部   先把外部断开 看他还变不变  然后一段一段屏蔽功能  很容易就找出来了

开始时候,只给PC12引脚初始化,之后不再人为的改变这个引脚状态,一步步来定位,看看到底在哪里让PC12的 ODR相应位清零了 ,调试发现每次ODR清零,都是在刚进入定时器中断时候。所以不好定位了,比较尴尬。奇怪的 是,在验证其他引脚时候,都不会改变,唯独PC12,比较尴尬,在想会不会在PCB走线的被干扰了,或是制版的问题
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-10-24 21:13:50 | 显示全部楼层
PCB直线干扰也不会让PC12一直保持着一个状态.干扰只是会非常短的时间出现其它的电平信号.
估计是你的代码有问题.操作IO的寄存器不一定是ODR.还有BRR,BSRR.多查一下代码.还有就是指针用错了.也会出现乱操作IO的现象.
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2017-10-24 22:20:45 | 显示全部楼层
换个引脚用
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1818
金钱
1818
注册时间
2011-10-9
在线时间
231 小时
发表于 2017-10-25 09:53:21 | 显示全部楼层
abcxuyangyang 发表于 2017-10-24 19:36
开始时候,只给PC12引脚初始化,之后不再人为的改变这个引脚状态,一步步来定位,看看到底在哪里让PC12的 ...

把中断里面的程序清干净  只抹除中断标志位  再看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-23 23:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表