今天是十一假期的第二天加班,第一天加班是10月1号。由于东风S15电动座椅控制器项目周期太短,加上前期样件装车过程中出现一些问题,从而决心将软件重构,本次重构主要为了消除多任务切换时函数重入的一些隐患。在重构过程中发现其实函数中用到的全局变量如果只被局限在一个任务中应该没有重入的风险。所以决定将原先由多个任务来完成的功能合并到一个任务中。重构后程序中只有三个任务,一个用来实现诊断服务,一个用来实现基本功能,还有一个用来做一些EEPROM烧写擦除等比较占用时间的工作。另外对一些故障保护的处理放在中断中去实现,从而达到及时的故障保护效果。本次重构后的软件在继电器输出短路保护上做的还是比较出色的。
Mentor Graphics VNA 是个很强大的CAN总线设计工具。其通过基于信号的时基算法和基于报文的时基算法可以很好的分析网络负载与报文延时。利用自动消息打包和自动ID分配对于整车网络设计确实非常先进,并能对网络进行最好的优化。就网络的整体架构和自动优化方面貌似比Vector的工具要来的强大,但是在网络模拟和仿真方面就不像Vector的CANoe那么方便了。如果能将两家的优点集中到一起那必将是一个非常棒的工具。 通过一天的培训使我了解了整车网络设计的流程,以及通过科学方法和先进工具所带来的巨大好处——规避网络隐患、减轻测试工作量,从而能够极大地提高整车的可靠性。
今天在考虑产品批量进行程序烧录时,受阻于板子上使用的UJA1065.因为UJA1065上电工作后会启动硬件看门狗,而我的Freescale mc9s08dz60是用UJA1065的来供电的,这样一来会导致单片机无法正常供电。此时有一种方法就是在UJA1065加电之前先给其TEST引脚上加+12V的电压,从而禁止看门狗,让UJA1065能够持续地给MCU供电,且不产生复位。但是在批量生产时,这种操作方式肯定是极为不便的。因此想到跳过UJA1065直接通过BDM接口给单片机供电(也可认为是用USB供电吧),我使用的调试下载工具是P&E Multilink,虽然其引脚上定义有VCC,但是通过测量分析可以知道该引脚是用来测量目标板上的VCC的,而非给目标板供电的VCC。 若想使用该引脚来供电,势必还得从USB上取电,至此我决定拆开P&E Multilink。打开外壳后直接找到5V电源,再用导线将输出接口的第6脚和电源连到一起。弄完后插上USB电缆,在未接目标板时我们发现P&E Multilink的黄色指示灯已经点亮。呵呵,不用担心。将目标板接上后进行程序烧录,提示MCU复位脚为低,一看原理图原来是复位脚和UJA1065的RESET脚连在一起导致复位脚一直处于低电平,断开后重新进行程序下载,非常顺利。至此已完全实现了用P&E Multilink给目标板供电的功能。
众所周知整车网络开发一般都采用V型开发流程,该流程的开发过程大致包括:功能需求建立(网络需求的定义),网络框架的定义(网络规范的定义),节点零部件ECU的定义,软硬件的集成仿真,模块测试、验证,以及整车网络的测试、验证。 针对ECU的网络开发主要分为硬件开发,软件开发和网络测试三大部分。 硬件系统开发主要包括: ECU硬件开发,主要确定通信速率,终端电阻,晶体容差,滤波电容等物理层相关参数; 网络测试辅助…
1.概述
为了在不同的计算机平台之间传输程序代码和数据,摩托罗拉将程序和数据文件以一种可打印的格式(ASCII格式)编码成s格式文件。s格式文件是 Freescale推荐使用的标准文件传送格式。编译完成之后,Freescale CodeWarrior编译器将在bin文件夹下自动生成“*.a…
1. 为什么要对产品做电磁兼容设计?
答:满足产品功能要求、减少调试时间,使产品满足电磁兼容标准的要求,使产品不会对系统中的其它设备产生电磁干扰。
2. 对产品做电磁兼容设计可以从哪几个方面进行?
答:电路设计(包括器件选择)、软件设计、线路板…
0欧姆电阻主要用在以下几种场合:
模拟地和数字地单点接地
只要是地,最终都要接到一起,然后入大地。如果不接在一起就是”浮地”,存在压差,容易积累电荷,造成静电。地是参考0电位,所有电压都是参考地得出的,地的标准要一致,故各种地应短接在一起。人们认为…
引言
采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所…
今天在写程序时,感到程序中的逻辑判断挺多的,一个函数里的判断太多后自己前后翻来翻去自己搞得都有点晕。所以就想画出流程图来。但是为了这事来画流程图却觉得有点麻烦,这就想到有没有通过通过代码来生成流程图的工具。没想到网上还真有这么些软件。首先搜到的就是CSDN上一位朋友提到的AutoFlowchart。
由于要在电子显示屏上增加遥控功能,所以涉及到红外遥控的解码问题,红外接收采用的是TFM 5380,红外接收头输出脚接10k电阻上拉到+5V,用100P电容接到GND。用示波器观察输出信号,效果很好基本上红外编码能够吻合了。红外接收头的输出接到LPC2318的22脚,即P0.2/CAP0.0,此脚可用作定时器0的捕获输入,这样看来硬件估计是没有什么问题的啦。 程序开始将该端口选择为捕获输入,即 PINSEL0 = (PINSEL0 & ~(0×20)) | 0×20; 接着对设置定时器0中断 IRQEnable(); VICIntSelect = 0×00000000; VICVectCntl0 = 0×20 | 0×04; VICVectAddr0 = (uint32)Timer0_CapInt; VICIntEnable = 1 << 4; 随后对定时器0进行初始化, T0PR = 99; //对Fpclk 100分频 T0CCR = 0×05; //上升沿触发,允许中断 T0TC = 0; //定时器0清零 T0TCR = 1; //启用定时器0 这样对其进行初始化应该不会有任何问题的。在中断响应程序中根据T0TC的值来判断同步位和code中的0,1。同时对T0TC进行清零并清除中断标志。 进入调试状态后在中断响应程序内设置断点,发现程序跑起来后不断地产生中断,此时并未用遥控器进行操作。回头检查程序并未发现什么问题,又将例程拿来看看做了一下比较,除了所有的定时器和端口不一样外并无什么不同,因此排除程序的问题。再来看看硬件吧,将示波器接到LPC2318的22脚观察波形也没有看到任何边沿的跳变。问题出来了,貌似软件和硬件都没有问题啊,什么原因呢?通过不停的捣腾最后发现是多接了一个上拉电阻的原因,原来是CAP0.0脚上接了两个上拉电阻其中有一个是原先用作I2C时加的上拉,原本是想采用外部中断来接红外的,后来I2C没有上,觉得还用用捕获来做红外方便些,因此弄根线飞了过来。拿烙铁把电阻弄下来后定时器0的捕获中断便正常了,呵呵。
