资源描述
实验一 串口通讯实验
一.实验的主要内容:
了解并掌握UART相关寄存器的功能,熟悉系统硬件的UART的相关的接口,修改处理器的串口通讯程序,监视串行口并将接受到的字符回送。
二.实验的问题以及解决方法:
1在程序编译完成后,烧入到ARM的过程中,出现了驱动问题。
答:在option选项中,选择debugger选项,并且将其中的dirver改为J-Link即可。
2在开始时,设置的波特率为115200,ARM上电后,计算机超级终端出现了上电初始化信息,并且提示我们是选择linux还是选择vivi。但后来我们修改程序后,将波特率改为57600时,重新上电,超级终端不再显示上电初始化信息了。
答:出现这个问题的原因是每当断电再上电后,处理器恢复了默认设置,默认设置中,波特率为115200,这与我们在超级终端上设置的57600不匹配,于是不会出现上电初始化信息,甚至有时还会出乱码。所以,我们修改波特率的时候,不应该断电,即开始上电的时候,使用的波特率为115200,等上电结束,选择vivi后,再修改波特率为57600,然后在不断电的情况下重新实验
三.实验的思考:
3.1 232串行通讯的数据格式是什么?
串行通信包括空闲位,数据位,可选的奇偶校验位,停止位。
3.2 串行通讯最少需要几根线,分别如何连接?
两根线,但是最好加上GND
连接方式:
3.3 ARM的串行口有几个,相应的寄存器是什么?
ARM 自带三个 UART 端口,每个 UART 通道都有 16 字节的 FIFO(先入先出寄存器)用于接受和发送。
MODEM控制寄存器UMCONn
UART线控制寄存器包括ULCON0,ULCON1和ULCON2,主要用来选择每帧数据位数、停止位数,奇偶校验模式及是否使用红外模式
UART控制寄存器包括UCON0, UCON1 and UCON2,主要用来选择时钟,接收和发送中断类型(即电平还是脉冲触发类型),接收超时使能,接收错误状态中断使能,回环模式,发送接收模式等。
UART错误状态寄存器包括UERSTAT0, UERSTAT1 and UERSTAT2,此状态寄存器的相关位表明是否有帧错误或溢出错误发生在 UART模块中有三个接收/发送状态寄存器, 包括UTRSTAT0, UTRSTAT1 和 UTRSTAT2。
在 UART 模块中有3个 UART 发送缓冲寄存器,包括 UTXH0,UTXH1和 UTXH2,UTXHn有 8位发送数据
在 UART 模块中有3个 UART 接收缓冲寄存器,包括 URXH0,URXH1和 URXH2,URXHn有 8位接收数据。
UART包括三个波特率因子寄存器UBRDIV0, UBRDIV1 and UBRDIV2,存储在波特率因子寄存器(UBRDIVn)中的值决定串口发送和接收的时钟数率(波特率)
总的来说,有以下几个寄存器:
线路控制寄存器ULCONn
控制寄存器UCONn
FIFO控制寄存器UFCONn
MODEM控制寄存器UMCONn
状态寄存器UTRSTAT
错误状态寄存器UERSTAT
FIFO状态寄存器UFSTAT
发送寄存器UTXH和接收寄存器URXH
波特率因子寄存器UBRDIV
3.4 用中断方式实现串口驱动。
去除UFCON_FIFO_EN,使得FIFO被屏蔽UMCON_AFC使能
如图如果AFC使能了,硬件会自己控制nRTS而不是用软件控制
控制寄存器 将UCON_TX_INT 和UCON_RX_INT 都变为1,如图,是1的话则接收发送数据时会产生中断,里面提到要非FIFO模式,所以上述提到要将FIFO关掉
展开阅读全文