2.1 DG128简介(芯片选型)
MC9S12DG128单片机使用16位HCS12内核,支持断点功能和背景调试模式,具有128KB FLASH EEPROM、8KB RAM、2KB EEPROM存储器,核心运算频率高达50MHz,总线速度可达25MHz,具有丰富的I/O接口,包括29路独立数字I/O接口,20路带中断唤醒功能的数字I/O接口,内部集成3个CAN协议控制器MSCAN12模块,具有可编程的8个PWM通道和8个输入捕捉/输出比较通道,具有两个串行异步通讯接口SCI、两个同步串行外设接口SPI、Byteflight、IIC总线以及SAE J1850 Class B数据通信网络接口。
如此丰富的接口和其本身良好的控制特性使MC9S12DG128作为模型车核心控制单元是非常不错的选择。由前面的输入和输出分析表不难得出本智能车系统需要用到8路AD转换通道、4路PWM脉宽调制通道、SCI收发通道、BDM调试接口以及几个通用I/O借口,MC9S12DG128完全满足这样的要求。
2.2 硬件设计框图
整体的硬件框图如图2.1所示,主要包括DG128单片机及其支撑模块;外部输入部分有电源输入模块、拨码开关和光电传感检测模块;输出模块有蜂鸣器、直流电机驱动模块和转向舵机控制模块;此外还有BDM写入调试模块和SCI串行通信模块。其中按键输入比较简单,不再叙述,其他模块将在接下来的章节中重点介绍。

图2.1 硬件系统结构框图
2.3 硬件子模块分析设计
各硬件子模块电路设计的基本思想是在保证电路基本原理正确的基础上,优化电路设计,使电路更加稳定可靠,同时还要考虑到电路的可扩展性和可测试性。在设计每个具体模块时可参考其典型应用电路,以便设计出适合本系统的方案。此外,要考虑到元器件是否容易购买,价格如何,根据这些情况从中选择合适的器件。在电路中最好设计几种并存的解决方案,在实际使用中,选择效果最好的一种。最后,为了便于电路的调试,在设计电路板时,可以引出某些特殊的接口供硬件测试使用。
本智能模型车系统由电源模块、单片机模块、直流电机驱动模块、转向伺服电机驱动模块、通讯及调试模块和灰度传感器模块等组成。其中转向伺服电机由DG128单片机直接驱动,其型号为SANWA,红外传感器模块将在介绍传感器安装时讲述。以下分别从不同模块的角度阐述本系统的其他各模块的硬件设计。
(1)电源电路部分
电源模块由7.2V电池供电,通过滤波及电压转换电路可提供稳定的7.2V、6V、5V直流电源供主控芯片和各种外围接口设备使用。

图2.2 7.2V供电电源原理图 图2.3 6V供电电源原理图
系统的总电源通过Swich开关进行主控,由于直流动力电机的最大驱动电压大于7.2V,所以需要1路可控的7.2V电源直接给直流电机供电。如图2.2所示,各电路元器件参数可以保证电源相对稳定,7.2V电池电源通过POWER_J1的1、2插针与电路相连。
6V直流电源转换模块提供了两种可选电路,即通过L7806转换和使7.2V过两个二极管的压降而产生6V直流电的电路,在实际使用中可通过跳线选择两者中较好的方案。如图2.3所示,若跳线1、2相连即选择了二极管降压的方式,若跳线2、3相连则选择了L7806转换方式。
5V直流电源直接给主控芯片供电,考虑到驱动电机可能会引起的电压瞬间下降的现象,为使整个系统正常工作,本设计采用了低压降电压调节器LM2940。如图2.4所示,该电路可保持输出电源电压5V稳定。

图2.4 5V供电电源原理图
(2)MC9S12DG128单片机模块
该模块提供MC9S12DG128工作时的基本支撑电路,主要包括复位电路、电源滤波电路、晶振电路和BDM接口电路等。
如图2.5所示为芯片硬件复位电路。系统正常工作时RESET引脚通过4.7K电阻接到电源正极(这里设为5V电源供电),所以应为高电平。若按下复位按钮RST,则RESET脚通过100Ω接地,为低电平,芯片复位。

图2.5 所示为芯片硬件复位电路 图2.6 电源滤波电路
单片机系统要求整个系统的电源电压为5V的高质量的直流稳压电源,系统电源电路如图2.6所示,接在电源与地之间的电容C1、C2为滤波电容,其作用是减少不稳定外电源对系统的干扰,增强系统工作的稳定性。

图2.7 芯片晶振电路
DG128的晶振电路可以使用有源晶振,也可以使用无源晶振,通过跳线冒来选择。如图2.7所示,若跳线1、2相连即选择了有源晶振,若跳线2、3相连则选择了无源晶振。

图2.8 BDM接口电路
如图2.8所示为BDM调试头电路。BDM (Background Debug Mode)即背景调试模式,是很常用的调试标准,S12系列芯片都采用BDM方式进行调试。BDM接口提供方口USB头和6芯排线头两种接线方式,如图2.9和图2.10所示,其各引的定义见表2.1。
BDM调试方式为开发人员提供了底层的调试手段,开发人员可以通过它初次向目标板下载程序,同时也可以通过写入器对目标板MCU的Flash进行写入、擦除等操作。用户也可以通过它进行应用程序的下载和在线更新,在线动态调试和编程,读取CPU各个寄存器的内容,单片机内部资源的配置与修复,程序的加密处理等操作,而这些仅仅是通过向CPU发送几个简单的指令就可以实现,显然这样使得调试软件的编写变得非常简单,通常自己就可以编写。而BDM硬件调试头的设计也是非常简单的,关键只要满足通信时序关系和电平转换要求。
目前常用的Freescale标准的BDM调试头如图2.9所示,但由于引脚Vdd和GND在BDM调试头两端,操作中容易插反导致目标芯片烧坏。所以有些用户对BDM调试头引脚作了重新定义。如图2.0所示为清华大学自制的写入器中BDM调试头引脚的连接标准,图中引脚1的NC和BKGD可以由跳线选择连接,按照这种接法可以防止反插。

由于BDM调试头部分只用到了四个引脚,所以我们使用了如图2.11所示的B型USB连接头来代替BDM调试头,这样连接不仅使用更方便,而且可以有效的防止反插。

(3) 直流电机驱动电路
直流电机驱动电路采用飞思卡尔半导体公司的半桥式驱动器MC33886芯片,其工作电压在5-40V之间,导通电阻为120毫欧姆,具有短路保护、欠压保护和过温保护等功能。直流电机驱动需单片机的2路PWM信号,由于DG128共有8路8位的PWM通道,且还可以合成4路16位的PWM使用,又由于PWM0、PWM1、PWM4和PWM5共用同一个时钟源,为便于对电机的联合控制,MC33886采用了PWM1和PWM5合成通道。 MC33886只能使用2路8位的PWM信号。值得注意的是MC33886具有制动的功能,在行驶过程中可以通过单片机的控制使直流电机紧急制动。如图2.12所示。
(4) 外围设备接口电路

图2.12 MC33886直流电机驱动电路
外围设备接口电路主要包括串行通讯接口、伺服电机接口、AD采样接口、蜂鸣器接口以及其他扩展接口。串行通讯接口可以接计算机的串口,以方便程序的调试。伺服电机接口提供6V驱动电源并通过PWM6和 PWM7控制伺服电机的转动。AD采样接口引出了8路AD采样口。AD采样接口在以后章节进行描述,蜂鸣器接口太过简单,这里不再赘叙。下面主要介绍SCI串行通讯接口。
几乎所有的微控制器和PC机都提供串行接口,使用电子工业协会推荐的RS-232-C 标准,这是很常用的串行数据传输总线标准。它早期被用于计算机和终端之间通过电话线和MODEM 进行远距离的数据传输,随着微型计算机和微控制器的发展,不仅远距离,近距离也采用该通信方式。在近距离通信系统中,不再使用电话线和MODEM,而直接进行端到端的连接。RS-232-C 标准采用的接口是9芯或25芯的D型插头,25芯接口现已基本不用,9芯D型插头如图2.13所示,其各引脚定义如表2.2所示。

表2.2 9芯D型插头引脚功能说明

MC9S12DG128芯片共有两个串口SCI1和SCI2,要完成最基本的串行通信功能,实际上只需要RXD、TXD 和GND 即可,但由于RS-232-C 标准所定义的高低电平信号与芯片定义的高低电平信号完全不同,MC9S12DG128芯片标准逻辑“1”对应2V~3.3V电平,标准逻辑“0”对应0V~0.4V电平,而RS-232-C标准采用负逻辑方式,标准逻辑“1”对应-5V~-15V电平,标准逻辑“0”对应+5V~+15V电平,显然,两者间要进行通信必须经过信号电平的转换。电平转换器不仅可以由晶体管分立元件构成,也可以直接使用集成电路。目前使用较多的是MAX232芯片,该芯片只需+5V供电电源实现电平转换,因此本设计采用了MAX232芯片。图2-14给出了MAX232的各个引脚,其基本含义如表2.3所示。

表2-3 MAX232芯片输入输出引脚分类与基本接法

MAX232的各个引脚含义简要说明如下:
VCC(16脚):正电源端,一般接+5V
GND(15脚):接地
VS+(2脚):VS+=2Vcc-1.5V
VS-(6脚):VS-=-2Vcc-1.5V
C2+、C2-(4、5脚):通常接1μF的电解电容
C1+、C1-(1、3脚):通常接1μF的电解电容
利用MAX232将TTL电平转换为RS-232电平的电路接法见图2.15。
2.4 元器件清单
本设计中的元件详细清单如表2.4所示。
表2.4 元器件清单

表2.4 元器件清单(续)

2.5 MCU引脚汇总列表
如下表2.5 为MCU引脚汇总表。
表2.5 MCU引脚汇总表

2.6 硬件各模块头文件
下表2.6列出了硬件各模块的头文件定义,各头文件分别给出了各自的硬件接口定义和外用子函数声明,上层功能性子程序可直接调用这些子函数,而无需关心具体硬件过程。


