基于嵌入式系统的实时控制模块设计方案
时间:2023-05-17 22:07:00
通用异步收发器用于单片机和上位计算机的通信UART,外接MAX3224,将UART信号转换为RS-传输232信号,MAX3224在3~5.5 V在低压下工作可以产生RS-232的±12 V只需连接电压Tx、Rx和地线可以实现 异步串行通信。系统中还有一些时钟、复位电路和电源,这里就不赘述了。
2 软件设计与实现
2.1 主程序框架
主程序流程图如图4所示。
主程序是一个相对简单的顺序结构。主要分为两部分:一是初始化系统的各个部分,使其能够在正常状态下工作。第二,正常的工作循环状态,当收到上位机的控制命令时,即相应的操作,无命令等待。对于嵌入式程序,无限循环是必要的。
2.2 串口通信程序
串口通信程序实现与上位机的通信功能。在具体操作中,使用循环队列存储接收到的上位机命令,分别用头指针和尾指针指向队头和队尾,并取出每个命令字节进行相应操作。命令执行后(队列空),清除标志位置,等待新命令。如图5所示。
2.3 SPI通信程序
C51采用SPI主模式与AD7707进行通信。主模式写AD7707比较简单,单片机先写1 Byte给出配置数据AD7707,它会自动将数据放入自己的通信寄存器中,然后AD7707根据配置值确定下一步要写的寄存器和数据大小,然后将单片机随后输入的数据放入指定位置。C8051F在120发送数据之前,先根据SPICN寄存器的TXBMT判断位的值是否可以发送数据,然后向自己发送数据SPIDAT寄存器可以写数据,硬件会自动发送数据。
主模式读AD7707较为困难。当C51已设置AD7707通信寄存器表明下一步是阅读AD7707寄存器值后,C51向SPIDAT写任意值,然后SPI数据线(MOSI)从设备上串行移出数据,同时在时钟线上产生串行时钟(AD7707)收到时钟,将准备好的数据发送到MISO线上交给C51.不采用主设备发送的任意值。C51将发送的串行数据放入移位寄存器中,最后一个接收后移入接收缓冲器,然后读取SPIDAT可读数据。
2.4 其它软件模块
其他软件模块根据各部分硬件的具体要求,通过将所需数据发送到分配的相应地址空间,实现相关功能。
3 结束语
文中提出以C51单片机C8051F120是核心控制芯片嵌入式系统的实时控制模块设计方案,已成功应用于通信测试仪器中,通过中断和查询更好地实现了整机的实时控制功能。