摘要:为了在ARM处理器几乎垄断国内32位处理器市场的形势下给国内工程师多一个选择方向并能在资料匮乏的情况下很快掌握日立sH3系列32位处理器开发出实用的产品,在此用日立SH3系列的HD6417708S型号单片机建立了SH3系列单片机的最小系统,并利用单片机的串口模块做了串口通信实验,实验结果实现了串口通信的预期结果,说明建立的SH3系列单片机的最小系统运行正常可以采信。
关键词:日立SH3;SH3单片机;单片机最小系统;32位处理器
0 引言
SH系列是日本日立公司推出的32位高档的、RISC型单片机系列,到现在为止,已经推出了6种类型的单片机系列:基本型的SH1,改进型的SH2,低功耗的SH3,增强型的SH4,以及和DSP结合的SH2-DSP和SH3-DSP。
SH3系列是低功耗型SH处理器,高性能RISC结构,在时钟133 MHz时,性能可以达到173 MIPS。在2.25 V工作时,功耗为400 mW。SH3的SH7709,其消耗功率每瓦运行的指令数达到315 MIPS,能源利用效率很高。它内部集成了32位乘法器、4路8 KB CHACHE、存储器管理单元MMU、一些通用内部控制模块和外部接口模块。其性能可以与ARM公司的ARM9系列处理器相媲美,在世界的嵌入式领域占有很大的份额,但是由于SH3系列单片机在国内可参考的资料有限,技术支持不到位等种种原因致使ARM系列几乎独霸国内32位处理器市场。SH3系列处理器无法在国内发挥它强大的功能。本文介绍了如何用HD6417708S型号SH3单片机从硬件到软件从无到有建立起SH3系列单片机最小系统,并用系统的串口模块来验证系统能否正常运行。有了这个最小系统平台开发人员只要在系统中添加自己需要的功能模块就可以开发出需要的产品,在ARM一
通天下的形势下给国人增加一个选择方向,同时对于嵌入式领域正从零开始研究某款处理器的开发人员也有一定的借鉴之处。
1 最小系统的整体介绍
用HD6417708S型号SH3单片机建立的最小系统的结构框图如图1所示。此最小系统包括MCU(HD6417708S)、电源模块、存储器模块、MCU外围辅助电路,为了可以直观地看到系统能够正常运行增加了串口通信模块用于演示。
2 硬件平台的搭建
2.1 电源模块
“HD6417708S”单片机理想的工作电压是3.3 V,上下可以有0.3 V的波动,存储器与串口芯片都支持3.3 V供电。在此的电源模块是以DCDC开关电源芯片“1CZ21H”为核心的一个单片开关电源电路,DC8V-DC28V输入,3.3 V供电时可以提供1.5 A的电流,电路原理如图2所示。
2.2 串口通信模块
该模块分别用到MD2/RXD(84管脚),MD1/TXD(85管脚),MD0/SCK(86管脚)3个管脚,并且他们都属于功能复用管脚。当3个管脚作为MD0,MD1,MD2功能管脚时为模式选择控制管脚,复位时它们的状态决定了时钟电路的设置,对应关系可参考参考文献。
系统正常运行以后时钟模式控制功能已经完成了,如果系统要用串口功能时就可以用RXD(84管脚)、TXD(84管脚)进行全双工通信。现在问题是硬件怎么设计能同时满足这2种功能。在此提供2种方案:
方案1:串口芯片使用MAX3223芯片,这款芯片有功能使能管脚,如果芯片没有使能时芯片管脚处于高阻状态。提供的方案框图如图片3所示:当系统复位时让MAX3223处于不使能状态,MAX3223的RXD、TXD引脚处于高阻状态,添加辅助电路就可以随心所欲的给SH7708单片机提供模式控制信号了。当系统运行起来时SH7708肯定会通过Area0的片选信号访问Area0区的ROM,所以是否出现低脉冲可以作为系统是否已经运行的标志信号,将信号送给模式控制辅助电路,一旦检测到低脉冲就让模式控制辅助电路输出变为高阻状态,同时使能MAX32 23芯片就可以了。模式控制图3中方案1模块用一个组合逻辑门和一个触发器就可以实现功能。
方案2:采用CPLD将单片机和串口芯片隔开。这样就可以随心所欲地控制了,具体方案如图4:由于在系统中还用到了CPLD的其他资源,所以选择了这种方案。如果系统没有在其他功能中用到CPLD的话建议用方案1,因为方案1成本会低很多。
2.3 存储器模块
SH3单片机内部没有ROM空间,系统必须在外部总线上连接ROM存储器。SH3单片机总线采用地址总线与数据总线分离的设计模式,地址总线最大支持64 MB存储空间。满足这种总线模式的ROM都可以使用(SH3单片机内部没有NAND FLASH控制器,所以不要选择NAND FLASH存储器)。由于一条指令占16 b空间,所以选一片8 MB 16位位宽的FLASH存储器LH28F640BFN。
SH3系列处理器内部嵌有8 KB CACHE,在不使用缓存功能时有4 KB CACHE空间可以当作一般的RAM使用。由于本次只是讨论最小系统的建立,程序比较简单,4 KB空间足以。在后续介绍比较大的运用时会介绍系统连接的SDRAM存储器,在以后其他文章中讨论。
2.4 MCU外围辅助电路
(1)复位电路:HD6417708S单片机需要最短为10 ms的低电平复位信号,如果你的系统中其他芯片也需要Reset信号时请综合考虑一下复位信号的长度与电平。本系统的复位电路采用了一款集复位与看门狗电路于一身的“1075”复位芯片。
(2)时钟电路:HD6417708S单片机的时钟模块有2个管脚:EXTAL(79)和XTAL(80)。如果想用无源晶振的话将晶振连到EXTAL和XTAL之间,两管脚对地各接一个18 pF的电容就可以了。如果想用有缘晶振的话将晶振的时钟输出管脚接EXTAL管脚就行了。
(3)PLL模块外围辅助电路:HD6417708S单片机锁相环电路要求在管脚74,管脚77分别对地接一个470 pF的电容。
(4)几个特殊管脚的处理管脚87为Bus requst输入功能管脚,如果系统正常运行时给这个管脚加一个低电平信号,单片机会释放总线。如果您的系统有多个处理器需要共用总线时通过对这个管脚的合理控制可以实现总线分配,如果系统不用单片机释放总线时就可以给这个管脚加一个10 kΩ的上拉电阻,这个管脚一定不要悬空。
管脚89~管脚93为外部中断输入管脚。管脚89为管脚NMI(非屏蔽中断),为边沿触发中断。
管脚90~管脚93为可屏蔽中断管脚,为电平触发中断。这些管脚都不能悬空,如果没有用到要将这些管脚各加上10 kΩ的上拉电阻就可以了。
管脚94是一个PCMCIA总线控制的管脚如果没用到这种存储器的话就可以加上10 kΩ的上拉阻就行了,不会影响其他部分。
MD3(管脚103)、MD4(管脚104)、MD5(管脚130)是3个模式控制引脚。MD3,MD4控制着Area0的总线宽度,对应关系请参考参考文献。
MD5复位时的状态告诉单片机总线上的存储器中数据(包括code和data)的存储方式,复位时MD5为零时说明存储器中的数据是按大端模式存放的,复位时存储器中的数据应选择小端模式。
(管脚132)是一个等待请求管脚,低电平有效。当处理器的访问速度超过外部设备的反应速度时可以将这个管脚置低让处理器进行等待。如果系统的外部设备足够快不用这个功能的话要加一个弱上拉电阻,绝对不能悬空或接地。自此,带监视串口的HD6417708S单片机最小系统硬件平台就搭建好了,编写相关软件就可以让系统运行起来。
3 软件平台的搭建
SH3系列单片机的开发环境是由日本瑞萨公司专门提供的“High-performance Embedded Workshop”软件,有很多版本,在瑞萨公司的网站上可以下载,我下的是“shv9200_ev.exe”版本。
首先安装HD6417708S单片机的开发工具“High-performance Embedded Workshop”软件,安装完成以后会在程序目录里出现一个“Renes as”安装程序,里面的“High-performance Embedded Workshop”图标就是开发软件的图标。
建立模板工程。双击开发工具图标出现一个工程对话框,选择第一项“Create a new project workspace”,然后点击OK按钮进入“New Project Workspace对话框。在“Workspace Name”对话框里为项目命一个名字,例如“123”,系统会把“ProjectName”与“Directory”
项的名字都默认为“123”,如果想指定工程的保存路径的话就点击“Browse”按钮选择想保存程序的地方,其他选项用默认选项就可以了,点击“确定”按钮进入下一个对话框。在“CPUSerise”选择框里选择“SH-3”选项,在“CPUType”选择框里选择“SH7708”选项,然后点击“Next”按钮进入下一个对话框界面。将“Endian”选项设为“Little”模式,这个选项很重要,前面“MCU外围辅助电路”部分介绍的MD5管脚就是用来设置程序存储大小端模式的,如果MD5管脚设置的大小端与软件设置的不一样整个程序就乱了。因为硬件将MD5管脚设置成了小端模式的状态所以在此将“Endian”选项设为“Little”模式。其他选项用默认值就行了,然后点击“Next”按钮进到下一个对话框界面。在对话框的最下面的“Generate Hardware Setup Function”的下拉菜单中选择“C/C++ source file”选项,然后连续点击“Next”按钮直到出现“Targets”选项界面.将“SH-3Simulator(Little endian)”选项选上,然后连续点击“Next”按钮直到图标变灰,再点击“Finish”按钮就进入到工程的主界面了,模板工程就建立完成了。
模板工程相关文件介绍。由于建立的是一个模板工程,工程建立好以后就带了一些文件包括启动代码、异常处理程序以及为软件开发人员提供的程序接口等等。现将几个关键文件功能按照程序执行顺序介绍如下:
首先在程序目录里点击“handle.src”文件,找到段标志“.sectionRSTHandler.code”,该段的程序代码就是单片机上电复位后首先执行的代码。然后点击“resetprg.c”文件,里面有一个“void PowerON_Reset(void)”函数,单片机执行完“handle.src”文件中的“.section RSTHandler,code”段的程序代码后跳到了该函数运行,如果想知道为什么跳到了这个函数请计算出“.section RSTHandl er,code”程序段中的“JMP”指令要跳转的地址以及“void PowerON_Reset(void)”所分配地址会发现两个地址对应同一个存储单元。在“void PowerON_Reset(void)”函数中调用的“set_vbr((void*)((_UINT)INTHandlerPRG-INT_OFFSET))”函数,“_INITSCT()”和“_INIT_ IOLIB()”都是系统库函数,在编译器手册中它们的功能都有介绍,在此不详细介绍。
点击“hwsetup.c”文件就可以看到“void PowerON_Reset(void)”函数中调用的HardwareSetup()函数的具体内容,本函数是用来初始化单片机总线及各个外围功能模块的。set_cr(SR_Init)函数是用来初始化状态寄存器的一个系统函数,与中断的设置关系较大,对于本系统意义不大,本着简化系统的原则将这个函数注掉。然后就到“main()”函数了,点击“123.c”文件发现“main()”函数是一个空函数,这是系统为程序员提供的接口,在这个函数里添加您的程序代码就行了。至此模板工程里的相关文件就介绍完了。系统上电,单片机运行完模板自带的初始化程序以后就跳到了“main()”函数,程序员只要在此函数中添加需要的功能代码就可以实现所需要的功能了。
串口监视程序的实为了验证系统真的运行起来了,硬件上增加了串口监视模块。
在此来实现下面这个简单功能:将串口波特率初始化为9 600b/s,通过串口接收一个字节的数据并通过串口发送出去。通过这个简单的功能验证系统工作正常。程序流程图如图5所示。编译应用程序,最终生成摩托罗拉格式的机器码,将有用的数据解析出来烧到系统的ROM中系统就可以上电演示了。
系统测试。将本系统与电脑通过串口线连接起来,电脑运行串口软件发送字节“0xaa”给系统板,电脑串口软件的接收区出现“aa”,如图6所示:通过现象可以说明系统正常运行了。自此,HD6417708S单片机最小系统从无到有就算建立成功了。本系统详细阐述了SH3系列单片机开发应用时可能出现问题的解决方法,并用串口实验验证了最小系统的正确性。此最小系统基本将SH3处理器与其他处理器的不同之处都展现出来了,在此基础上开发人员只要运用单片机开发的共性理论就可以很好地使用SH3单片机,大大缩短开发周期,降低开发难度。同时也为ARM-统天下的国内工程师提供了如图6上位机串口监视软件发送和接收的数据更新的选择方向。
4 结语
本最小系统已经在工业产品中的到应用,实践证明,该最小系统运行稳定,能很好地完成产品指标。
评论
查看更多