深度探索嵌入式操作系统:从零开始设计、架构和开发
上QQ阅读APP看书,第一时间看更新

2.2.4 串口

一个计算平台有许多输入输出设备:键盘、屏幕、音频、串口甚至网络。当然各种计算平台可能不同,比如mini2440开发板就没有像PC那样的键盘。

我们选择一个最简单且开发板上又有的设备——串口来介绍。

mini2440开发板上只有三个用于连接串口线的接口。真正串口功能单元在S3C2440A芯片内部,有三个功能相同的串口功能单元。

S3C2440A中每个串口单元都是可以基于中断或基于DMA模式操作的。换句话说,串口可以通过产生中断或DMA请求来进行CPU和串口之间的数据传输。串口使用系统时钟可以支持最高115.2Kbit/s的比特率。如果是外部器件提供的外部时钟,则串口可以工作在更高的速度上。

S3C2440A的串口包括了可编程波特率,红外发送/接收,插入1个或2个停止位,5位、6位、7位或8位的数据宽度以及奇偶校验。

每个串口包含一个波特率发生器、发送器、接收器和一个控制单元。波特率发生器可以由总线时钟或外部输入时钟驱动。发送器和接收器包含了64B先进先出缓冲区和数据移位器。将数据写入先进先出缓冲区中接着在发送前复制到发送移位器中。随后将在发送数据引脚移出数据。与此同时从接收数据引脚移入收到的数据,接着从移位器复制到先进先出缓冲区中。

每个串口发送数据是可编程的。由1个起始位、5~8个数据位、1个可选奇偶校验位以及1~2个停止位组成的帧,是由行控制寄存器指定的。发送器也可以产生单帧发送期间强制串行输出为逻辑0状态的断点状态。

与发送类似,接收数据帧也是可编程的。由1个起始位、5~8个数据位、1个可选奇偶校验位以及1~2个停止位组成,也是由行控制寄存器指定的。接收器能够检测出溢出错误、奇偶校验错误、帧错误和断点状态。

这些由1个起始位、5~8个数据位、1个可选奇偶校验位以及1~2个停止位组成的帧。在串口单元中,是逐位在串口线上发送的,发送的速度与串口单元的时钟速度有关,时钟速度越快,发送数据的速度越快,如图2-5所示。

图2-5 串口设备通信过程

这些数据可能是其他数据,也可能是字符串的ASCII码。通常情况下我们发送的就是字符串,这样我们的开发板上的串口线连接上PC,在PC上就能看到开发板输出的信息了。

到时我们的操作系统内核就用S3C2440A中的第一个串口作为默认的输出端口。这样就能看到操作系统内核输出的信息了,如系统是否运行正常等,在此先初步认识一下,到我们写代码时再来看看怎么使用它。