网站大量收购闲置独家精品文档,联系QQ:2885784924

(嵌入式Linux开发入门)第6章嵌入式Linux设备驱动程序的设计与实现.ppt

(嵌入式Linux开发入门)第6章嵌入式Linux设备驱动程序的设计与实现.ppt

  1. 1、本文档共201页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图6.20 UART模块传输波特率的产生原理   以上是接收和发射信号的时钟频率产生的原理图,其中Baud rate divisor是一个16 bits的二进制数,其数值由寄存器UART1LinCtrlMid和UART1LinCtrlLow共同决定。Baud16的周期是UARTCLK周期的Baud rate divisor倍,而Baud rate的周期又是Baud16周期的16倍。因此根据需要的Baud rate和UARTCLK就可计算出Baud rate divisor的值,计算公式如下:    DAUDDIV=       -1   例如,假设通过设置EP9315系统控制寄存器PwrCnt的位UARTBAUD使得UART模块的工作频率为14.7456?MHz (直接使用外部晶振),即FUARTCLK=14.7456?MHz。同时需要串口的传输波特率为57600,则我们可以通过上式计算得到DAUDDIV=15。从而设置寄存器UART1LinCtrlMid =0x00,UART1LinCtrlLow=0x0F。 6.11.3 EP9315的UART串口模块及其工作原理 UART模块的工作原理如图6.21所示。 图6.21 UART模块的工作原理   Transmit FIFO:?大小为16 B,是一种先进先出的缓存,每一字节用来存放等待发送的5~8 bits的信息数据。Transmit FIFO也可被禁用,从而仅作为1个8 bit的寄存器使用。   Transmitter logic:在数据传输过程中扮演并-串变换的角色(数据在EP9315内部为并行传输,EP9315和外部通信为串行传输)。从而Transmitter logic输出的串行字符数据的结构依次为:起始位(start bit)、数据位(data bit)、奇偶校验位(parity bit)、停止位(stop bit)。   Reiceive FIFO:由16个11??bits的存储单元构成,在每一个11??bit的存储单元中,8??bit用于存放数据信息,3??bit用于存放状态信息。通过Receive logic 接收到的数据信息以及传输过程中产生的错误比特(error bit)被存放在Receive FIFO中,然后被CPU通过APB interface或DMA interface读出。同样,Receive FIFO可被禁用作为一个一个字节的寄存器使用。   Receive logic:在一个有效的开始脉冲被检测到后,Receive logic将接收到的信息流进行串-并变换。Parity、frame error checking以及break error bits同样被进行串-并变换,并被存储到Receive FIFO中。   对于发送数据情况而言,要发射的数据信息被写入Transmit FIFO,形成一个数据帧,这个要发送的数据帧以在寄存器UART1LinCtrlHigh中定义的格式为准。寄存器UART1Flag中的BUSY信号在Tansmit FIFO中有数据被写入或有数据被发射的情况下都为高,只有Transmit FIFO中为空时,BUSY信号才被撤销。   对于接收数据情况而言,当 Receiver是无效状态时(这时UARTRxD为持续的高电平),若在数据输入端(UARTRxD)已检测到低电平,说明一个数据帧的start bit 已被接收。这时受Baud16信号驱动的Receive counter开始计数,并且在Baud16的第8个周期上(也就是1/2的Baud rate周期)进行数据采样;如果在Baud16 的 第8个周期上UARTRxD仍为低电平,则说明start bit有效,否则start bit无效;如果start bit已被检测到是有效的,那么每16个Baud16周期(一个Baud rate周期)就会采样一次数据信息,根据寄存器UART1LinCtrlHigh中定义的每一帧包含的数据信息的个数(5~8?bits)来决定采样的次数。   若在寄存器UART1LinCtrlHigh中让奇偶校验位使能,则对数据信息采样完后,还会对奇偶校验位进行校验;最后,如果UARTRxD被检测为高电平,且一个有效的stop bit被检测到,说明一个完整的帧发送成功,否则一个Frame error发生。 6.11.4 EP9315的RS232/RS485/RS488接口电路   已经知道,要在UART和RS232/RS485/RS488之间进行通信必须经过信号电平的转换。EP9315开发系统的RS232接口电路如图6.22所示。 图6.22 EP9315开发系统的RS232接口电路   其中,RXD1、TXD1代表EP9315的UART2模块

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档