Posts Tagged ‘Freescale’
如今在汽车电子软件开发中常常涉及到在线升级,这样的应用中必将会使用Bootloader,一般Bootloader会独立于应用程序,如此则会生成独立的二进制文件。而应用程序也是一个独立的模块,同样也会生成独立的二进制文件。对于Freescale系列MCU则其对应的二进制文件为S19文件。
由于一个嵌入式产品中同时需要烧录两份独立的S19文件该如何实施呢,比较容易实现的便是先将Bootloader烧录至MCU中,然后用在线升级工具,在汽车电子应用中通常为诊断仪。显然,对批量生产来说这是不易被接受的。这就要求将Bootloader和应用程序同时烧录至MCU中,接下来我将介绍如何将两个独立的S19文件合并至一个S19文件中,并通过一次烧录将两个模块都烧录至MCU中。
今天同事小王问我为何在对多通道ADC采样过程中前一通道的数据变化会对后一通道产生影响,这让我也变得很茫然。我在前面两个项目的应用并未出现这种情况,我所用的MCU为Freescale MC9S08DZ60,而他目前所用的是Freescale MC9S08AW16,但是大家都是9S08系列的,这样的外围接口一般都是相同,而且寄存器的定义也是差不多。 为了找出原因我们通过多次试验,查找是否有中断标志未被清除,并且延长相邻两通道的扫描间隔,依然不能奏效。至此只好将我那个项目中的代码找来和他的代码做比较,通过比较发现在ADC的输入频率方面设置不同,在出现问题的程序中采用的是总线频率作为时钟源(20MHz),分频系数为2,这样ADC的实际时钟达到10MHz。而我的那个代码中选择的是外部晶体时钟8MHz作为时钟源,分频系数为8,也就是ADC的实际时钟为1MHz。两者时钟相差10倍。将问题程序中的ADC实际时钟设置为1MHz后,原问题解决。 至此可以认为Freescale 9S08系列ADC采用高输入时钟时会对采样结果产生影响从而造成采样失真,所以在以后的应用中应避免使用较高的输入时钟。 Incoming search terms:9s08 ʱfreescale mc9s08 adc
