基于C8051F020的通用串口适配器的设计
进入控制界面后,首先根据上位机与单片机的通讯协议,选择串口号、通讯波特率、奇偶校验位、数据位以及停止位。当上位机在界面的接口选项中点击要通信的串口时,就会触发一个传输信号给单片机,单片机根据协议控制电子模拟开关接通相应的串口电路,同时回发一个通路信号给上位机,从而使界面上的串口指示呈绿色状态,表明通信电路已接通,可以发送和接收数据。上位机通信流程如图5所示。
3.2 单片机与PC串口通信编程
在本设计中主要用到单片机的定时器、I/O端口、UART、优先权交叉开关、中断设置、时钟信号、寄存器、D/A和A/D等。定义C8051F020的UART0与计算机连接,UART1与各串口相连。首先优先权交叉开关译码器将交叉开关端口P0~P3的引脚分配给UART0、UART1、INT0和INT1。
设置XBARE=1,使能交叉开关。UART0有最高优先权,P0.0分配给TX0,P0.1分配给RX0。其次是UART1,P0.2被分配给TX1,P0.3分配给RX1。P0.4分配给INT0。由于外部存储器接口选在低端口(EMIFLE=1),所以交叉开关跳过P0.6(RD)和P0.7(WR)。由于外部存储器接口配置为复用方式,所以交叉开关也跳过P0.5(ALE)。下一个未跳过的引脚P1.0分配给INT1。将外部存储器接口配置为复用方式并使用低端口,将P1.2、P1.3和P1.4配置为模拟输入,以便用ADC1测量施加在这些引脚上的电压。
当交叉开关配置寄存器XBR0、XBR1和XBR2中外设的对应使能位被设置为逻辑'1'时,交叉开关将端口引脚分配给外设。将UART0的TX引脚(TX0,P0.0)、UART1的TX引脚(TX1,P0.2)、ALE、RD、WR(P0.[7:3])的输出设置为推挽方式,通过设置P0MDOUT=0xE5实现。通过设置P2MDOUT=0xFF、P3MDOUT=0xFF和P6MDOUT=0xFF将EMIF端口(P2、P3,P6)的输出方式配置为推挽方式。单片机通信主程序流程如图6所示。
4 结束语
在对核心器件C8051F020编程和对硬件板调试时采用Cygnal IDE Cygnal集成开发环境软件。Cygnal集成开发环境采用标准的Windows95/98/NT/2000作为界面,利用PC机的串行口和目标板的JTAG接口实现IDE与目标系统中的单片机通信(每套开发系统都有RS-232至JTAG协议转换所需的串行适配器),与目标系统连接后可进行非插入式、全速在线调试和在系统内编程。
此外,该串口适配器很容易扩展其他的接口,可用I/O口接数字接口,也可以通过单片机的A/D和D/A接模拟信号接口。若外围接口过多,则可以合并为一个或几个接口,只需在电路中加继电器(继电器由单片机的I/O控制)进行输出切换即可。
- 通用异步串口扩展芯片GM8123/25的原理和应用(11-11)
- 高效FIFO串口双机通信在ARM7上的实现(06-20)
- 基于VxWorks的多路高速串口的通信方法设计(08-14)
- 嵌入式系统高效多串口中断源的实现(08-20)
- 基于单片机AT89C51SND1C的MP3方案设计(07-24)
- 基于ARM-Linux的Modbus串口服务器设计(11-08)