硬件接口编程及驱动开发实验

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子科技大学嵌入式软件工程中心
实验原理
• UART_RBR\UART_THR(接收缓存\发送保 UART_RBR\UART_THR(接收缓存 接收缓存\ 持寄存器) 持寄存器)
– 串口的功能在于接收或者发送数据, UART_RBR\UART_THR就是串口的接收/发送 口。两者都是低8位有效,高24位保留。若要 发送数据,则向该地址写数据即可。反之若要接 收的话,读取该寄存器的值即可。
电子科技大学嵌入式软件工程中心
从指定端口读取一个字符
电子科技大学嵌入式软件工程中心
向指定端口发送一个字符
电子科技大学嵌入式软件工程中心
驱动程序的应用测试
• int main() • { • //初始化串口各个端口 //初始化串口各个端口 • //调用字符输出函数经串口输出单个字符 //调用字符输出函数经串口输出单个字符 • //调用字符串输出函数经串口输出字符串 //调用字符串输出函数经串口输出字符串 • //调用接收函数从串口接收字符并显示 //调用接收函数从串口接收字符并显示 • …… • }
• 该寄存器的PORT_0~ 该寄存器的PORT_0~ PORT_0 PORT_3可分别用于将 PORT_3可分别用于将 GPIO5~GPIO8配置成 GPIO5~GPIO8配置成 UART0和UART1的发送 UART0和UART1的发送 和接收引脚。 和接收引脚。因此如 果要将这些引脚设置 成所需的功能, 成所需的功能,就需 要编写代码对 GPIO_CFG5寄存器的相 GPIO_CFG5寄存器的相 应位进行正确的设置 。
– 可采用丰富的内存操作指令访问I/O单元 – 无需单独的I/O地址译码电路 – 无需专用的I/O指令 – 方便直接用C语言编写端口操作代码
电子科技大学嵌入式软件工程中心
实验原理
• 设备接口寄存器
– 控制寄存器 控制寄存器:对设备的工作模式、工作时钟频率或数 据传输速率、数据格式、中断使能或禁止等进行控制 设置的寄存器。控制寄存器一般在设备初始化的时候 被进行相应设置 – 状态寄存器 状态寄存器:状态寄存器中包括了设备在工作过程中 的一些状态信息,这些信息可以被驱动软件使用,以 在合适的时机根据设备的状态采取相应的操作,完成 数据的正常传输、错误处理等工作。 – 数据寄存器 数据寄存器:数据寄存器中保存了需要通过设备向嵌 入式系统外部发送的数据信息,或者从外部接收到的 数据信息。
工作方式: 工作方式: • POLLING • 中断
电子科技大学嵌入式软件工程中心
POLLING工作方式 工作方式
• 在轮循工作方式下,设备操作的基本步骤如下: 在轮循工作方式下,设备操作的基本步骤如下:
– 查询设备接口的状态寄存器; – 根据数据接收或发送的要求,检查状态寄存器中相应 的状态标识是否满足数据传输的条件; – 如果状态标识不满足工作条件,回到第1)步继续查询 ; – 如果状态标识满足工作条件,则由处理器从设备接口 的数据寄存器读数据或写数据,完成单次数据的接收 或发送,并将相应的状态标识清除,以准备好下一次 的传输; – 判断是否满足传输结束条件,如果满足则退出,如果 不满足则回到第1)步进行下一次的数据传输。
电子科技大学嵌入式软件工程中心
电子科技大学嵌入式软件工程中心
典型的串口驱动函数
• 串口初始化 • 为指定串口设置波特率 • 为指定串口设置数据位 的长度 • 为指定串口设置数据校 验位 • 为指定串口设置数据停 止位 • 从指定串口读取一个字 符 • 向指定串口发送一个字 符 • 从指定串口读取一个字 符串 • 向指定串口发送一个字 符串
ARM硬件接口编程及驱动开发实验 硬件接口编程及驱动开发实验
实验目的
– 掌握 掌握ARM微处理器系统的接口编程方法 微处理器系统的接口编程方法 – 掌握嵌入式驱动软件开发的基本过程 – 掌握典型的嵌入式串口设备的控制原理
电子科技大学嵌入式软件工程中心
ARM硬件接口编程及驱动开发实验 硬件接口编程及驱动开发实验
电子科技大学嵌入式软件工程中心
实验原理
• UART_LSR(线形状态寄存器) UART_LSR(线形状态寄存器 线形状态寄存器)
– 该寄存器用以表示串口传输数据时的状 态。 – 可以通过它们判断串口是否做好了接受/ 发送数据的准备
电子科技大学嵌入式软件工程中心
GPIO_CFG5寄存器(GPIO端口 配 寄存器( 端口5配 寄存器 端口 置寄存器) 置寄存器)
电子科技大学嵌入式软件工程中心
问题
• 中断方式下工作的串口驱动程序如何编写 ? • 需要的知识点: 需要的知识点:
– 中断控制的硬件基础 :三级中断控制体系: CPU CORE, 中断控制器,设备 – 中断响应过程与两级中断处理程序:初始化、 处理器响应中断的过程、第一级的中断处理程 序、第二级的中断处理程序 – 中断与任务的协同工作
电子科技大学嵌入式软件工程中心
实验原理
• 串口,也就是COM接口,是串行接口的简称 串口,也就是COM接口, COM接口 通常PC机后都有这个接口。 PC机后都有这个接口 ,通常PC机后都有这个接口。由其接口不 同分公接头和母接头,如下图所示: 同分公接头和母接头,如下图所示:
电子科技大学嵌入式软Βιβλιοθήκη Baidu工程中心
电子科技大学嵌入式软件工程中心
实验原理
– 主要控制寄存器 • UART_LCR(线控制寄存器) • UART_RBR\UART_THR(接收缓存\发送保 持寄存器) • UART_DLM和UART_DLL(波特率除数寄存 器) • UART_LSR(线形状态寄存器)
电子科技大学嵌入式软件工程中心
实验原理
电子科技大学嵌入式软件工程中心
实验步骤
• 右击项目中的src 文件夹,新建一个头文 右击项目中的src 文件夹, ——“Uart.h” 再新建一个源文件— “Uart.h”。 件——“Uart.h”。再新建一个源文件— “Uart.c”。完成代码后, —“Uart.c”。完成代码后,右击项目名 称选择“重建BSP及项目” BSP及项目 称选择“重建BSP及项目”,完成该项目 的编译和链接。 的编译和链接。 • 右击项目中的 W90P710_evb_elf_*_debug”,选择“ “W90P710_evb_elf_*_debug ,选择“运 行”,进行调试运行,检查输入输出信息 进行调试运行, 是否正确。 是否正确。
UART_LCR(线控制寄存器) UART_LCR(线控制寄存器) 线控制寄存器
– 主要用来配置奇偶校验、停止位、数据位 等。 – DLAB位bit[7]
• 当DLAB为1时, 0xFFF8_0000和0xFFF8_0004代表 的是寄存器UART0_DLL和UART0_DLM;当DLAB 为0时, 0xFFF8_0000和0xFFF8_0004代表的就是 UART_RBR\UART_THR和UART0_IER。
电子科技大学嵌入式软件工程中心
串口的初始化
• 对于每个串口端口而言,初始化配置参数 对于每个串口端口而言, 有:
– 波特率 – 数据位数(8位/9位) – 是否对发送输出进行极性设置,以及采用哪种 极性(奇校验或偶校验) – 是否是中断的工作模式,以及中断级别是多少
电子科技大学嵌入式软件工程中心
设置波特率
电子科技大学嵌入式软件工程中心
实验原理
• 嵌入式系统设备特性
• 片内设备和板级设备 :按照设备控制器所处的位 置,可分为芯片内的设备和板级设备。所谓芯片 内设备,就是指集成在嵌入式微处理器或微控制 器内部的设备,通常被称为“片内外设”,这是 因为随着硬件技术和应用需求的发展,嵌入式微 处理器或微控制器是集成度很高的片上系统 (SOC)。在芯片内集成的设备与芯片的应用领 域、目标应用系统的档次等有关 串行操作设备和并行操作设备 内存映射设备和I/O映射设备 映射设备、 内存映射设备和 映射设备、特殊指令访问设备
• 实验设备
–硬件:PC机,华邦W90P710开发板 套件。 –软件:Lambda IDE集成开发环境, Windows 2000/NT/XP。
电子科技大学嵌入式软件工程中心
ARM硬件接口编程及驱动开发实验 硬件接口编程及驱动开发实验
• 实验基础
– 仔细阅读W90P710产品说明手册 W90P710CD_DataSheet.pdf中UART模块相 关内容。 – 了解W90P710学习板硬件结构,注意UART 相关控制电路。 – 了解基于轮询模式的串口通讯过程。
电子科技大学嵌入式软件工程中心
实验原理
• UART_DLM和UART_DLL(波特率除数寄存器)
– 这两个寄存器的作用是设置波特率。它们都只 是低8位有效,因此可以组成一个16位的除数 (DIVISOR) – 组成的除数{DLM,DLL}与波特率的关系如下: Baud Rate = Crystal Clock / {16 * [Divisor + 2]}
实验原理
• 串口的主要控制参数,串口的正常工作需要对这 串口的主要控制参数, 些参数做正确的配置
– 波特率:这是一个衡量通信速度的参数.它表示每秒钟 传送的bit的个数 – 数据位:这是衡量通信中实际数据位的参数.当计算机 发送一个信息包,实际的数据可以选择几种,标准的值是 5、7和8位 – 开始/停止位:用于表示单个包的最先一位或者最后一 位.典型的值为1,1.5和2位 – 奇偶校验位:有四种检错方式:偶、奇、高和低.当然没 有校验位也是可以的
电子科技大学嵌入式软件工程中心
UART_IER(中断使能寄存器 中断使能寄存器) 中断使能寄存器
• 该寄存器的各个位用于控制串口可能触发 的各种中断的使能状态, 的各种中断的使能状态,该寄存器的默认 值是未打开所有中断。 值是未打开所有中断。
电子科技大学嵌入式软件工程中心
UART_IIR(中断标识寄存器 中断标识寄存器) 中断标识寄存器
电子科技大学嵌入式软件工程中心
• •
实验原理
• 内存映射设备指与内存统一编址的设备, 内存映射设备指与内存统一编址的设备, 对于它们的访问方式与访问内存一样, 对于它们的访问方式与访问内存一样,从 操作指令上不能区分是访问设备还是内存 需要从具体访问的地址来判断。 ,需要从具体访问的地址来判断。这种方 式的好处是: 式的好处是:
电子科技大学嵌入式软件工程中心
实验步骤
• 启动LambdaEDU3,新建一个“标准应用项 启动LambdaEDU3,新建一个“ LambdaEDU3 项目名称为“Uart”, 目”,项目名称为“Uart”,使用 W90P710标准应用(ARM)”作为其应用程 标准应用(ARM)” “W90P710标准应用(ARM)”作为其应用程 序框架(模板)。 序框架(模板)。 • 双击“src/W90P710_evb_elf_*_debug 下 双击“src/W90P710_evb_elf_*_debug”下 目标板配置” 在编辑界面中展开“ 的“目标板配置”。在编辑界面中展开“ 设备” 删除其中的“W90P710_UART驱 设备”项,删除其中的“W90P710_UART驱 动”。并保存,以确定我们的实验中不使 并保存, LambdaEDU3中自带的UART驱动程序 中自带的UART驱动程序。 用LambdaEDU3中自带的UART驱动程序。
相关文档
最新文档