通过MINI2440硬件CPU管脚图可以看出,RSTXD0和RSRXD0连接到CPU的GPH2和GPH3管脚上的,而GPH2和GPH3是CPU复用管脚,因此我们要对GPH2和 GPH3对应寄存器进行设置,其对应寄存器为GPHCON。
表2-23 GPIO端口H设置寄存器(GPHCON)
寄存器名 | 地址 | 是否读写 | 描述 | 复位默认值 |
GPHCON | 0x56000070 | R/W | GPIO端口H配置寄存器 | 0x0 |
GPHDAT | 0x56000074 | R/W | GPIO端口H数据寄存器 | 未定义 |
GPHUP | 0x56000078 | R/W | GPIO端口H上拉无效寄存器 | 0x000 |
GPHCON | 位 | 描述 | 初始值 |
… | … | … | … |
GPH3 | [7:6] | 设置当前管脚功能: 00 = 输入端口 01 = 输出端口 10 = RXD[0]配置为串口0的接收数据管脚 11 = 保留 | 0 |
GPH2 | [5:4] | 设置当前管脚功能: 00 = 输入端口 01 = 输出端口 10 = RXD[0]配置为串口0的接收数据管脚 11 = 保留 | 0 |
… | … | … | … |
GPHCON[7:6]和GPHCON[5:4]为RSTXD0和RSRXD0管脚设置位,将其功能设置为了UART专用通信管脚,因此应该设置其为0b10,分别用于UART数据的接收和发送。
GPHCON | = 0xa0;
表2-24 GPIO端口H上拉电阻设置寄存器(GPHUP)
GPHUP | 位 | 描述 | 初始值 |
GPH[10:0] | [10:0] | 设置对应管脚GPHn的是否启用上拉功能 0 = 启用上拉功能 1 = 禁用上拉功能 | 0 |
GPHUP上拉电阻设置寄存器:上拉电阻用来稳定电平信号,保障传输数据的正确,GPHUP里设置其内部上拉。
GPHUP = 0x0;
表2-25 UART0串行控制寄存器(ULCON0)
寄存器名 | 地址 | 是否读写 | 描述 | 复位默认值 |
ULCON0 | 0x50000000 | R/W | 串口0串行控制寄存器 | 0x00 |
ULCON0 | 位 | 描述 | 初始值 |
保留 | [7] | 0 | |
红外模式 | [6] | 选择串口0是否使用红外模式: 0 = 正常通信模式 1 = 红外通信模式 | 0 |
校验模式 | [5:3] | 设置串口0在数据接收和发送时采用的校验方式: 0xx = 无校验 100 = 奇校验 101 = 偶校验 110 = 强制校验/检测是否为1 111 = 强制校验/检测是否为0 | 000 |
停止位 | [2] | 设置串口0停止位数: 0 = 每个数据帧一个停止位 1 = 每个数据帧二个停止位 | 0 |
数据位 | [1:0] | 设置串口0数据位数: 00 = 5个数据位 01 = 6个数据位 10 = 7个数据位 11 = 8个数据位 | 00 |
通过设置ULCON0来设置UART0通信方式,ULCON0[6]选择通信方式为一般通信模式或红外通信模式,ULCON0[5:3]设置串口0校验方式,ULCON0[2]设置串口0停止位数,ULCON0[1:0] 设置串口0的数据位数。
我们选择一般通信模式,无校验位,1个停止位,8个数据位的数据通信方式。因此:
ULCON0 = 0x03;
表2-26 UART0串口控制寄存器(UCON0)
寄存器名 | 地址 | 是否读写 | 描述 | 复位默认值 |
UCON0 | 0x50000004 | R/W | 串口0控制寄存器 | 0x00 |
UCON0 | 位 | 描述 | 初始值 |
FCLK分频因子 | [15:12] | 当UART0选择FCLK作为时钟源时,设置其FCLK的分频因子 UART0 工作时钟频率 = FCLK/ FCLK分频因子+ 6 | 0000 |
UART时钟源选择 | [11:10] | 选择UART0的工作时钟PCLK,UEXTCLK,FCLK/n: 00,10 = PCLK 01 = UEXTCLK 11 = FCLK/n 当选择FCLK/n作为UART0工作时钟时还要做其它设置,具体请读者自行查看硬件手册 | 00 |
发送数据中断 产生类型 | [9] | 设置UART0中断请求类型,在非FIFO传输模式下,一旦发送数据缓冲区为空,立即产生中断信号,在FIFO传输模式下达到发送数据触发条件时立即产生中断信号: 0 = 脉冲触发 1 = 电平触发 | 0 |
接收数据中断 产生类型 | [8] | 设置UART0中断请求类型,在非FIFO传输模式下,一旦接收到数据,立即产生中断信号,在FIFO传输模式下达到接收数据触发条件时立即产生中断信号: 0 = 脉冲触发 1 = 电平触发 | 0 |
接收数据超时 | [7] | 设置当接收数据时,如果数据超时,是否产生接收中断: 0 = 不开启超时中断 1 = 开启超时中断 10 = 7个数据位 11 = 8个数据位 | 0 |
接收数据错误中断 | [6] | 设置当接收数据时,如果产生异常,如传输中止,帧错误,校验错误时,是否产生接收状态中断信号: 0 = 不产生错误状态中断 1 = 产生错误状态中断 | 0 |
回送模式 | [5] | 设置该位时UART会进入回送模式,该模式仅用于测试 0 = 正常模式 1 = 回送模式 | 0 |
发送终止信号 | [4] | 设置该位时,UART会发送一个帧长度的终止信号,发送完毕后,该位自动恢复为0 0 = 正常传输 1 = 发送终止信号 | 0 |
发送模式 | [3:2] | 设置采用哪个方式执行数据写入发送缓冲区 00 = 无效 01 = 中断请求或查询模式 10 = DMA0请求 | 00 |
接收模式 | [1:0] | 设置采用哪个方式执行数据写入接收缓冲区 00 = 无效 01 = 中断请求或查询模式 10 = DMA0请求 | 00 |
通常UART串口采用PCLK作为输入工作时钟,采用简单的轮询方式进行数据接收和发送,不开启数据接收超时,数据产生错误时不产生错误状态中断,因此:
UCON0 = 0x05;
表2-27 UART FIFO控制寄存器(UFCON0)
寄存器名 | 地址 | 是否读写 | 描述 | 复位默认值 |
UFCON0 | 0x50000008 | R/W | 串口0 FIFO控制寄存器 | 0x00 |
UFCON0 | 位 | 描述 | 初始值 |
发送数据 触发级别 | [7:6] | 设置FIFO发送模式的触发级别: 00 = FIFO为空触发 01 = 16字节触发 10 = 32字节触发 11 = 48字节触发 | 00 |
接收数据 触发级别 | [5:4] | 设置FIFO接收模式的触发级别: 00 = FIFO为空触发 01 = 16字节触发 10 = 32字节触发 11 = 48字节触发 | 00 |
保留 | [3] | 0 | |
发送FIFO重置 | [2] | 在重置FIFO后自动清除发送缓冲区 0 = 正常模式 1 = 自动清除 | 0 |
接收FIFO重置 | [1] | 在重置FIFO后自动清除接收缓冲区 0 = 正常模式 1 = 自动清除 | 0 |
启用FIFO | [0] | 0 = 不启用FIFO 1 = 启用FIFO | 0 |
上一篇:S3C2440 UART串口驱动3
下一篇:基于双处理器的投影机升降控制设计方案
推荐阅读最新更新时间:2024-03-16 15:23