Excel文件格式:xls或xlsx
检查的文件:a.xlsx
删除行后生成的新文件名:anew.xls
删除条件:第二列中值不是“OK”
删除行:不符合条件的所有行
https://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas-bsp.git/
最近,做了一批板子,不像以前的板子一样,工作不正常。
花了将近5个工作日,终于把问题原因找到了:就是这个RC电路造成的。
如下图所示的电容滤波电路,在应用中很常见。
如果电容值选择不合适,会导致问题比较麻烦,特别是系统中还使用了看门狗电路。
下图是使用的系统构成框图。
有三部分:MCU电路,看门狗,模块。
MCU的复位由硬件看门狗提供。
看门狗的喂狗由MCU来完成。
模块的电源由MCU的一个IO口控制,缺省不上电。电路中电阻R0用于给电容提供放电回路。另外,模块的供电电源电路是厂家推荐电路。
基本工作流程: MCU工作后,初始化IO口,然后根据需要设置IO口,打开MOS管,给模块供电。同时,喂狗。
使用中,发现部分板子能够正常工作,大部分板子不能正常工作,用示波器检查看门狗的输出,发现:周期性的输出复位信号,但是该周期又不是看门狗芯片手册中的周期信号,其周期比不喂狗的周期短很多。
上电后,MCU工作。当打开MOS管给模块供电时,瞬时先对电容充电,充满到模块的正常工作的阈值后,模块可以工作。
但是,这个瞬时充电会导致3V3的供电电压有个波动。
由于看门狗的检测电压阈值是2.93V,当这个波动使得3V3跌落至2.93V以下时,看门狗就会输出复位信号,复位MCU。
然后,MCU有重复上面的过程,打开MOS管供电。。。
。。。
看门狗周期输出复位信号。
模块被周期上电。
。。。
减小电容的值(4.7uF -> 0.1uF),从而减少波动,即减小电源电压跌落的幅度。
使得电源跌落幅度维持在看门狗检测的阈值(2.93V)以上,这样,看门狗就不会输出复位,从而保证MCU正常工作了。
以前用同样大小的电容(4.7uF)从来没有发现问题,为什么这批板子就出问题呢?
回头再仔细考虑这个问题,发现并不简单,还有更深层的原因:采购。
这批板子采用的是新购买的电容,从淘宝上购买的,当时也没有要求精度。
测量后发现其值大概是5.9uF左右,与设计的4.7uF(原来是用的大厂的料)差距还是不小的。而原来采用的电容值还是比较靠谱的。
同时,也说明了一个问题:原来设计的4.7uF使系统工作在一个临界状态。
以下两点需要注意:
采购物料时,一定要从大厂采购,同时标明精度,如%1。
设计系统时,一定要留有余量,不要让系统工作在一个临界状态。虽然这种临界状态不好获知。就像电影《疯狂的石头》中,那个来自国外的“高手”在中国购买的登山绳长度就没有考虑余量,所以被坑了。
完成一个项目开发后,有关团队软件开发一些记录。
先尽可能多的了解要处理的任务,再启动编程。
分层设计代码,最好用现成的框架(framework)。
项目规划,模块化设计程序,能更灵活的适应新的需求变化。
一定用版本管理系统,如svn,git等。
先启动任务的主干,暂时抛弃不理解的部分,边做边加不理解的部分。
伪代码编程的使用。
开始编程前,编码格式规范的制定。
- 不使用魔鬼数字,使用具名常量代替。
- 状态变量只在状态机中改变。
- 好的代码、变量、函数命名本身就是注释。
- 等等
如果程序乱飞,有可能是堆栈溢出造成的。
调试方法:
- Error code变量引入。
- 输出错误信息。
- 显示错误信息。
- 等等
团队编码(peer to peer)以及SVN、git、eclipse等工具的使用(标签与分支,checkin,checkout)。
及时沟通、交流。
最后,多读书。推荐这3本:《代码大全》、《人月神话》、《编程珠玑》。
原理图设计基本原则:易于理解。
以下是我的原理图设计检查规范,按照序号顺序检查。
索引 | 项目 | 描述 | 备注 |
---|---|---|---|
1 | 工具 | Orcad Capture | |
2 | 图纸file name | 格式:编号.图纸名称 | |
3 | 图纸size | 公制,A4 | |
4 | 公司Name | xxx | 设置:Verdana, 常规,小六 |
5 | Title | 项目名称,板名-子部分名称 | 设置:Arial, 粗体,小五 |
6 | Document Number | 编号-日期等-图纸号 | 设置:Arial, 常规,小六 |
7 | Rev | X.XX | 设置:Arial, 常规,小六 |
8 | sheet number | X of Y X为当前原理图纸编号。 Y为总原理图纸数。 |
|
9 | 标注Annotate | 放置离页连接(Off-page)和交互页码 | 改版的原理图不要对器件重新编号,否则PCB Layout时会重新计算费用。 |
10 | 原理图上加上必要的标识说明 | Design Note用于原理图说明 CAD Note用于layout说明。 |
Arial, 常规,小六 |
11 | 图分块 | 将电路图按功能分块,尽量不要把多个电路放在一张图上 | |
12 | 开关的使用 | 使用了开关,要注明开关设置及功能分配 | |
13 | 信号命名 | 对于多功能使用,命名中包含各个功能、逻辑、电压、输入输出方向 对于GPIO引脚,标明GPIO port number |
|
14 | 被动元器件 | 如电阻、电容,要包含如精度、封装等信息 | |
15 | 不安装的元器件 | 标明“NM”字样 | |
16 | 0欧姆电阻 | 如是否添加jumper、switcher | |
17 | 连接器 | 添加信号分布说明,避免错误的插入或信号分配 | |
18 | 原理图最后检查 | 器件原理库文件是否正确; 工作原理连接是否正确; 封装名称; 板间连接的引脚分配是否需要翻转; 线缆与板连接引脚分配是否需要翻转; 标号复位后重新标注; 添加离页连接; |
|
19 | FPGA | 根据FPGA走线重新调整线序 | |
20 | 原理图器件库设计 | 器件具有相同名称的电源引脚、GND引脚,要将其属性设置为’Power‘。否则生成网表时会出现错误; 子板设计时,要注意两个插座的名称CN1/CN2,不要搞错。且位置要沿用以前的PCB设计。 |
|
21 | DRC检查 | 原理图完成后,一定要进行设计规则检查(DRC) | |
22 | 再版设计时 | 如果通过实验确定了有些器件(如0R/NM等器件)是否使用,那么可以适当删除这些器件。 |