文旭成 武汉中原电子集团有限公司
跳频滤波器在工作时,需将整个频段的最优频点信息存储于外部FLASH中来调用,因此需要将相应的控制码对应其地址写入外部FLASH,由于产品的需要,需设计一款独立的外部FLASH读写系统,而C8051单片机是完全集成的混合信号系统级芯片 [1],可实现对外部FLASH存储器的读写操作。由于其成本低,操作简单,故该系统采用单片机进行设计。
本系统电气部分主要由电源、单片机及FLASH三部分组成,PC通过JTAG口对单片机烧写程序,通过UART0与单片机进行串口通信,单片机及FLASH供电由电源部分提供。
单片机及FLASH需要2.7V~3.6V供电,该系统采用3.3V供电,由于该读写系统所在的整个系统电源为+24V,故将其转换为3.3V,该部分由电源芯片LM2675完成,经过外围滤波器件滤波后,其可稳定输出3.3V电压。
该系统使用UART0进行串口通信,软件将其配置到P0.0和P0.1。由于单片机输入、输出电平是TTL电平,而PC机配置的是RS-232标准串行接口,二者的电气规范不一致,因此要完成单片机与PC机的数据通讯,必须对单片机输出的TTL电平进行电平转换。常用的TTL与RS-232电平转换芯片为MAX3232, MAX3232是MAXIM公司生产的芯片,使用单一电源电压VCC(该系统使用+3.3V供电),该芯片与单片机的接口电路非常简单,只需要外接4个0.1uF的电容,即可实现TTL与RS-232两种电平的转换。该芯片将单片机发出的TTL电平转化为RS-232电平信号,收/发信号从9芯插座通过RS-232电缆传送到PC机。
C8051F021单片机具有片内JTAG边界扫描和调试电路,通过4脚JTAG接口并使用安装在最终应用系统中的产品器件就可以进行非侵入式、全速的在系统调试。JTAG编程口根据其引脚其定义,直接连接至单片机对应引脚即可。
本实验系统中FLASH芯片的地址输入端与单片机的P2口相连,数据输入/输出端与单片机的P0和P3口相连,控制线OE、WE分别与单片机的P0.6、P0.7相连,其余接口进行相应的拉高及拉低操作。由于外部接口引脚数的限制,高位地址无法独立与单片机管脚相连,根据该FLASH的编程数据的特点,可将A16与A15直接拉低,将A14、A12、A10、A8与A6相连,接入单片机的同一引脚P2.6,将A13、A11、A9与A7相连,接入单片机的同一引脚P2.7。该连接方法能够满足FLASH初始化过程中的读写要求及写保护要求。
由于单片机多应用于实时性较强的控制场合,为了尽量少占用CPU的时间充分发挥CPU的功能,本系统在单片机程序设计中采用中断方式与微机进行通信,当通信条件满足时,就转入中断服务程序向微机发送数据。单片机程序的主要部分为串口初始化和发送及接收程序。串口初始化程序主要规定双方的通信设置,确定具体的数据格式和波特率。发送及接收程序则是完成在PC机发送命令后,发送和接收数据的功能。
本系统利用VB自带的通信控件MSComm来实现数据通信。先在窗体加载程序中实现串口的初始化,包括选择和打开串口,设置串口的波特率和串口工作方式。在通信过程中,上位机通过MSComm控件的自动响应功能来接收数据,通信结束后,必须关闭串口以释放资源。
功能的实现需进行PCB设计,该设计使用的是Cadence 的Allegro 软件,无论是对前端设计开发(原理图设计),还是对PCB板级设计,PCB布线实体的架构[2],均可集成于Cadence中实现。
PCB板装配完成后,将程序通过JTAG口烧写固化到单片机中,连接好串口及FLASH相关引脚线后,由上位机选择相应的数据进行下载。在线校验无误后,通过查看实际滤波器的跳频状态,验证得知写入数据正确,能够正确控制滤波器进行跳频,符合设计要求。
本文阐述了一种基于单片机的外部FLASH读写系统设计方法。从原理图设计、软件设计、PCB版图设计到实物功能验证,该系统实现了基于单片机的外部FLASH的读写功能,设计结果经实际产品验证,满足跳频滤波器中数据读写的功能要求。
[1]童长飞.C8051F系列单片机开发与C语言编程[M].北京.北京航空航天大学出版社.2005;
[2]周润景,刘梦男,苏良昱.Cadence高速电路板设计与仿真:原理图与PCB设计(第4版)[M].北京:电子工业出版社,2011.7.