积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 接口设计 >> 应用论文
  相关分类: 相关文章 | 应用论文 | 新产品 | 下载 |
S1D13506显示控制器与AT91RM9200处理器的接口设计和应用
 
作者:刘和平, 常 猛   来源:本站原创    点击数:72   更新时间:2008-7-30
您可以添加到网摘 让更多人关注此文章:

    摘 要: 介绍了AT91RM9200处理器和S1D13506显示控制器的接口设计,在此基础上详细阐述了μC/GUI移植到AT91RM9200的过程,并给出一个应用实例。
关键词: S1D13506 AT91RM9200 μC/GUI 移植


1 S1D13506和AT91RM9200介绍
  AT91RM9200是一款基于ARM920T内核的高性价比、低功耗、32位的ARM芯片,时钟频率为180MHz,运算速度可以达到200MIPS。AT91RM9200具有存储器管理单元(MMU)、16KB的SRAM和128KB的ROM以及外部总线接口(EBI),支持SDRAM、静态存储器、Burst Flash、CompactFals、SmartMedia以及NAND Flash,还集成了USB控制器、以太网控制器、RTC、SPI、I2C等丰富的外围设备。AT91RM9200处理器内部没有集成LCD控制器,因而需要配备专用的显示控制器,才能实现LCD显示。
  S1D13506是EPSON大规模显示控制器家族中较新的一款,是以SED1354控制器为基础发展起来的具有更多功能的LCD显示控制器。它可以灵活地对各种不同的显示方式进行设置,功能非常强大,可以和目前市场上流行的多种CPU总线兼容。
2 AT91RM9200与S1D13506的接口设计
2.1 AT91RM9200的EBI总线接口

  AT91RMR9200的EBI总线接口用以确保多个外设与基于ARM器件的内置控制存储器之间实现正确数据传输。静态存储器、SDRAM及Burst Flash控制器均可作为EBI 上的外部存储控制器。EBI拥有8个片选信号(NCS[7:0]),可处理多达8 个外设的数据传输;数据通过8位或16位数据总线进行传输(SMC_CSR中的DBW 位控制相应的数据总线宽度);地址总线高达26 位。在16位数据总线宽度下,EBI与显示控制器相关的总线接口信号定义如表1所示。


2.2 S1D13506的PC卡总线接口
  S1D13506的PC卡总线接口可以很方便地与AT91RM9200相连,其总线接口信号定义如表2所示。


2.3 接口分析及实现
  从上述接口信号的定义分析得出,AT91RM9200 的AB[1:20]、DB[0:15] 、NRST、NCS2、NWR1、NWR0、信号引脚和S1D13506的A[1:20]、D[0:15]、R E S E T、CS 、WE1、W E 0信号引脚可以分别进行连接,而S1D13506的RD/WR和RD则短接以后和AT91RM9200的NRD信号相连。S1D13506与AT91RM9200的总线连接如图1所示。S1D13506的输出可以驱动VGA显示器或者最大为800×600点阵的 LCD显示屏。


3 μC/GUI的移植
  μC/GUI是Micrium公司开发的通用的嵌入式用户图形界面软件。它为任何使用图形LCD的应用程序提供独立于处理器和LCD控制器的有效图形用户接口。可以应用于单一任务环境中,也可以应用于多任务环境中。μC/GUI能够应用于任何LCD控制器和CPU的任何尺寸的物理显示或者模拟显示中。
  本接口电路的底层测试软件均用C语言编程实现。由于源程序太长,在本文中不便列出。该程序可以在www.atmel.com上找到。
  在S1D13506显示控制器硬件驱动程序正常的情况下,μC/GUI移植的主要工作就是修改LCD_Conf.h、GUICONF.h和GUI_X.C三个配置文件。GUICONF.h、GUI_X.C的移植比较简单,下面主要介绍LCD_Conf.h的移植。
  #define LCD_XSIZE (640) /*定义液晶的参数,640x480*/
  #define LCD_YSIZE (480)
  #define LCD_FIXEDPALETTE (565) /*RGB 565格式*/
  #define LCD_SWAP_BYTE_ORDER (1)  //16bit数据总线时需要交换
  #define LCD_CONTROLLER 1356 //定义控制器的型号
  #define S1D13806_BASE1 ( (unsigned char *) 0x30000000 )//该地址由片选NCS2决定
  #define S1D13806_DISP_MEM_BASE1( ( (int)S1D13806_BASE1) + ((int) 0x200000) ) //控制器的显示缓冲区开始地址
  #define LCD_READ_MEM(Off)
  *((U16*) (S1D13806_DISP_MEM_BASE1+(((U32)(Off))<<1)))  //定义读函数
  #define LCD_WRITE_MEM(Off,data)
  *((U16*)(S1D13806_DISP_MEM_BASE1+(((U32)(Off))<<1)))=data   //定义写函数
  #define LCD_READ_REG(Off) 0     //在本次移植中没用,定义为空,避免做大改动
  #define LCD_WRITE_REG(Off,data)    //在本次移植中没用,定义为空,避免做大改动
  #define LCD_INIT_CONTROLLER() AT91RM9200_LCD_Init ()  // 初始化 LCD 控制器,该段程序可以在www.atmel.com上找到
  另外,μC/GUI中还有一些跟时间相关的调用,如GUI_X_Delay()等。这些函数需用到系统时间变量OS_TimeMS,该变量可用μC/OS 操作系统维护更新,或者通过以下方式解决。
  void GUI_X_Delay(int ms) {
  // int tEnd = OS_TimeMS + ms;
  // while ((tEnd - OS_TimeMS) > 0); //该变量可由μC/
  OS 操作系统来维护更新
  extern void Delay(int time); //用户的延时函数
  Delay(150*ms);
  }
  LCD_Conf.h、GUICONF.h和GUI_X.C三个配置文件修改完以后,μC/GUI的移植基本完成。
4 μC/GUI的一个应用实例
  首先通过和AT91RM9200相连的MAX1320芯片把电网三相电压采集进来,然后在液晶上把三相电压波形显示出来。显示效果如图2所示。


4.1 主程序的编写
  在对电网一个周波采样完成以后,调用GUI_MEMDEV_Draw函数在LCD上显示波形。主程序如下:
  int main()
  {
  BSP_init(); //和AT91RM9200相关的硬件初始化
  GUI_Init(); //ucGUI初始化程序
  GUI_MEMDEV_Load();
  Lable();
  While(1)
  {
  ADResult(); //读出AD采样的结果
  …………
  if(AD FLAG==1)GUI_MEMDEV_Draw(&Rect, sinwave, &0, 0, 0); //当一个周波采样完成绘制波形
  }
  }
4.2 回调函数的编写
  回调函数是用户编写的主要部分,它以参数的形式被主函数调用。在本程序中,回调函数的编写流程是:首先对黑色矩形框进行清屏,然后绘制暗灰色网格,最后调用GUI_DrawGraph()绘制曲线。程序如下:
  static void sinwave(void)
  {
  int i;
  GUI_SetBkColor(GUI_BLUE); //把背景设置为蓝色
  GUI_SetColor(GUI_BLACK ); //设置黑色矩形框
  GUI_ClearRect(34, (LCD_YSIZE1 - 20) - YSIZE, (LCD_XSIZE1-2), (LCD_YSIZE1 - 21));
  for (i=0;i<(YSIZE/2);i+=40){ //绘制暗灰色网格
  GUI_DrawHLine((LCD_YSIZE1-20) - (YSIZE / 2) + i, 34,(LCD_XSIZE1 - 2));
  if (i) {
  GUI_DrawHLine((LCD_YSIZE1 - 20) - (YSIZE / 2) - i, 34, (LCD_XSIZE1 - 2));
   }
  }
  for (i = 0; i < (LCD_XSIZE1 - 20); i += 90) {
  GUI_DrawVLine(123 + i, (LCD_YSIZE1 - 20)-YSIZE,(LCD_YSIZE1 - 21));
  }
  GUI_SetColor(GUI_RED); //绘制A相电压
  GUI_DrawGraph(UA, (LCD_XSIZE1 - 40), 34, (LCD_YSIZE1 - 20) - YSIZE);
  GUI_SetColor(GUI_YELLOW); //绘制B相电压
  GUI_DrawGraph(UB, (LCD_XSIZE1 - 20), 34, (LCD_YSIZE1 - 20) - YSIZE);
  GUI_SetColor(GUI_GREEN); //绘制C相电压
  GUI_DrawGraph(UC, (LCD_XSIZE1 - 20), 34, (LCD_YSIZE1 - 20) - YSIZE);
  }
  本文介绍了μC/GUI在AT91RM9200处理器和SID13506显示控制器的接口电路上移植的过程,并给出了一个应用实例。实践证明,μC/GUI具有完善的图形函数接口、占用RAM和ROM的空间小、可移植性好等特点。在后PC机时代,μC/GUI将会有非常广阔的应用前景。
参考文献
1 μC/GUI在MSG19264液晶上的移植.电子技术应用, 2004;30(8)
2 基于ARM7 S3C44B0X嵌入式系统gui设计.仪器仪表用户, 2004;(4)



相关文章
· S3C2410X在无线宽带通信网中的应用[31]
· 基于ARM的检波器特性测量仪设计与实现[29]
· 隔离放大器及其应用[13]
· AD7890型串行数/模转换器与51系列单片机的接口设计[12]
· 基于ARM及蓝牙技术的无线测试系统设计[31]
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM处理器应用开发4步骤

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
各种冲值卡批发销售!独家特价!
特价销售GPS车载导航系统!
数字电视批发销售!你想不到的价格!
品牌相机批发销售!你想不到的价格!
品牌手机批发销售!你想不到的价格!
笔记本电脑批发销售!你想不到的价格!
那一年我做了鸭子2
那一年我做了鸭子1
等你十年(下)
等你十年(上)
 
热门下载 [更多]
 
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
[ ] 实用电源电路集锦
 
论坛新帖 [更多]
 
新店开业,部分开发板&元器件特...
[原创]VB编程RS232串口...
红外摄像机控制故障分析与处理方...
红外防水摄像机在智能视频监控中...
步进电机不用驱动芯片能驱动吗?...
我要选一块双串口,带AD的单片...
[分享]运放和功放的区别是什么...
4×4矩阵式键盘的课程设计...
做过高速信号滤波的高手帮忙...
做视频信号放大器,各位有什么好...

 
赞助商 [更多]
 


ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网