基于ARM的车辆检测系统控制单元电路设计
//擦除Flash
write_command(0x80);
//写命令80H
address = row_add<<9;
address = 0x00fffe00;
write_address(address);
//写地址
statue = IO0PIN;
//获取状态
while((statuefr_b)==0)
{statue = IO0PIN;}
//忙,等待
for(i=0;i<528;i++)
//写528字节
{write_data(*(buffer+i));}
//写入数据
write_command(0x10);
//写命令10H
statue = IO0PIN;
//获取状态
while((statuefr_b)==0)
{statue = IO0PIN;}
//忙,等待
write_command(0x70);
//写命令70H
statue = read_data();
//获取状态
if(statue0x01)
{IO0SET = errorled;}
//操作失败
}
LPC2114串口通信实现
控制系统通过LPC2114的两个UART实现和LD4以及中心站的数据交换,两个UART具备触发点可调的16B收发FIFO。其中,UART1比UART0增加了调制解调器接口。UART的基本操作方法和传统51内核单片机相似。
首先,设置I/O连接到UART;然后设置串口波特率(如U0DLM、U0DLL);接着设置串口工作模式(如U0LCR、U0FCR);这时就可以通过寄存器U0THR和U0RBR发送/接收数据了,发送/接收模块的状态信息可以通过U0LSR寄存器读取。
系统通过RS-485总线和LD4板卡通信,采用MAX3485作为RS-485总线控制器和LPC2114的UART1通信。MAX3485是3.3V供电的半双工收发芯片,将差分RS-485总线信号转换成ARM核能够接受的串口信号。为了实现和PC机通信,系统采用3.3V工作电压的MAX3232作为RS-232电平转换芯片。
LPC2114设计注意事项
LPC2114在开发的过程中有一些需要特殊注意的问题,总结如下:
(1)当用户程序写入Flash后不能运行时,首先,需要考虑中断向量表是否正确,中断向量表累加和必须为0。其次,需要考虑向量表的定位,向量表是否已经定位在0x00000000地址。然后,需要考虑MEMMAP寄存器的设置是否正确,否则中断无法执行。此外,还需要考虑ISP硬件条件是否满足,LPC2114的P0.14脚在#RESET为低时,该引脚线上的低电平将强制芯片进入ISP状态,硬件设计时必须在该引脚加10KW上拉电阻,否则,该引脚不稳定,对设备启动将会有影响。
(2)LPC2114共有46个GPIO,这些I/O可以任意配置,但是个别引脚开漏输出(P0.2、P0.3),需加上拉电阻。另外,Flash存储器K9F2808状态输出引脚R/#B开漏输出,需加10KW的上拉电阻。
(3)LPC2114芯片加密后,只能通过ISP对芯片全局擦除后才能恢复JTAG调试以及下载等功能。当#RESET为低时,P1.26的低电平使P1.26"P1.31复位后作为调试端口,注意在P1.26引脚和地之间需接一个弱偏置电阻。
系统软件设计思想及注意事项
车辆检测系统ARM软件采用分层设计思想,整个软件由驱动程序和应用软件两部分构成。驱动程序部分封装了Flash操作、RS-485操作、实时时钟(RTC)操作、RS-232操作和I/O等操作。应用软件分成基本函数库和主程序。其中,主程序流程如图4所示。
图4 主程序流程图
评论