实习日记
班级:软升本姓名:学号:
12-1 王 玉 1
1220980122
2014年2月20日
上午,校内嵌入式软件实训今天开始,首先老师带领我们复习以前做过的实验,第一周先做ARM实验,一共12个实验,将在第一周内完成这些实验。
首先熟悉下ADS1.2操作环境,按照实验指导书的引到,我一步步的完成了ADS1.2的配置工作,并新建了一个LCD实验,实验结果为系统启动后,八盏LED灯就会向右点亮。在flash调试时,需要修改RO BASE为0x00000000,其他不用修改,重新编译下载就可运行。在sdram调试时,需要修改RO BASE为0xa0000000,其他不用修改,重新编译下载就可运行。
通过本次上机实验,我掌握了汇编语言程序设计的基础知识。ADS运行环境的使用,通过本次实验也要求我们对于ARM汇编实验要有认真仔细的态度,一个空格就可能导致程序结果的运行错误。
2014年2月21日
这次试验室上机,了解了直入键盘与矩阵键盘的原理,了解键盘寄存器的功能本次实验结合实验二的八段数码管,通过对键盘的操作,实现对八段数码管控制。当按1 键的时候,LED1 数码管就会亮,同理,按相应的键,相应的数码管就会亮。在 EELiod 中,使用了直入键盘与矩阵键盘结合的方式。在 EELiod 中,系统可以支持八个直入键盘,或者六个直入键盘和一个旋转译码器(两个管脚组成一个旋转译码器),或者四个直入键盘和二个旋转译码器。矩阵键盘接口支持自动扫描与手动扫描的方式进行对矩阵键盘按键的检测。最多可以支持八个输入/输出,总共 64 个矩阵键盘。KP-MKINx 自动或者手动发出信号检测矩阵键盘的的按键情况。KPC(Keypad Interface Control register)键盘接口控制寄存器是一个可读写的寄存器,它可实现对键盘的全局控制操作。包括对直入、矩阵键盘的使能、中断、自动扫描等。
2
2014年2月22日
今天,在实验一的基础上进一步了解 ARM 体系结构和编程方法,了解 8 段码的知识本程序在实验一的基础上增加了对 8 段码显示的支持,在系统开机后,会在 4 个八段管上分别显示 1 到 4 的数字,每隔一定的时间,数字递增一次。每个 LED 上升到 9 时回到 0。8 段管是由 8 个 LED 灯(每个灯我们称为一个段)组合成的形状为数字 8 带小数点的图形,通过控制每个段的开启和关闭来形成数字图形 0 到 9。每个段通过一个缓冲器和数据总线相连,在本系统中如果数据为 0 则对应的该段点亮。打开 ADS,执行 Project->Make ,也可以直接用快捷键 F7 进行编译、连接生成映像文件。编译、连接后就生成映像文件,我们可以把它下载到 FLASH 或者 SDRAM 运行和调试。
2014年2月23日
本次实验主要通过 CAN BUS 程序发送特定信息,利用 CAN232MB 智能协议转换器,把发送的信息转换到串口输出。本程序主要为了让读者能够清晰了解 CAN BUS 是如何初始化,发送信息的过程。本程序得到的结果是 CAN BUS 不断向发送数据“11111111”出去,在发送过程中,同时注意CAN232MB 智能协议转换器的显示灯是不断闪亮的。CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议。通信是通过以下 5 种类型的帧进行的:数据帧、遥控帧、错误帧、过载帧、帧间隔另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier:以下称 ID),扩展格式有 29 个位的 ID。MCP2515 是一款独立 CAN 控制器,可简化需要与 CAN 总线连接的应用。CAN 模块的功能是处理所有 CAN 总线上的报文接收和发送。MCP2515 在 CAN 总线上的数据接收是通过两个接收缓冲器、两个接收屏蔽器、六个接收过滤器的组合来实现的。CAN 总
3
线上的帧只有同时满足至少任意一个接收屏蔽器和一个接收过滤器的条件才可以进入接收缓冲器。MCP2515 可与任何带有 SPI 接口的单片机直接相连,并且支持 SPI 1,1 和 0,0 模式。单片机通过 SPI 接口可以读取接收缓冲器数据。MCP2510 对 CAN 总线的数据发送则没有限制,只要用单片机通过 SPI 接口将待发送的数据写入MCP2515 的发送缓存器,然后再调用 RTS(发送请求)命令即可将数据发送到 CAN 总线上。
2014年2月24日
了解 RTC 应用及相关概念,实际控制使用 Real time clock(RTC),显示系统时间本次例子是一个使用 HZ 时钟来显示系统时间的程序,还利用实验六的串口传输实验的知识,通过串口打印系统的时间。首先设置超级终端的波特率为 38400,数据流控制设为无。打开超级终端,根据选择项进行操作,按 1 时,显示当前的系统时间。按 2 时,会对系统时间重设。Real-timer clock (RTC),RTC 是一个配置时钟的机制,通过从外部的晶振送入时钟信号到 MCPU,利用倍频或分频产生所需的时钟信号。可以通过配置RTC相关的寄存器,让 RTC 提供一个持续不断的频率,用来反映现实世界使用的时、分、秒时间。通常,RTC 还可以设计成产生一个 1HZ 输出(HZ时钟名称的由来)。它的闹钟功能体现在当 RTC 增量到预定时间后便产生中断或唤醒事件。为了能够产生系统时间,RTC 提供了一个 32 位的计数器 RTC Counter Register(RCNR),该计数器在系统复位后为 0,并在外部时钟源的信号上升沿到来时加 1,可在RDCR、RYCR 寄存器写入期望值,然后该计数器便开始递增。另外,通过在另一寄存器 RTC Alarm Register(RTAR)设置数值(也可以说是时间),当 RCNR 增加到 RTAR 时,便可产生中断。具体来说,当 RCNR 与 RTAR 匹配时,还需要以下条件满足时才能产生中断。首先在寄存器 RTC Status Register(RTSR)对中断的允许位必须设为1,RTC 提供了两种可以产生中断的事件:HZ 中断和 RTC Alarm 中断。当 HZ 时钟的上升沿被检测到或RCNR和RTAR 匹配相等时,RTSR 上相应的状态位就会标示 1,该位会被发送到中断控制器,在中断控制器的 Interrupt Controller。
4
2014年2月25日
今天进行了LCD控制器的实验。本次例子是一个使用 LCD 控制器的演示程序,结合了 LCD 控制器和 DMA 控制器的原理,能够将字符集里的字符显示在屏幕上。具体实验步骤如下:配置 GPIO 寄存器,将与 LCD 连接的引脚定义为所需的功能引脚。将帧描述符定义在 SDRAM 里,在 DMAC 被初始化后,供 DMAC 提取。配置 LCD 控制器的各寄存器。建立 LCD 屏幕上的每一象素与 FRAME BUFFER 对应位置的映射关系。将字符位图转换成字符矩阵数据并且写入到 FRAMEBUFFER 里。显示屏的整个显示区域,在系统内会有一段存储空间与之对应,通过改变该存储空间的内容,从而改变显示屏的内容,该存储空间被称为 Frame Buffer,或显存,显示屏上的每一点都必然与 Frame Buffer 里的某一位置对应,所以解决显示屏的显示问题,首先需要解决的是Frame Buffer 的大小以及屏上的每一象素与 Frame Buffer 的映射关系。按照显示屏的性能或显示模式区分,显示屏可以以单色或彩色显示,单色用 1 位来表示(单色并不等于黑与白两种颜色,而只是说只能以两种颜色来表示,通常取允许范围内颜色对比度最大的两种颜色),彩色又分为 2 位色(4 种颜色),4 位色(16 种颜色),8 位色(256 种颜色),16位色(65536 种颜色),24 为色(16777216 种颜色)这些色调代表整个屏幕所有象素的颜色取值范围,究竟应该采取什么显示模式,首先必须根据显示屏的性能,然后再由显示的需要来决定。这些因素会影响 Frame buffer 空间的大小,因为 Frame buffer 空间的计算大小是以屏幕的大小和显示模式来决定的,另外还有另一影响因素,就是显示屏的单/双屏幕模式。单屏幕模式代表屏幕的显示范围是整个屏幕,这种显示模式只需一个 Fame Buffer 来存储整个屏幕的显示内容,并且只需一个通道来将 Fame Buffer 内容传输到显示屏上(Frame Buffer 的内容可能需要被处理后再传输到显示屏)。双屏幕模式则将整个屏幕划分成两部分,上半部和下半部,它有别于将两个独立的显示屏组织成一个显示屏,单看上半部或下半部,它们的显示方式是与单屏幕的方式一致,并且上半部与下半部都是同时扫描,工作方式是独立的,同时这两部分都各自有 Frame Buffer,且他们的地址无需连续(这里指的是下半部的 Frame Buffer 的首地址无需紧跟在上半部 Frame Buffer 的地址末端),并且
5